Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdkfd: replace source_id with client_id for RAS poison consumption

Client ID is more accruate here and we can deal with more different
cases with client ID.

Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Tao Zhou and committed by
Alex Deucher
9d8a8d78 eed41975

+16 -7
+16 -7
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c
··· 91 91 #define KFD_SQ_INT_DATA__ERR_TYPE__SHIFT 20 92 92 93 93 static void event_interrupt_poison_consumption(struct kfd_dev *dev, 94 - uint16_t pasid, uint16_t source_id) 94 + uint16_t pasid, uint16_t client_id) 95 95 { 96 96 int old_poison, ret = -EINVAL; 97 97 struct kfd_process *p = kfd_lookup_process_by_pasid(pasid); ··· 105 105 if (old_poison) 106 106 return; 107 107 108 - pr_warn("RAS poison consumption handling\n"); 108 + pr_warn("RAS poison consumption handling: client id %d\n", client_id); 109 109 110 - switch (source_id) { 111 - case SOC15_INTSRC_SQ_INTERRUPT_MSG: 110 + switch (client_id) { 111 + case SOC15_IH_CLIENTID_SE0SH: 112 + case SOC15_IH_CLIENTID_SE1SH: 113 + case SOC15_IH_CLIENTID_SE2SH: 114 + case SOC15_IH_CLIENTID_SE3SH: 115 + case SOC15_IH_CLIENTID_UTCL2: 112 116 ret = kfd_dqm_evict_pasid(dev->dqm, pasid); 113 117 break; 114 - case SOC15_INTSRC_SDMA_ECC: 118 + case SOC15_IH_CLIENTID_SDMA0: 119 + case SOC15_IH_CLIENTID_SDMA1: 120 + case SOC15_IH_CLIENTID_SDMA2: 121 + case SOC15_IH_CLIENTID_SDMA3: 122 + case SOC15_IH_CLIENTID_SDMA4: 123 + break; 115 124 default: 116 125 break; 117 126 } ··· 278 269 sq_intr_err); 279 270 if (sq_intr_err != SQ_INTERRUPT_ERROR_TYPE_ILLEGAL_INST && 280 271 sq_intr_err != SQ_INTERRUPT_ERROR_TYPE_MEMVIOL) { 281 - event_interrupt_poison_consumption(dev, pasid, source_id); 272 + event_interrupt_poison_consumption(dev, pasid, client_id); 282 273 return; 283 274 } 284 275 break; ··· 299 290 if (source_id == SOC15_INTSRC_SDMA_TRAP) { 300 291 kfd_signal_event_interrupt(pasid, context_id0 & 0xfffffff, 28); 301 292 } else if (source_id == SOC15_INTSRC_SDMA_ECC) { 302 - event_interrupt_poison_consumption(dev, pasid, source_id); 293 + event_interrupt_poison_consumption(dev, pasid, client_id); 303 294 return; 304 295 } 305 296 } else if (client_id == SOC15_IH_CLIENTID_VMC ||