drm/amdkfd: Flush TLB after unmapping for GFX v9.4.3
authorPhilip Yang <Philip.Yang@amd.com>
Thu, 9 Feb 2023 23:23:16 +0000 (18:23 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:55:47 +0000 (09:55 -0400)
kfd_flush_tlb_after_unmap should return true for GFX v9.4.3, to do TLB
heavyweight flush after unmapping from GPU to guarantee that the GPU
will not access pages after they have been unmapped. This also helps
improve the mapping to GPU performance.

Without this, KFD accidently flush TLB after mapping to GPU because the
vm update sequence number is increased by previous unmapping.

Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_priv.h

index fb3cf2c51da80113b2e946b849ee470db7da82e6..6e1c15682c28574ec14f4751b96ab1128e1b4933 100644 (file)
@@ -1405,9 +1405,9 @@ void kfd_flush_tlb(struct kfd_process_device *pdd, enum TLB_FLUSH_TYPE type);
 
 static inline bool kfd_flush_tlb_after_unmap(struct kfd_dev *dev)
 {
-       return KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 2) ||
-              (KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 1) &&
-              dev->adev->sdma.instance[0].fw_version >= 18) ||
+       return KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 3) ||
+              KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 2) ||
+              (KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 1) && dev->sdma_fw_version >= 18) ||
               KFD_GC_VERSION(dev) == IP_VERSION(9, 4, 0);
 }