summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/amd/amdkfd
diff options
context:
space:
mode:
authorTao Zhou <tao.zhou1@amd.com>2024-02-19 15:55:24 +0800
committerAlex Deucher <alexander.deucher@amd.com>2024-03-20 13:37:36 -0400
commit71a8d61ebc38f0f1b96011518fefd0a1e07efa74 (patch)
tree285af2a27579fe8af0773e1bb857fd3bbdb055fd /drivers/gpu/drm/amd/amdkfd
parent3eb899c40a6190f6eee0bea7c340a4cb32112548 (diff)
drm/amdgpu: retire gfx ras query_utcl2_poison_status
Replace it with related interface in gfxhub functions. v2: replace node id with xcc id. get node id for query_utcl2_poison_status 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>
Diffstat (limited to 'drivers/gpu/drm/amd/amdkfd')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c14
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c14
2 files changed, 24 insertions, 4 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c
index 9a06c6fb6605..a8e76287dde0 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c
@@ -367,10 +367,20 @@ static void event_interrupt_wq_v10(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 xcc_id = 0;
struct kfd_hsa_memory_exception_data exception_data;
- if (client_id == SOC15_IH_CLIENTID_UTCL2 &&
- amdgpu_amdkfd_ras_query_utcl2_poison_status(dev->adev)) {
+ if (!vmid_type && dev->adev->gfx.funcs->ih_node_to_logical_xcc) {
+ xcc_id = dev->adev->gfx.funcs->ih_node_to_logical_xcc(dev->adev,
+ node_id);
+ if (xcc_id < 0)
+ xcc_id = 0;
+ }
+
+ if (client_id == SOC15_IH_CLIENTID_UTCL2 && !vmid_type &&
+ amdgpu_amdkfd_ras_query_utcl2_poison_status(dev->adev, xcc_id)) {
event_interrupt_poison_consumption(dev, pasid, client_id);
return;
}
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 91dd5e045b51..ff7392336795 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c
@@ -413,10 +413,20 @@ 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 xcc_id = 0;
struct kfd_hsa_memory_exception_data exception_data;
- if (client_id == SOC15_IH_CLIENTID_UTCL2 &&
- amdgpu_amdkfd_ras_query_utcl2_poison_status(dev->adev)) {
+ if (!vmid_type && dev->adev->gfx.funcs->ih_node_to_logical_xcc) {
+ xcc_id = dev->adev->gfx.funcs->ih_node_to_logical_xcc(dev->adev,
+ node_id);
+ if (xcc_id < 0)
+ xcc_id = 0;
+ }
+
+ if (client_id == SOC15_IH_CLIENTID_UTCL2 && !vmid_type &&
+ amdgpu_amdkfd_ras_query_utcl2_poison_status(dev->adev, xcc_id)) {
event_interrupt_poison_consumption_v9(dev, pasid, client_id);
return;
}