Commit a8387ddc authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu: fix vbios fetching for SR-IOV

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: 042658d1 ("drm/amdgpu: clean up vbios fetching code")
Reviewed-by: default avatarYang Wang <kevinyang.wang@amd.com>
Tested-by: default avatarYang Wang <kevinyang.wang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3cb576bc
...@@ -87,8 +87,9 @@ static bool check_atom_bios(uint8_t *bios, size_t size) ...@@ -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 * 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 * copy of the igp rom at the start of vram if a discrete card is
* present. * 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; uint8_t __iomem *bios;
resource_size_t vram_base; resource_size_t vram_base;
...@@ -414,7 +415,7 @@ static bool amdgpu_get_bios_apu(struct amdgpu_device *adev) ...@@ -414,7 +415,7 @@ static bool amdgpu_get_bios_apu(struct amdgpu_device *adev)
goto success; 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"); dev_info(adev->dev, "Fetched VBIOS from VRAM BAR\n");
goto success; goto success;
} }
...@@ -448,6 +449,12 @@ static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev) ...@@ -448,6 +449,12 @@ static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev)
goto success; 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)) { if (amdgpu_read_platform_bios(adev)) {
dev_info(adev->dev, "Fetched VBIOS from platform\n"); dev_info(adev->dev, "Fetched VBIOS from platform\n");
goto success; goto success;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment