From: Lang Yu <[email protected]> kfd_int_process_v11.c is common for gfx11/12/13, while GC VM fault client id is IP version specific. gfx13 uses a different GC VM fault client id - SOC_V2_0_IH_CLIENTID_GC_UTCL2.
Signed-off-by: Lang Yu <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c index 24d13a74a181a..224b0e1e38ff5 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c @@ -255,6 +255,16 @@ static void event_interrupt_poison_consumption_v11(struct kfd_node *dev, amdgpu_amdkfd_ras_poison_consumption_handler(dev->adev, block, reset); } +static inline u32 gc_vm_fault_client_id(struct kfd_node *dev) +{ + switch (KFD_GC_VERSION(dev)) { + case IP_VERSION(13, 0, 1): + return SOC_V2_0_IH_CLIENTID_GC_UTCL2; + default: + return SOC21_IH_CLIENTID_GFX; + } +} + static bool event_interrupt_isr_v11(struct kfd_node *dev, const uint32_t *ih_ring_entry, uint32_t *patched_ihre, @@ -299,7 +309,7 @@ static bool event_interrupt_isr_v11(struct kfd_node *dev, source_id == SOC21_INTSRC_SDMA_TRAP || KFD_IRQ_IS_FENCE(client_id, source_id) || (((client_id == SOC21_IH_CLIENTID_VMC) || - ((client_id == SOC21_IH_CLIENTID_GFX) && + ((client_id == gc_vm_fault_client_id(dev)) && (source_id == UTCL2_1_0__SRCID__FAULT))) && !amdgpu_no_queue_eviction_on_vm_fault); } @@ -323,7 +333,7 @@ static void event_interrupt_wq_v11(struct kfd_node *dev, /* VMC, UTCL2 */ if (client_id == SOC21_IH_CLIENTID_VMC || - ((client_id == SOC21_IH_CLIENTID_GFX) && + ((client_id == gc_vm_fault_client_id(dev)) && (source_id == UTCL2_1_0__SRCID__FAULT))) { info.vmid = vmid; -- 2.56.0
