]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/amdgpu: fix vbios fetching for SR-IOV
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 25 Sep 2024 18:17:53 +0000 (14:17 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 Sep 2024 21:04:10 +0000 (17:04 -0400)
SR-IOV fetches the vbios from VRAM in some cases.
Re-enable the VRAM path for dGPUs and rename the function
to make it clear that it is not IGP specific.

Fixes: 042658d17a54 ("drm/amdgpu: clean up vbios fetching code")
Reviewed-by: Yang Wang <kevinyang.wang@amd.com>
Tested-by: Yang Wang <kevinyang.wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_bios.c

index 46bf623919d7c655db95a164c6fab0c5f0fab27d..45affc02548c16bc3a361a654d6f2e73bcc82862 100644 (file)
@@ -87,8 +87,9 @@ static bool check_atom_bios(uint8_t *bios, size_t size)
  * part of the system bios.  On boot, the system bios puts a
  * copy of the igp rom at the start of vram if a discrete card is
  * present.
+ * For SR-IOV, the vbios image is also put in VRAM in the VF.
  */
-static bool igp_read_bios_from_vram(struct amdgpu_device *adev)
+static bool amdgpu_read_bios_from_vram(struct amdgpu_device *adev)
 {
        uint8_t __iomem *bios;
        resource_size_t vram_base;
@@ -414,7 +415,7 @@ static bool amdgpu_get_bios_apu(struct amdgpu_device *adev)
                goto success;
        }
 
-       if (igp_read_bios_from_vram(adev)) {
+       if (amdgpu_read_bios_from_vram(adev)) {
                dev_info(adev->dev, "Fetched VBIOS from VRAM BAR\n");
                goto success;
        }
@@ -448,6 +449,12 @@ static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev)
                goto success;
        }
 
+       /* this is required for SR-IOV */
+       if (amdgpu_read_bios_from_vram(adev)) {
+               dev_info(adev->dev, "Fetched VBIOS from VRAM BAR\n");
+               goto success;
+       }
+
        if (amdgpu_read_platform_bios(adev)) {
                dev_info(adev->dev, "Fetched VBIOS from platform\n");
                goto success;