drm/amdgpu: preserve the num_links in case of reflection
authorShiwu Zhang <shiwu.zhang@amd.com>
Mon, 13 Feb 2023 07:45:42 +0000 (15:45 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 9 Jun 2023 13:55:54 +0000 (09:55 -0400)
For topology reflection, each socket to every other socket has the
exactly same topology info as the other way around. So it is safe
to keep the reflected num_links value otherwise it will be overriden
by the link info output of GET_PEER_LINKS command.

Signed-off-by: Shiwu Zhang <shiwu.zhang@amd.com>
Reviewed-by: Le Ma <le.ma@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 4395c53..ea47012 100644 (file)
@@ -1402,7 +1402,8 @@ int psp_xgmi_get_topology_info(struct psp_context *psp,
                        topology->nodes[i].num_links = get_extended_data ?
                                        topology->nodes[i].num_links +
                                                        link_info_output->nodes[i].num_links :
-                                       link_info_output->nodes[i].num_links;
+                                       ((requires_reflection && topology->nodes[i].num_links) ? topology->nodes[i].num_links :
+                                        link_info_output->nodes[i].num_links);
 
                        /* reflect the topology information for bi-directionality */
                        if (requires_reflection && topology->nodes[i].num_hops)