Skip to content

Commit

Permalink
drm/amdgpu: Fix xgmi v6.4.1 link status reporting
Browse files Browse the repository at this point in the history
Use the right register offsets for getting link status.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Asad Kamal <asad.kamal@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Lijo Lazar authored and Alex Deucher committed Apr 7, 2025
1 parent d53a64e commit 6dee64e
Showing 1 changed file with 18 additions and 6 deletions.
24 changes: 18 additions & 6 deletions drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -296,15 +296,27 @@ static const struct amdgpu_pcs_ras_field xgmi3x16_pcs_ras_fields[] = {

static u32 xgmi_v6_4_get_link_status(struct amdgpu_device *adev, int global_link_num)
{
const u32 smnpcs_xgmi3x16_pcs_state_hist1 = 0x11a00070;
const int xgmi_inst = 2;
u32 link_inst;
const u32 smn_xgmi_6_4_pcs_state_hist1[2] = { 0x11a00070, 0x11b00070 };
const u32 smn_xgmi_6_4_1_pcs_state_hist1[2] = { 0x11b00070,
0x12100070 };
u32 i, n;
u64 addr;

link_inst = global_link_num % xgmi_inst;
switch (amdgpu_ip_version(adev, XGMI_HWIP, 0)) {
case IP_VERSION(6, 4, 0):
n = ARRAY_SIZE(smn_xgmi_6_4_pcs_state_hist1);
addr = smn_xgmi_6_4_pcs_state_hist1[global_link_num % n];
break;
case IP_VERSION(6, 4, 1):
n = ARRAY_SIZE(smn_xgmi_6_4_1_pcs_state_hist1);
addr = smn_xgmi_6_4_1_pcs_state_hist1[global_link_num % n];
break;
default:
return U32_MAX;
}

addr = (smnpcs_xgmi3x16_pcs_state_hist1 | (link_inst << 20)) +
adev->asic_funcs->encode_ext_smn_addressing(global_link_num / xgmi_inst);
i = global_link_num / n;
addr += adev->asic_funcs->encode_ext_smn_addressing(i);

return RREG32_PCIE_EXT(addr);
}
Expand Down

0 comments on commit 6dee64e

Please sign in to comment.