drm/amdgpu: Prefer shadow rom when available
commit 27145f78f56a3178c4f9ffe51c4406d8dd0ca90c upstream.
Fetch VBIOS from shadow ROM when available before trying other methods
like EFI method.
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Fixes: 9c081c11c6 ("drm/amdgpu: Reorder to read EFI exported ROM first")
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4066
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
68b591d64d
commit
531d463364
@@ -437,6 +437,13 @@ success:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool amdgpu_prefer_rom_resource(struct amdgpu_device *adev)
|
||||||
|
{
|
||||||
|
struct resource *res = &adev->pdev->resource[PCI_ROM_RESOURCE];
|
||||||
|
|
||||||
|
return (res->flags & IORESOURCE_ROM_SHADOW);
|
||||||
|
}
|
||||||
|
|
||||||
static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev)
|
static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev)
|
||||||
{
|
{
|
||||||
if (amdgpu_atrm_get_bios(adev)) {
|
if (amdgpu_atrm_get_bios(adev)) {
|
||||||
@@ -455,14 +462,27 @@ static bool amdgpu_get_bios_dgpu(struct amdgpu_device *adev)
|
|||||||
goto success;
|
goto success;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (amdgpu_read_platform_bios(adev)) {
|
if (amdgpu_prefer_rom_resource(adev)) {
|
||||||
dev_info(adev->dev, "Fetched VBIOS from platform\n");
|
if (amdgpu_read_bios(adev)) {
|
||||||
goto success;
|
dev_info(adev->dev, "Fetched VBIOS from ROM BAR\n");
|
||||||
}
|
goto success;
|
||||||
|
}
|
||||||
|
|
||||||
if (amdgpu_read_bios(adev)) {
|
if (amdgpu_read_platform_bios(adev)) {
|
||||||
dev_info(adev->dev, "Fetched VBIOS from ROM BAR\n");
|
dev_info(adev->dev, "Fetched VBIOS from platform\n");
|
||||||
goto success;
|
goto success;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (amdgpu_read_platform_bios(adev)) {
|
||||||
|
dev_info(adev->dev, "Fetched VBIOS from platform\n");
|
||||||
|
goto success;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (amdgpu_read_bios(adev)) {
|
||||||
|
dev_info(adev->dev, "Fetched VBIOS from ROM BAR\n");
|
||||||
|
goto success;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (amdgpu_read_bios_from_rom(adev)) {
|
if (amdgpu_read_bios_from_rom(adev)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user