diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1632-drm-amdkfd-Handle-UCTL2-faults-as-VM-faults.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1632-drm-amdkfd-Handle-UCTL2-faults-as-VM-faults.patch | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1632-drm-amdkfd-Handle-UCTL2-faults-as-VM-faults.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1632-drm-amdkfd-Handle-UCTL2-faults-as-VM-faults.patch deleted file mode 100644 index 3c6198c4..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1632-drm-amdkfd-Handle-UCTL2-faults-as-VM-faults.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 4955649dfea31a4b1b17898dd6ee3f6c175b93e0 Mon Sep 17 00:00:00 2001 -From: Felix Kuehling <Felix.Kuehling@amd.com> -Date: Mon, 27 Mar 2017 17:57:51 -0400 -Subject: [PATCH 1632/4131] drm/amdkfd: Handle UCTL2 faults as VM faults - -Also get VM fault info from the IH ring entry for Vega10. All the -information is available in the IH ring entry and AMDGPU does not -store VM fault info in its VM fault handler any more. - -Change-Id: I803d8f2f5d2b89b3b721c13d7b69eb9de4cf5c6c -Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> ---- - drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c | 27 ++++++++++++++----------- - 1 file changed, 15 insertions(+), 12 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c -index a479820..b2c6b52 100644 ---- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c -+++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c -@@ -65,7 +65,8 @@ static bool event_interrupt_isr_v9(struct kfd_dev *dev, - source_id == SOC15_INTSRC_SDMA_TRAP || - source_id == SOC15_INTSRC_SQ_INTERRUPT_MSG || - source_id == SOC15_INTSRC_CP_BAD_OPCODE || -- client_id == SOC15_IH_CLIENTID_VMC)) { -+ client_id == SOC15_IH_CLIENTID_VMC || -+ client_id == SOC15_IH_CLIENTID_UTCL2)) { - - /* - * KFD want to handle this INT, but MEC firmware did -@@ -108,19 +109,21 @@ static void event_interrupt_wq_v9(struct kfd_dev *dev, - kfd_signal_event_interrupt(pasid, 0, 0); /*todo */ - else if (source_id == SOC15_INTSRC_CP_BAD_OPCODE) - kfd_signal_hw_exception_event(pasid); -- else if (client_id == SOC15_IH_CLIENTID_VMC) { -- struct kfd_vm_fault_info info; -+ else if (client_id == SOC15_IH_CLIENTID_VMC || -+ client_id == SOC15_IH_CLIENTID_UTCL2) { -+ struct kfd_vm_fault_info info = {0}; -+ uint16_t ring_id = SOC15_RING_ID_FROM_IH_ENTRY(ih_ring_entry); -+ -+ info.vmid = vmid; -+ info.mc_id = client_id; -+ info.page_addr = ih_ring_entry[4] | -+ (uint64_t)(ih_ring_entry[5] & 0xf) << 32; -+ info.prot_valid = ring_id & 0x08; -+ info.prot_read = ring_id & 0x10; -+ info.prot_write = ring_id & 0x20; - -- memset(&info, 0, sizeof(info)); -- dev->kfd2kgd->get_vm_fault_info(dev->kgd, &info); - kfd_process_vm_fault(dev->dqm, pasid); -- if (!info.page_addr && !info.status) -- return; -- -- if (info.vmid == vmid) -- kfd_signal_vm_fault_event(dev, pasid, &info); -- else -- kfd_signal_vm_fault_event(dev, pasid, NULL); -+ kfd_signal_vm_fault_event(dev, pasid, &info); - } - } - --- -2.7.4 - |