PCI/VGA: Replace vga_is_firmware_default() with a screen info check

vga_is_firmware_default() checks firmware resources to find the owner
framebuffer resources to find the firmware PCI device.  This is an
open coded implementation of screen_info_pci_dev().  Switch to using
screen_info_pci_dev() instead.

Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Suggested-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20250811162606.587759-3-superm1@kernel.org
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
This commit is contained in:
Mario Limonciello (AMD) 2025-08-11 11:26:04 -05:00
parent 6e490dea61
commit 337bf13aa9

View file

@ -556,34 +556,13 @@ EXPORT_SYMBOL(vga_put);
static bool vga_is_firmware_default(struct pci_dev *pdev) static bool vga_is_firmware_default(struct pci_dev *pdev)
{ {
#if defined(CONFIG_X86) #ifdef CONFIG_SCREEN_INFO
u64 base = screen_info.lfb_base; struct screen_info *si = &screen_info;
u64 size = screen_info.lfb_size;
struct resource *r;
u64 limit;
/* Select the device owning the boot framebuffer if there is one */ return pdev == screen_info_pci_dev(si);
#else
if (screen_info.capabilities & VIDEO_CAPABILITY_64BIT_BASE)
base |= (u64)screen_info.ext_lfb_base << 32;
limit = base + size;
/* Does firmware framebuffer belong to us? */
pci_dev_for_each_resource(pdev, r) {
if (resource_type(r) != IORESOURCE_MEM)
continue;
if (!r->start || !r->end)
continue;
if (base < r->start || limit >= r->end)
continue;
return true;
}
#endif
return false; return false;
#endif
} }
static bool vga_arb_integrated_gpu(struct device *dev) static bool vga_arb_integrated_gpu(struct device *dev)