x86, ia64: Move EFI_FB vga_default_device() initialization to pci_vga_fixup()
authorBruno Prémont <bonbons@linux-vserver.org>
Tue, 24 Jun 2014 22:55:01 +0000 (00:55 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 10 Jul 2014 22:48:48 +0000 (16:48 -0600)
commit20cde694027e7477cc532833e38ab9fcaa83fb64
tree5f8923f15a5acb1107908a9ea9d0bb5528fe7f70
parentdcfa9be83866e28fcb8b7e22b4eeb4ba63bd3174
x86, ia64: Move EFI_FB vga_default_device() initialization to pci_vga_fixup()

Commit b4aa0163056b ("efifb: Implement vga_default_device() (v2)") added
efifb vga_default_device() so EFI systems that do not load shadow VBIOS or
setup VGA get proper value for boot_vga PCI sysfs attribute on the
corresponding PCI device.

Xorg doesn't detect devices when boot_vga=0, e.g., on some EFI systems such
as MacBookAir2,1.  Xorg detects the GPU and finds the DRI device but then
bails out with "no devices detected".

Note: When vga_default_device() is set boot_vga PCI sysfs attribute
reflects its state.  When unset this attribute is 1 whenever
IORESOURCE_ROM_SHADOW flag is set.

With introduction of sysfb/simplefb/simpledrm efifb is getting obsolete
while having native drivers for the GPU also makes selecting sysfb/efifb
optional.

Remove the efifb implementation of vga_default_device() and initialize
vgaarb's vga_default_device() with the PCI GPU that matches boot
screen_info in pci_fixup_video().

[bhelgaas: remove unused "dev" in efifb_setup()]
Fixes: b4aa0163056b ("efifb: Implement vga_default_device() (v2)")
Tested-by: Anibal Francisco Martinez Cortina <linuxkid.zeuz@gmail.com>
Signed-off-by: Bruno Prémont <bonbons@linux-vserver.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Matthew Garrett <matthew.garrett@nebula.com>
CC: stable@vger.kernel.org # v3.5+
arch/ia64/pci/fixup.c
arch/x86/include/asm/vga.h
arch/x86/pci/fixup.c
drivers/video/fbdev/efifb.c