]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdgpu: Calculate IP specific xgmi bandwidth
authorLijo Lazar <lijo.lazar@amd.com>
Thu, 6 Feb 2025 12:10:42 +0000 (17:40 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Mar 2025 03:11:46 +0000 (23:11 -0400)
Use IP version specific xgmi speed/width for bandwidth calculation.

Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Jonathan Kim <jonathan.kim@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c

index 9e9fec5b52ded3b4850b7511fbe90094bb023b07..17ce1677378e2bd57c8038bc08b3abd6742df3c9 100644 (file)
@@ -2757,6 +2757,9 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
        if (!total)
                return -ENODEV;
 
+       if (adev->gmc.xgmi.supported)
+               amdgpu_xgmi_early_init(adev);
+
        ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX);
        if (ip_block->status.valid != false)
                amdgpu_amdkfd_device_probe(adev);
index 7fdf30f1161c1c52486aa2e956d5fae0be0dfde6..6029a799074d587b5cee3d35c552814087b54d63 100644 (file)
@@ -844,7 +844,9 @@ int amdgpu_xgmi_get_bandwidth(struct amdgpu_device *adev, struct amdgpu_device *
 {
        bool peer_mode = bw_mode == AMDGPU_XGMI_BW_MODE_PER_PEER;
        int unit_scale = bw_unit == AMDGPU_XGMI_BW_UNIT_MBYTES ? 1000 : 1;
-       int speed = 25, num_lanes = 16, num_links = !peer_mode ? 1 : -1;
+       int num_lanes = adev->gmc.xgmi.max_width;
+       int speed = adev->gmc.xgmi.max_speed;
+       int num_links = !peer_mode ? 1 : -1;
 
        if (!(min_bw && max_bw))
                return -EINVAL;