Commit f3416dc8 authored by YuBiao Wang's avatar YuBiao Wang Committed by Alex Deucher

drm/amdgpu: Stop clearing kiq position during unload

Do not clear kiq position in RLC_CP_SCHEDULER so that CP could perform
IDLE-SAVE after VF fini. CPG also needs to be active in save command.

v2: drop unused variable (Alex)
Signed-off-by: default avatarYuBiao Wang <YuBiao.Wang@amd.com>
Reviewed-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 2ebf61f2
...@@ -4392,7 +4392,6 @@ static int gfx_v11_0_hw_fini(void *handle) ...@@ -4392,7 +4392,6 @@ static int gfx_v11_0_hw_fini(void *handle)
{ {
struct amdgpu_device *adev = (struct amdgpu_device *)handle; struct amdgpu_device *adev = (struct amdgpu_device *)handle;
int r; int r;
uint32_t tmp;
amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0); amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0); amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
...@@ -4411,15 +4410,14 @@ static int gfx_v11_0_hw_fini(void *handle) ...@@ -4411,15 +4410,14 @@ static int gfx_v11_0_hw_fini(void *handle)
amdgpu_mes_kiq_hw_fini(adev); amdgpu_mes_kiq_hw_fini(adev);
} }
if (amdgpu_sriov_vf(adev)) { if (amdgpu_sriov_vf(adev))
gfx_v11_0_cp_gfx_enable(adev, false); /* Remove the steps disabling CPG and clearing KIQ position,
/* Program KIQ position of RLC_CP_SCHEDULERS during destroy */ * so that CP could perform IDLE-SAVE during switch. Those
tmp = RREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS); * steps are necessary to avoid a DMAR error in gfx9 but it is
tmp &= 0xffffff00; * not reproduced on gfx11.
WREG32_SOC15(GC, 0, regRLC_CP_SCHEDULERS, tmp); */
return 0; return 0;
}
gfx_v11_0_cp_enable(adev, false); gfx_v11_0_cp_enable(adev, false);
gfx_v11_0_enable_gui_idle_interrupt(adev, false); gfx_v11_0_enable_gui_idle_interrupt(adev, false);
......
...@@ -1253,7 +1253,9 @@ static int mes_v11_0_kiq_hw_fini(struct amdgpu_device *adev) ...@@ -1253,7 +1253,9 @@ static int mes_v11_0_kiq_hw_fini(struct amdgpu_device *adev)
if (adev->mes.ring.sched.ready) if (adev->mes.ring.sched.ready)
mes_v11_0_kiq_dequeue_sched(adev); mes_v11_0_kiq_dequeue_sched(adev);
mes_v11_0_enable(adev, false); if (!amdgpu_sriov_vf(adev))
mes_v11_0_enable(adev, false);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment