agp: Do not limit attachment to primary devices
authorFrançois Tigeot <ftigeot@wolfpond.org>
Sat, 8 Dec 2012 08:55:02 +0000 (09:55 +0100)
committerFrançois Tigeot <ftigeot@wolfpond.org>
Sun, 9 Dec 2012 13:37:47 +0000 (14:37 +0100)
* PCIS_DISPLAY_VGA really corresponds to the first graphic device
  initialized by the BIOS at boot time.

* Recent Intel chips contain both AGP and graphic hardware, identified by
  the same PCI ids

* The agp device thus has no associated PCIS_DISPLAY_VGA flag when the
  Intel graphic device is not set as primary display in BIOS

* Tested with:
  - ATI Radeon X550 (primary graphic card)
  - Intel Xeon E3-1245v2 (agp device)

sys/dev/agp/agp.c
sys/dev/agp/agp_i810.c

index d56b3e2..8852197 100644 (file)
@@ -111,8 +111,7 @@ agp_find_display(void)
                device_get_children(bus, &kids, &numkids);
                for (i = 0; i < numkids; i++) {
                        dev = kids[i];
-                       if (pci_get_class(dev) == PCIC_DISPLAY
-                           && pci_get_subclass(dev) == PCIS_DISPLAY_VGA)
+                       if (pci_get_class(dev) == PCIC_DISPLAY)
                                if (agp_find_caps(dev)) {
                                        kfree(kids, M_TEMP);
                                        return dev;
index 5487e85..0eea31c 100644 (file)
@@ -743,8 +743,7 @@ agp_i810_match(device_t dev)
 {
        int i, devid;
 
-       if (pci_get_class(dev) != PCIC_DISPLAY
-           || pci_get_subclass(dev) != PCIS_DISPLAY_VGA)
+       if (pci_get_class(dev) != PCIC_DISPLAY)
                return (NULL);
 
        devid = pci_get_devid(dev);