mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 22:52:35 +02:00
drm/amdgpu: mask the xgmi number of hops reported from psp to kfd
[ Upstream commit 4ac5617c4b ]
The psp supplies the link type in the upper 2 bits of the psp xgmi node
information num_hops field. With a new link type, Aldebaran has these
bits set to a non-zero value (1 = xGMI3) so the KFD topology will report
the incorrect IO link weights without proper masking.
The actual number of hops is located in the 3 least significant bits of
this field so mask if off accordingly before passing it to the KFD.
Signed-off-by: Jonathan Kim <jonathan.kim@amd.com>
Reviewed-by: Amber Lin <amber.lin@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
61c1ddd29f
commit
7b3eb98a3e
|
|
@ -465,15 +465,22 @@ int amdgpu_xgmi_update_topology(struct amdgpu_hive_info *hive, struct amdgpu_dev
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE psp_xgmi_node_info.num_hops layout is as follows:
|
||||||
|
* num_hops[7:6] = link type (0 = xGMI2, 1 = xGMI3, 2/3 = reserved)
|
||||||
|
* num_hops[5:3] = reserved
|
||||||
|
* num_hops[2:0] = number of hops
|
||||||
|
*/
|
||||||
int amdgpu_xgmi_get_hops_count(struct amdgpu_device *adev,
|
int amdgpu_xgmi_get_hops_count(struct amdgpu_device *adev,
|
||||||
struct amdgpu_device *peer_adev)
|
struct amdgpu_device *peer_adev)
|
||||||
{
|
{
|
||||||
struct psp_xgmi_topology_info *top = &adev->psp.xgmi_context.top_info;
|
struct psp_xgmi_topology_info *top = &adev->psp.xgmi_context.top_info;
|
||||||
|
uint8_t num_hops_mask = 0x7;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0 ; i < top->num_nodes; ++i)
|
for (i = 0 ; i < top->num_nodes; ++i)
|
||||||
if (top->nodes[i].node_id == peer_adev->gmc.xgmi.node_id)
|
if (top->nodes[i].node_id == peer_adev->gmc.xgmi.node_id)
|
||||||
return top->nodes[i].num_hops;
|
return top->nodes[i].num_hops & num_hops_mask;
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user