Actually it should work because in devices\device.c is the set_vga_bridge_bits() function. This function scans all the devices for PCI_BASE_CLASS_DISPLAY and PCI_CLASS_DISPLAY_OTHER. So I guess 00.02.00 or 00.03.00 should be assigned with the PCI_BRIDGE_CTL_VGA as it will be the first found.
Setting up VGA for PCI: 07:00.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 03:04.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 02:00.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI: 00:03.0 Setting PCI_BRIDGE_CTL_VGA for bridge PCI_DOMAIN: 0000 Setting PCI_BRIDGE_CTL_VGA for bridge Root Device Allocating resources...
00:03.0 is on the list, so it will be the one assigned.
Now in the PCIe init function, the code pointed by Myles would be correct. Actually the device with PCI_BRIDGE_CTL_VGA set gets BCTRL.VGAEN flag set.
I think it should be ok, right?
I just looked in pci_device.c, and the code there sets the bits in pci_enable_resources() instead of init(). I'm not sure why that is, but you might want to follow that lead for consistency.
Thanks, Myles