>-----Original Message----- >From: Christian König <ckoenig.leichtzumerken at gmail.com> >Sent: Tuesday, August 21, 2018 5:05 PM >To: Deng, Emily <Emily.Deng at amd.com>; amd-gfx at lists.freedesktop.org >Subject: Re: [PATCH v3] drm/amdgpu/sriov: Only sriov runtime support use kiq > >Am 21.08.2018 um 10:41 schrieb Emily Deng: >> Move the check into the caller instead of returning an error code here >> >> For sriov, don't use kiq in exclusive mode, as don't know how long >> time it will take, some times it will occur exclusive timeout. >> >> Signed-off-by: Emily Deng <Emily.Deng at amd.com> >> --- >> drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 19 +++++++++++-------- >> 1 file changed, 11 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c >> b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c >> index 0bf8439..de1467e 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c >> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c >> @@ -321,9 +321,6 @@ signed long amdgpu_kiq_reg_write_reg_wait(struct >amdgpu_device *adev, >> struct amdgpu_kiq *kiq = &adev->gfx.kiq; >> struct amdgpu_ring *ring = &kiq->ring; >> >> - if (!ring->ready) >> - return -EINVAL; >> - >> spin_lock_irqsave(&kiq->ring_lock, flags); >> >> amdgpu_ring_alloc(ring, 32); >> @@ -389,11 +386,17 @@ static void gmc_v9_0_flush_gpu_tlb(struct >amdgpu_device *adev, >> for (i = 0; i < AMDGPU_MAX_VMHUBS; ++i) { >> struct amdgpu_vmhub *hub = &adev->vmhub[i]; >> u32 tmp = gmc_v9_0_get_invalidate_req(vmid); >> - >> - r = amdgpu_kiq_reg_write_reg_wait(adev, hub- >>vm_inv_eng0_req + eng, >> - hub->vm_inv_eng0_ack + eng, tmp, 1 << vmid); >> - if (!r) >> - continue; >> + struct amdgpu_kiq *kiq = &adev->gfx.kiq; >> + struct amdgpu_ring *ring = &kiq->ring; >> + >> + if (ring->ready && > >Do you really need the local variable here? Just check >adev->gfx.kiq.ring.ready directly. Ok, will modify. >Apart from that the patch is Reviewed-by: Christian König ><christian.koenig at amd.com>. > >Regards, >Christian. > >> + (amdgpu_sriov_runtime(adev) || >> + !amdgpu_sriov_vf(adev))) { >> + r = amdgpu_kiq_reg_write_reg_wait(adev, hub- >>vm_inv_eng0_req + eng, >> + hub->vm_inv_eng0_ack + eng, tmp, 1 << vmid); >> + if (!r) >> + continue; >> + } >> >> spin_lock(&adev->gmc.invalidate_lock); >>