Hack to work around a probe which will lock up at least some i450GX-based
systems. From the PR: When 'probe.slot' is PCI_SLOTMAX (== 31) and 'probe.func' is 7, call to 'pci_cfgread()' here and machine suddenly hangs up. I don't know why... (or 450GX chipset's bug?) PR: i386/20379 Submitted by: Masayuki FUKUI <fukui@sonic.nm.fujitsu.co.jp>
This commit is contained in:
parent
9258628e9e
commit
6a0bbcf690
@ -267,6 +267,7 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
int found = 0;
|
||||
int pcifunchigh;
|
||||
int found824xx = 0;
|
||||
int found_orion = 0;
|
||||
device_t child;
|
||||
devclass_t pci_devclass;
|
||||
|
||||
@ -288,7 +289,8 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
func = 0;
|
||||
hdrtype = nexus_pcib_read_config(0, bus, slot, func,
|
||||
PCIR_HEADERTYPE, 1);
|
||||
if (hdrtype & PCIM_MFDEV)
|
||||
if ((hdrtype & PCIM_MFDEV) &&
|
||||
(!found_orion || hdrtype != 0xff))
|
||||
pcifunchigh = 7;
|
||||
else
|
||||
pcifunchigh = 0;
|
||||
@ -347,6 +349,8 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
found = 1;
|
||||
if (id == 0x12258086)
|
||||
found824xx = 1;
|
||||
if (id == 0x84c48086)
|
||||
found_orion = 1;
|
||||
}
|
||||
}
|
||||
if (found824xx && bus == 0) {
|
||||
|
@ -267,6 +267,7 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
int found = 0;
|
||||
int pcifunchigh;
|
||||
int found824xx = 0;
|
||||
int found_orion = 0;
|
||||
device_t child;
|
||||
devclass_t pci_devclass;
|
||||
|
||||
@ -288,7 +289,8 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
func = 0;
|
||||
hdrtype = nexus_pcib_read_config(0, bus, slot, func,
|
||||
PCIR_HEADERTYPE, 1);
|
||||
if (hdrtype & PCIM_MFDEV)
|
||||
if ((hdrtype & PCIM_MFDEV) &&
|
||||
(!found_orion || hdrtype != 0xff))
|
||||
pcifunchigh = 7;
|
||||
else
|
||||
pcifunchigh = 0;
|
||||
@ -347,6 +349,8 @@ nexus_pcib_identify(driver_t *driver, device_t parent)
|
||||
found = 1;
|
||||
if (id == 0x12258086)
|
||||
found824xx = 1;
|
||||
if (id == 0x84c48086)
|
||||
found_orion = 1;
|
||||
}
|
||||
}
|
||||
if (found824xx && bus == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user