drm/amdgpu: Add delay after enable RLC ucode
Driver shouldn't try to access any GFX registers until RLC is idle. During the test, it took 12 seconds for RLC to clear the BUSY bit in RLC_GPM_STAT register which is un-acceptable for driver. As per RLC engineer, it would take RLC Ucode less than 10,000 GFXCLK cycles to finish its critical section. In a lowest 300M enginer clock setting(default from vbios), 50 us delay is enough. This commit fix the hang when RLC introduce the work around for XGMI which requires more cycles to setup more registers than normal Signed-off-by: shaoyunl <shaoyun.liu@amd.com> Acked-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Родитель
1954db153d
Коммит
ad97d9de45
|
@ -2440,12 +2440,13 @@ static void gfx_v9_0_rlc_start(struct amdgpu_device *adev)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
WREG32_FIELD15(GC, 0, RLC_CNTL, RLC_ENABLE_F32, 1);
|
WREG32_FIELD15(GC, 0, RLC_CNTL, RLC_ENABLE_F32, 1);
|
||||||
|
udelay(50);
|
||||||
|
|
||||||
/* carrizo do enable cp interrupt after cp inited */
|
/* carrizo do enable cp interrupt after cp inited */
|
||||||
if (!(adev->flags & AMD_IS_APU))
|
if (!(adev->flags & AMD_IS_APU)) {
|
||||||
gfx_v9_0_enable_gui_idle_interrupt(adev, true);
|
gfx_v9_0_enable_gui_idle_interrupt(adev, true);
|
||||||
|
udelay(50);
|
||||||
udelay(50);
|
}
|
||||||
|
|
||||||
#ifdef AMDGPU_RLC_DEBUG_RETRY
|
#ifdef AMDGPU_RLC_DEBUG_RETRY
|
||||||
/* RLC_GPM_GENERAL_6 : RLC Ucode version */
|
/* RLC_GPM_GENERAL_6 : RLC Ucode version */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче