[PATCH 3/4] drm/amdkfd: add vmid/nodeid input for RAS poison consumption handler
Tao Zhou
tao.zhou1 at amd.com
Wed Jun 11 03:34:52 UTC 2025
Prepare for the support of specific queue reset.
v2: also input node_id to the handler.
Signed-off-by: Tao Zhou <tao.zhou1 at amd.com>
---
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 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 4ceb251312a6..0018d04f4b33 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c
@@ -142,7 +142,8 @@ enum SQ_INTERRUPT_ERROR_TYPE {
>> KFD_DEBUG_CP_BAD_OP_ECODE_SHIFT)
static void event_interrupt_poison_consumption_v9(struct kfd_node *dev,
- uint16_t pasid, uint16_t client_id)
+ uint16_t pasid, uint16_t client_id,
+ uint16_t vmid, uint16_t node_id)
{
enum amdgpu_ras_block block = 0;
uint32_t reset = 0;
@@ -357,7 +358,7 @@ static bool event_interrupt_isr_v9(struct kfd_node *dev,
static void event_interrupt_wq_v9(struct kfd_node *dev,
const uint32_t *ih_ring_entry)
{
- uint16_t source_id, client_id, pasid, vmid;
+ uint16_t source_id, client_id, pasid, vmid, node_id;
uint32_t context_id0, context_id1;
uint32_t sq_intr_err, sq_int_data, encoding;
@@ -367,6 +368,7 @@ static void event_interrupt_wq_v9(struct kfd_node *dev,
vmid = SOC15_VMID_FROM_IH_ENTRY(ih_ring_entry);
context_id0 = SOC15_CONTEXT_ID0_FROM_IH_ENTRY(ih_ring_entry);
context_id1 = SOC15_CONTEXT_ID1_FROM_IH_ENTRY(ih_ring_entry);
+ node_id = SOC15_NODEID_FROM_IH_ENTRY(ih_ring_entry);
if (client_id == SOC15_IH_CLIENTID_GRBM_CP ||
client_id == SOC15_IH_CLIENTID_SE0SH ||
@@ -501,7 +503,8 @@ static void event_interrupt_wq_v9(struct kfd_node *dev,
sq_intr_err);
if (sq_intr_err != SQ_INTERRUPT_ERROR_TYPE_ILLEGAL_INST &&
sq_intr_err != SQ_INTERRUPT_ERROR_TYPE_MEMVIOL) {
- event_interrupt_poison_consumption_v9(dev, pasid, client_id);
+ event_interrupt_poison_consumption_v9(dev,
+ pasid, client_id, vmid, node_id);
return;
}
break;
@@ -527,7 +530,8 @@ static void event_interrupt_wq_v9(struct kfd_node *dev,
if (source_id == SOC15_INTSRC_SDMA_TRAP) {
kfd_signal_event_interrupt(pasid, context_id0 & 0xfffffff, 28);
} else if (source_id == SOC15_INTSRC_SDMA_ECC) {
- event_interrupt_poison_consumption_v9(dev, pasid, client_id);
+ event_interrupt_poison_consumption_v9(dev, pasid,
+ client_id, vmid, node_id);
return;
}
} else if (client_id == SOC15_IH_CLIENTID_VMC ||
@@ -538,7 +542,8 @@ static void event_interrupt_wq_v9(struct kfd_node *dev,
struct kfd_hsa_memory_exception_data exception_data;
if (source_id == SOC15_INTSRC_VMC_UTCL2_POISON) {
- event_interrupt_poison_consumption_v9(dev, pasid, client_id);
+ event_interrupt_poison_consumption_v9(dev,
+ pasid, client_id, vmid, node_id);
return;
}
--
2.34.1
More information about the amd-gfx
mailing list