drm/amdgpu: Hack xgmi topology info when there is no psp fw
authorOak Zeng <Oak.Zeng@amd.com>
Thu, 14 Mar 2019 16:44:24 +0000 (11:44 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 18 Jul 2019 19:18:04 +0000 (14:18 -0500)
This is only needed on emulation platform where psp fw might
not be available, to hack xgmi topology info such as hive id and
node id.

v2: Add offset to hacked hive/node id
v3: Don't use introduce new module parameter.

Signed-off-by: Oak Zeng <Oak.Zeng@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c

index d11eba09eadd2ef6068f14a4e3ccec6a01d21407..b024070ad1cf09e17f33931a5b3fa1fe3cdd3049 100644 (file)
@@ -301,18 +301,23 @@ int amdgpu_xgmi_add_device(struct amdgpu_device *adev)
        if (!adev->gmc.xgmi.supported)
                return 0;
 
-       ret = psp_xgmi_get_node_id(&adev->psp, &adev->gmc.xgmi.node_id);
-       if (ret) {
-               dev_err(adev->dev,
-                       "XGMI: Failed to get node id\n");
-               return ret;
-       }
+       if (amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP)) {
+               ret = psp_xgmi_get_hive_id(&adev->psp, &adev->gmc.xgmi.hive_id);
+               if (ret) {
+                       dev_err(adev->dev,
+                               "XGMI: Failed to get hive id\n");
+                       return ret;
+               }
 
-       ret = psp_xgmi_get_hive_id(&adev->psp, &adev->gmc.xgmi.hive_id);
-       if (ret) {
-               dev_err(adev->dev,
-                       "XGMI: Failed to get hive id\n");
-               return ret;
+               ret = psp_xgmi_get_node_id(&adev->psp, &adev->gmc.xgmi.node_id);
+               if (ret) {
+                       dev_err(adev->dev,
+                               "XGMI: Failed to get node id\n");
+                       return ret;
+               }
+       } else {
+               adev->gmc.xgmi.hive_id = 16;
+               adev->gmc.xgmi.node_id = adev->gmc.xgmi.physical_node_id + 16;
        }
 
        hive = amdgpu_get_xgmi_hive(adev, 1);