The MI code was modified to filter the devices based on its header
type. We know about header types 0, 1 and 2. Ignore the rest in the MD i386 code when we're looking for bridges. You cannot look at the vendor tag. And if you don't you certainly can't look at function > 0 if the device isn't there. The new soekris boards' GEODE cpu has issues with the old way. This is reported to have fixed it. MFC After: 2 days
This commit is contained in:
parent
8d50cc0e3e
commit
353adf7e7f
@ -323,6 +323,14 @@ legacy_pcib_identify(driver_t *driver, device_t parent)
|
||||
func = 0;
|
||||
hdrtype = legacy_pcib_read_config(0, bus, slot, func,
|
||||
PCIR_HEADERTYPE, 1);
|
||||
/*
|
||||
* When enumerating bus devices, the standard says that
|
||||
* one should check the header type and ignore the slots whose
|
||||
* header types that the software doesn't know about. We use
|
||||
* this to filter out devices.
|
||||
*/
|
||||
if ((hdrtype & ~PCIM_MFDEV) > PCI_MAXHDRTYPE)
|
||||
continue;
|
||||
if ((hdrtype & PCIM_MFDEV) &&
|
||||
(!found_orion || hdrtype != 0xff))
|
||||
pcifunchigh = 7;
|
||||
|
Loading…
Reference in New Issue
Block a user