On Thu, 2017-07-13 at 06:29 -0500, Bjorn Helgaas wrote: > > Indeed our host controller depends on ARM64 so maybe it would make > > sense to move the quirk arch/arm64/kernel/pci.c; however regardless > > why is it strictly required for a VGA device to be legacy one in order > > to make it the default boot device? > > i.e. couldn't we have: > > > > diff --git a/drivers/gpu/vga/vgaarb.c b/drivers/gpu/vga/vgaarb.c > > index 0f5b2dd..a6b606c 100644 > > --- a/drivers/gpu/vga/vgaarb.c > > +++ b/drivers/gpu/vga/vgaarb.c > > @@ -667,8 +667,7 @@ static bool vga_arbiter_add_pci_device(struct pci_dev *pdev) > > /* Deal with VGA default device. Use first enabled one > > * by default if arch doesn't have it's own hook > > */ > > - if (vga_default == NULL && > > - ((vgadev->owns & VGA_RSRC_LEGACY_MASK) == VGA_RSRC_LEGACY_MASK)) { > > + if (vga_default == NULL) { > > vgaarb_info(&pdev->dev, "setting as boot VGA device\n"); > > vga_set_default_device(pdev); > > } > > I don't know enough about the VGA arbiter to answer this. This test was > part of the initial implementation: deb2d2ecd43d ("PCI/GPU: implement VGA > arbitration on Linux") by Ben. The above simply uses the first device that has memory and IO enabled as the default device (you don't need to have a default device). This is essentially picking up whatever device had been initialized by the BIOS/firmware as default. This is needed for example on x86 where the BIOS tends to only initialize one device. I'm not sure what problem you are trying to solve here ? Cheers, Ben.