Skip to content

Commit 9928509

Browse files
vskvortsalexdeucher
authored andcommitted
drm/amdgpu: Add msg handlers for SRIOV RAS Telemetry
Add message handlers for RAS telemetry. Signed-off-by: Victor Skvortsov <[email protected]> Reviewed-by: Zhigang Luo <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 60c58d7 commit 9928509

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ struct amdgpu_virt_ops {
9595
void (*ras_poison_handler)(struct amdgpu_device *adev,
9696
enum amdgpu_ras_block block);
9797
bool (*rcvd_ras_intr)(struct amdgpu_device *adev);
98+
int (*req_ras_err_count)(struct amdgpu_device *adev);
9899
};
99100

100101
/*

drivers/gpu/drm/amd/amdgpu/mxgpu_nv.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,18 @@ static enum idh_event xgpu_nv_mailbox_peek_msg(struct amdgpu_device *adev)
6161
static int xgpu_nv_mailbox_rcv_msg(struct amdgpu_device *adev,
6262
enum idh_event event)
6363
{
64+
int r = 0;
6465
u32 reg;
6566

6667
reg = RREG32_NO_KIQ(mmMAILBOX_MSGBUF_RCV_DW0);
67-
if (reg != event)
68+
if (reg == IDH_FAIL)
69+
r = -EINVAL;
70+
else if (reg != event)
6871
return -ENOENT;
6972

7073
xgpu_nv_mailbox_send_ack(adev);
7174

72-
return 0;
75+
return r;
7376
}
7477

7578
static uint8_t xgpu_nv_peek_ack(struct amdgpu_device *adev)
@@ -178,6 +181,9 @@ static int xgpu_nv_send_access_requests_with_param(struct amdgpu_device *adev,
178181
if (data1 != 0)
179182
event = IDH_RAS_POISON_READY;
180183
break;
184+
case IDH_REQ_RAS_ERROR_COUNT:
185+
event = IDH_RAS_ERROR_COUNT_READY;
186+
break;
181187
default:
182188
break;
183189
}
@@ -456,6 +462,11 @@ static bool xgpu_nv_rcvd_ras_intr(struct amdgpu_device *adev)
456462
return (msg == IDH_RAS_ERROR_DETECTED || msg == 0xFFFFFFFF);
457463
}
458464

465+
static int xgpu_nv_req_ras_err_count(struct amdgpu_device *adev)
466+
{
467+
return xgpu_nv_send_access_requests(adev, IDH_REQ_RAS_ERROR_COUNT);
468+
}
469+
459470
const struct amdgpu_virt_ops xgpu_nv_virt_ops = {
460471
.req_full_gpu = xgpu_nv_request_full_gpu_access,
461472
.rel_full_gpu = xgpu_nv_release_full_gpu_access,
@@ -466,4 +477,5 @@ const struct amdgpu_virt_ops xgpu_nv_virt_ops = {
466477
.trans_msg = xgpu_nv_mailbox_trans_msg,
467478
.ras_poison_handler = xgpu_nv_ras_poison_handler,
468479
.rcvd_ras_intr = xgpu_nv_rcvd_ras_intr,
480+
.req_ras_err_count = xgpu_nv_req_ras_err_count,
469481
};

0 commit comments

Comments
 (0)