diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3181-drm-amdkfd-Use-legacy-mode-to-do-tlb-invalidation.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3181-drm-amdkfd-Use-legacy-mode-to-do-tlb-invalidation.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3181-drm-amdkfd-Use-legacy-mode-to-do-tlb-invalidation.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3181-drm-amdkfd-Use-legacy-mode-to-do-tlb-invalidation.patch new file mode 100644 index 00000000..eb616c47 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3181-drm-amdkfd-Use-legacy-mode-to-do-tlb-invalidation.patch @@ -0,0 +1,56 @@ +From ffcdc0fed91641f126c98038f96a11310b839ce1 Mon Sep 17 00:00:00 2001 +From: Yong Zhao <yong.zhao@amd.com> +Date: Fri, 12 Jan 2018 13:53:29 -0500 +Subject: [PATCH 3181/4131] drm/amdkfd: Use legacy mode to do tlb invalidation + +After clarifying with UTCL2 team, legacy mode suffices our use cases. +In addition, on Raven there is a HW bug for anything but legacy mode +when MMHUB power gating is enabled. Therefore, we should all use legacy +mode. + +Change-Id: Ibc6b80f16b414180e07bc148f18df9fa962b9e0d +Signed-off-by: Yong Zhao <yong.zhao@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +index 8eae0a7..25aa7ce 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c +@@ -920,7 +920,7 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) + { + struct amdgpu_device *adev = (struct amdgpu_device *) kgd; + uint32_t req = (1 << vmid) | +- (1 << VM_INVALIDATE_ENG16_REQ__FLUSH_TYPE__SHIFT) | /* light */ ++ (0 << VM_INVALIDATE_ENG16_REQ__FLUSH_TYPE__SHIFT) | /* legacy */ + VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PTES_MASK | + VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE0_MASK | + VM_INVALIDATE_ENG16_REQ__INVALIDATE_L2_PDE1_MASK | +@@ -929,7 +929,13 @@ static void write_vmid_invalidate_request(struct kgd_dev *kgd, uint8_t vmid) + + spin_lock(&adev->tlb_invalidation_lock); + +- /* Use light weight invalidation. ++ /* Use legacy mode tlb invalidation. ++ * ++ * Currently on Raven the code below is broken for anything but ++ * legacy mode due to a MMHUB power gating problem. A workaround ++ * is for MMHUB to wait until the condition PER_VMID_INVALIDATE_REQ ++ * == PER_VMID_INVALIDATE_ACK instead of simply waiting for the ack ++ * bit. + * + * TODO 1: agree on the right set of invalidation registers for + * KFD use. Use the last one for now. Invalidate both GC and +@@ -980,7 +986,7 @@ static int invalidate_tlbs_with_kiq(struct amdgpu_device *adev, uint16_t pasid) + PACKET3_INVALIDATE_TLBS_DST_SEL(1) | + PACKET3_INVALIDATE_TLBS_ALL_HUB(1) | + PACKET3_INVALIDATE_TLBS_PASID(pasid) | +- PACKET3_INVALIDATE_TLBS_FLUSH_TYPE(2)); ++ PACKET3_INVALIDATE_TLBS_FLUSH_TYPE(0)); /* legacy */ + amdgpu_fence_emit_polling(ring, &seq); + amdgpu_ring_commit(ring); + spin_unlock(&adev->gfx.kiq.ring_lock); +-- +2.7.4 + |