diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3149-drm-amdgpu-print-the-PASID-with-VM-faults-on-GMC-v8.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3149-drm-amdgpu-print-the-PASID-with-VM-faults-on-GMC-v8.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3149-drm-amdgpu-print-the-PASID-with-VM-faults-on-GMC-v8.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3149-drm-amdgpu-print-the-PASID-with-VM-faults-on-GMC-v8.patch new file mode 100644 index 00000000..cb28c44f --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3149-drm-amdgpu-print-the-PASID-with-VM-faults-on-GMC-v8.patch @@ -0,0 +1,61 @@ +From 5e349dce2c627a1680e7c8a9f78c7b109fc90ff3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Tue, 9 Jan 2018 19:50:01 +0100 +Subject: [PATCH 3149/4131] drm/amdgpu: print the PASID with VM faults on GMC + v8 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Print that extra information on GMC v8. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +index f663f88..87d127c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c +@@ -971,21 +971,21 @@ static void gmc_v8_0_gart_fini(struct amdgpu_device *adev) + * + * 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) ++static void gmc_v8_0_vm_decode_fault(struct amdgpu_device *adev, u32 status, ++ u32 addr, u32 mc_client, unsigned pasid) + { +- u32 mc_id; + u32 vmid = REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, VMID); + u32 protections = REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, + PROTECTIONS); + char block[5] = { mc_client >> 24, (mc_client >> 16) & 0xff, + (mc_client >> 8) & 0xff, mc_client & 0xff, 0 }; ++ u32 mc_id; + + mc_id = REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, + MEMORY_CLIENT_ID); + +- dev_err(adev->dev, "VM fault (0x%02x, vmid %d) at page %u, %s from '%s' (0x%08x) (%d)\n", +- protections, vmid, addr, ++ dev_err(adev->dev, "VM fault (0x%02x, vmid %d, pasid %d) at page %u, %s from '%s' (0x%08x) (%d)\n", ++ protections, vmid, pasid, addr, + REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, + MEMORY_CLIENT_RW) ? + "write" : "read", block, mc_client, mc_id); +@@ -1420,7 +1420,8 @@ static int gmc_v8_0_process_interrupt(struct amdgpu_device *adev, + addr); + dev_err(adev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", + status); +- gmc_v8_0_vm_decode_fault(adev, status, addr, mc_client); ++ gmc_v8_0_vm_decode_fault(adev, status, addr, mc_client, ++ entry->pasid); + } + + vmid = REG_GET_FIELD(status, VM_CONTEXT1_PROTECTION_FAULT_STATUS, +-- +2.7.4 + |