--- xf86pciBus.c.fixes 2004-03-18 21:47:15.000000000 +0100 +++ programs/Xserver/hw/xfree86/common/xf86pciBus.c 2004-06-18 16:13:10.950489406 +0200 @@ -1812,7 +1812,6 @@ primary = pcrp->busnum; secondary = domain | pcrp->pci_secondary_bus_number; subordinate = domain | pcrp->pci_subordinate_bus_number; - /* Is this the correct bridge? If not, ignore it */ pBusInfo = pcrp->businfo; if (pBusInfo && (pcrp != pBusInfo->bridge)) { @@ -1838,7 +1837,6 @@ primary, secondary); break; } - *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec)); pnPciBus = &PciBus->next; @@ -2123,42 +2121,38 @@ case PCI_SUBCLASS_BRIDGE_HOST: /* Is this the correct bridge? If not, ignore bus info */ pBusInfo = pcrp->businfo; - if (pBusInfo == HOST_NO_BUS) + + if (!pBusInfo || pBusInfo == HOST_NO_BUS) break; secondary = 0; - if (pBusInfo) { - /* Find "secondary" bus segment */ - while (pBusInfo != pciBusInfo[secondary]) + /* Find "secondary" bus segment */ + while (pBusInfo != pciBusInfo[secondary]) secondary++; - if (pcrp != pBusInfo->bridge) { - xf86MsgVerb(X_WARNING, 3, "Host bridge mismatch for" - " bus %x: %x:%x:%x and %x:%x:%x\n", - pBusInfo->primary_bus, - pcrp->busnum, pcrp->devnum, pcrp->funcnum, - pBusInfo->bridge->busnum, - pBusInfo->bridge->devnum, - pBusInfo->bridge->funcnum); - pBusInfo = NULL; - } + if (pcrp != pBusInfo->bridge) { + xf86MsgVerb(X_WARNING, 3, "Host bridge mismatch for" + " bus %x: %x:%x:%x and %x:%x:%x\n", + pBusInfo->primary_bus, + pcrp->busnum, pcrp->devnum, pcrp->funcnum, + pBusInfo->bridge->busnum, + pBusInfo->bridge->devnum, + pBusInfo->bridge->funcnum); + pBusInfo = NULL; } *pnPciBus = PciBus = xnfcalloc(1, sizeof(PciBusRec)); pnPciBus = &PciBus->next; - PciBus->primary = -1; - PciBus->secondary = -1; /* to be set below */ + + PciBus->primary = PciBus->secondary = secondary; PciBus->subordinate = pciNumBuses - 1; - if (pBusInfo) { - PciBus->primary = PciBus->secondary = secondary; - if (pBusInfo->funcs->pciGetBridgeBuses) - (*pBusInfo->funcs->pciGetBridgeBuses) - (secondary, - &PciBus->primary, - &PciBus->secondary, - &PciBus->subordinate); - } + if (pBusInfo->funcs->pciGetBridgeBuses) + (*pBusInfo->funcs->pciGetBridgeBuses) + (secondary, + &PciBus->primary, + &PciBus->secondary, + &PciBus->subordinate); PciBus->brbus = pcrp->busnum; PciBus->brdev = pcrp->devnum;