vga_default_device really is supposed to cover all corners, at least
for x86. Additionally checking for rom shadowing should be redundant,
because the bios/fw only does that for the boot vga device.

If this turns out to be wrong, then most likely that's a special case
which should be added to the vgaarb code, not replicated all over.

Patch motived by changes to the aperture helpers, which also have this
open code in a bunch of places, and which are all removed in a
clean-up series. This function here is just for selecting the default
fbdev device for fbcon, but I figured for consistency it might be good
to throw this patch in on top.

Note that the shadow rom check predates vgaarb, which was only wired
up in 88674088d10c ("x86: Use vga_default_device() when determining
whether an fb is primary"). That patch doesn't explain why we still
fall back to the shadow rom check.

Signed-off-by: Daniel Vetter <daniel.vet...@intel.com>
Cc: Daniel Vetter <daniel.vet...@ffwll.ch>
Cc: Helge Deller <del...@gmx.de>
Cc: Daniel Vetter <dan...@ffwll.ch>
Cc: Javier Martinez Canillas <javi...@redhat.com>
Cc: Thomas Zimmermann <tzimmerm...@suse.de>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: Borislav Petkov <b...@alien8.de>
Cc: Dave Hansen <dave.han...@linux.intel.com>
Cc: x...@kernel.org
Cc: "H. Peter Anvin" <h...@zytor.com>
---
 arch/x86/video/fbdev.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/arch/x86/video/fbdev.c b/arch/x86/video/fbdev.c
index 9fd24846d094..5ec4eafbb981 100644
--- a/arch/x86/video/fbdev.c
+++ b/arch/x86/video/fbdev.c
@@ -14,26 +14,15 @@
 int fb_is_primary_device(struct fb_info *info)
 {
        struct device *device = info->device;
-       struct pci_dev *default_device = vga_default_device();
        struct pci_dev *pci_dev;
-       struct resource *res;
 
        if (!device || !dev_is_pci(device))
                return 0;
 
        pci_dev = to_pci_dev(device);
 
-       if (default_device) {
-               if (pci_dev == default_device)
-                       return 1;
-               return 0;
-       }
-
-       res = pci_dev->resource + PCI_ROM_RESOURCE;
-
-       if (res->flags & IORESOURCE_ROM_SHADOW)
+       if (pci_dev == vga_default_device())
                return 1;
-
        return 0;
 }
 EXPORT_SYMBOL(fb_is_primary_device);
-- 
2.40.0

Reply via email to