diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1602-drm-amdkfd-Fix-a-bug-that-stored-VM-fault-info-may-b.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1602-drm-amdkfd-Fix-a-bug-that-stored-VM-fault-info-may-b.patch | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1602-drm-amdkfd-Fix-a-bug-that-stored-VM-fault-info-may-b.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1602-drm-amdkfd-Fix-a-bug-that-stored-VM-fault-info-may-b.patch deleted file mode 100644 index 72b57c0e..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1602-drm-amdkfd-Fix-a-bug-that-stored-VM-fault-info-may-b.patch +++ /dev/null @@ -1,123 +0,0 @@ -From ae35de33f3f1edaf9264cd1fab006a976c72df82 Mon Sep 17 00:00:00 2001 -From: Yong Zhao <yong.zhao@amd.com> -Date: Fri, 13 Jan 2017 17:31:56 -0500 -Subject: [PATCH 1602/4131] drm/amdkfd: Fix a bug that stored VM fault info may - be wrong - -We should only store the VM fault info when it is from KFD. - -Change-Id: Ie1a84c2455d279a81a039172b8bdb8d565825b48 -Signed-off-by: Yong Zhao <yong.zhao@amd.com> - - Conflicts: - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 15 ++++++++++++++- - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 +++ - drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 5 ++++- - drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 7 +++++-- - 4 files changed, 26 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -index fff1b85..a30b616 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c -@@ -36,6 +36,8 @@ const struct kfd2kgd_calls *kfd2kgd; - const struct kgd2kfd_calls *kgd2kfd; - bool (*kgd2kfd_init_p)(unsigned, const struct kgd2kfd_calls**); - -+unsigned int global_compute_vmid_bitmap = 0xFF00; -+ - int amdgpu_amdkfd_init(void) - { - int ret; -@@ -108,7 +110,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev) - int last_valid_bit; - if (adev->kfd) { - struct kgd2kfd_shared_resources gpu_resources = { -- .compute_vmid_bitmap = 0xFF00, -+ .compute_vmid_bitmap = global_compute_vmid_bitmap, - .num_pipe_per_mec = adev->gfx.mec.num_pipe_per_mec, - .num_queue_per_pipe = adev->gfx.mec.num_queue_per_pipe, - .gpuvm_size = (uint64_t)amdgpu_vm_size << 30 -@@ -629,3 +631,14 @@ bool read_user_wptr(struct mm_struct *mm, uint32_t __user *wptr, - - return wptr_valid; - } -+ -+bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, -+ u32 vmid) -+{ -+ if (adev->kfd) { -+ if ((1 << vmid) & global_compute_vmid_bitmap) -+ return true; -+ } -+ -+ return false; -+} -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -index bbed772..0dff746 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -@@ -144,6 +144,9 @@ int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem, - uint64_t dest_offset, uint64_t size, struct fence **f, - uint64_t *actual_size); - -+bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, -+ u32 vmid); -+ - /* Shared API */ - int map_bo(struct amdgpu_device *rdev, uint64_t va, void *vm, - struct amdgpu_bo *bo, struct amdgpu_bo_va **bo_va); -diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c -index 91f9ea4..9595023 100644 ---- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c -@@ -746,6 +746,8 @@ static void gmc_v7_0_gart_fini(struct amdgpu_device *adev) - * @adev: amdgpu_device pointer - * @status: VM_CONTEXT1_PROTECTION_FAULT_STATUS register value - * @addr: VM_CONTEXT1_PROTECTION_FAULT_ADDR register value -+ * @mc_client: VM_CONTEXT1_PROTECTION_FAULT_MCCLIENT register value -+ * @src_id: interrupt source id - * - * Print human readable fault information (CIK). - */ -@@ -769,7 +771,8 @@ static void gmc_v7_0_vm_decode_fault(struct amdgpu_device *adev, - MEMORY_CLIENT_RW) ? - "write" : "read", block, mc_client, mc_id); - -- if (!atomic_read(&adev->mc.vm_fault_info_updated)) { -+ if (amdgpu_amdkfd_is_kfd_vmid(adev, vmid) -+ && !atomic_read(&adev->mc.vm_fault_info_updated)) { - info->vmid = vmid; - info->mc_id = mc_id; - info->page_addr = addr; -diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c -index 4e5003c..cb3fe87 100644 ---- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c -@@ -966,8 +966,10 @@ static void gmc_v8_0_gart_fini(struct amdgpu_device *adev) - * @adev: amdgpu_device pointer - * @status: VM_CONTEXT1_PROTECTION_FAULT_STATUS register value - * @addr: VM_CONTEXT1_PROTECTION_FAULT_ADDR register value -+ * @mc_client: VM_CONTEXT1_PROTECTION_FAULT_MCCLIENT register value -+ * @src_id: interrupt source id - * -- * Print human readable fault information (CIK). -+ * Print human readable fault information (VI). - */ - static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, - u32 status, u32 addr, u32 mc_client) -@@ -989,7 +991,8 @@ static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, - MEMORY_CLIENT_RW) ? - "write" : "read", block, mc_client, mc_id); - -- if (!atomic_read(&adev->mc.vm_fault_info_updated)) { -+ if (amdgpu_amdkfd_is_kfd_vmid(adev, vmid) -+ && !atomic_read(&adev->mc.vm_fault_info_updated)) { - info->vmid = vmid; - info->mc_id = mc_id; - info->page_addr = addr; --- -2.7.4 - |