xf86GetPciDomain(...) returns 1 if the PCI domain is 0, so fix the off-by-one; otherwise DRICreatePCIBusID(...) returns a string with the wrong PCI domain which can lead to detection problems. (Only applies to 1.4, master with the pci-rework should do this correctly) Signed-off-by: Tim Yamin --- hw/xfree86/dri/dri.c~ 2007-12-07 02:38:42.000000000 +0000 +++ hw/xfree86/dri/dri.c 2008-02-01 18:59:51.000000000 +0000 @@ -2461,6 +2461,8 @@ tag = pciTag(PciInfo->bus, PciInfo->device, PciInfo->func); domain = xf86GetPciDomain(tag); + if(domain > 0) + domain--; snprintf(busID, 20, "pci:%04x:%02x:%02x.%d", domain, PCI_BUS_NO_DOMAIN(PciInfo->bus), PciInfo->device, PciInfo->func); return busID;