[AMD Official Use Only - AMD Internal Distribution Only] The series is: Reviewed-by: Tao Zhou <tao.zhou1@xxxxxxx> > -----Original Message----- > From: Hawking Zhang <Hawking.Zhang@xxxxxxx> > Sent: Tuesday, August 20, 2024 2:05 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx; Zhou1, Tao <Tao.Zhou1@xxxxxxx>; Yang, > Stanley <Stanley.Yang@xxxxxxx> > Cc: Zhang, Hawking <Hawking.Zhang@xxxxxxx>; Fan, Shikang > <Shikang.Fan@xxxxxxx> > Subject: [PATCH v2 1/3] drm/amdkfd: Check int source id for utcl2 poison event > > Traditional utcl2 fault_status polling does not work in SRIOV environment. The > polling of fault status register from guest side will be dropped by hardware. > > Driver should switch to check utcl2 interrupt source id to identify utcl2 poison > event. It is set to 1 when poisoned data interrupts are signaled. > > v2: drop the unused local variable (Tao) > > Signed-off-by: Hawking Zhang <Hawking.Zhang@xxxxxxx> > --- > .../gpu/drm/amd/amdkfd/kfd_int_process_v9.c | 18 +----------------- > drivers/gpu/drm/amd/amdkfd/soc15_int.h | 1 + > 2 files changed, 2 insertions(+), 17 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 a9c3580be8c9..fecdbbab9894 100644 > --- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c > +++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c > @@ -431,25 +431,9 @@ static void event_interrupt_wq_v9(struct kfd_node > *dev, > 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); > - uint32_t node_id = > SOC15_NODEID_FROM_IH_ENTRY(ih_ring_entry); > - uint32_t vmid_type = > SOC15_VMID_TYPE_FROM_IH_ENTRY(ih_ring_entry); > - int hub_inst = 0; > struct kfd_hsa_memory_exception_data exception_data; > > - /* gfxhub */ > - if (!vmid_type && dev->adev->gfx.funcs- > >ih_node_to_logical_xcc) { > - hub_inst = dev->adev->gfx.funcs- > >ih_node_to_logical_xcc(dev->adev, > - node_id); > - if (hub_inst < 0) > - hub_inst = 0; > - } > - > - /* mmhub */ > - if (vmid_type && client_id == SOC15_IH_CLIENTID_VMC) > - hub_inst = node_id / 4; > - > - if (amdgpu_amdkfd_ras_query_utcl2_poison_status(dev->adev, > - hub_inst, vmid_type)) { > + if (source_id == SOC15_INTSRC_VMC_UTCL2_POISON) { > event_interrupt_poison_consumption_v9(dev, pasid, > client_id); > return; > } > diff --git a/drivers/gpu/drm/amd/amdkfd/soc15_int.h > b/drivers/gpu/drm/amd/amdkfd/soc15_int.h > index 10138676f27f..e5c0205f2618 100644 > --- a/drivers/gpu/drm/amd/amdkfd/soc15_int.h > +++ b/drivers/gpu/drm/amd/amdkfd/soc15_int.h > @@ -29,6 +29,7 @@ > #define SOC15_INTSRC_CP_BAD_OPCODE 183 > #define SOC15_INTSRC_SQ_INTERRUPT_MSG 239 > #define SOC15_INTSRC_VMC_FAULT 0 > +#define SOC15_INTSRC_VMC_UTCL2_POISON 1 > #define SOC15_INTSRC_SDMA_TRAP 224 > #define SOC15_INTSRC_SDMA_ECC 220 > #define SOC21_INTSRC_SDMA_TRAP 49 > -- > 2.17.1