diff --git a/headers/private/graphics/nvidia/DriverInterface.h b/headers/private/graphics/nvidia/DriverInterface.h index 4cd196e196..0661c3e0b3 100644 --- a/headers/private/graphics/nvidia/DriverInterface.h +++ b/headers/private/graphics/nvidia/DriverInterface.h @@ -101,6 +101,9 @@ typedef struct { uint16 vendor_id; /* PCI vendor ID, from pci_info */ uint16 device_id; /* PCI device ID, from pci_info */ uint8 revision; /* PCI device revsion, from pci_info */ + uint8 bus; /* PCI bus number, from pci_info */ + uint8 device; /* PCI device number on bus, from pci_info */ + uint8 function; /* PCI function number in device, from pci_info */ /* bug workaround for 4.5.0 */ uint32 use_clone_bugfix; /*for 4.5.0, cloning of physical memory does not work*/ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_agp.c b/src/add-ons/accelerants/nvidia/engine/nv_agp.c index f72a7d7550..1e00f059b1 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_agp.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_agp.c @@ -70,7 +70,11 @@ status_t nv_agp_setup(void) LOG(4,("AGP: AGP capable device #%d:\n", (index + 1))); /* see if we are this one */ - if (((((uint32)(nai.agpi.device_id)) << 16) | nai.agpi.vendor_id) == CFGR(DEVID)) + if ((nai.agpi.device_id == si->device_id) && + (nai.agpi.vendor_id == si->vendor_id) && + (nai.agpi.bus == si->bus) && + (nai.agpi.device == si->device) && + (nai.agpi.function == si->function)) { LOG(4,("AGP: (this is the device this accelerant controls)\n")); agp = true; diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c index 473cc91bc8..2e32dcbc51 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c +++ b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c @@ -779,6 +779,9 @@ static status_t open_hook (const char* name, uint32 flags, void** cookie) { si->vendor_id = di->pcii.vendor_id; si->device_id = di->pcii.device_id; si->revision = di->pcii.revision; + si->bus = di->pcii.bus; + si->device = di->pcii.device; + si->function = di->pcii.function; /* map the device */ result = map_device(di);