Relax the check for a PCI-express chipset by assuming the system is a
PCI-express chipset (and thus has functional MSI) if there are any PCI-express devices in the system, not requiring a root port device. With PCI-X the chipset detection has to be very conservative because there are known systems with PCI-X devices that do not appear to have PCI-X chipsets. However, with PCI-express I'm not sure it is possible to have a PCI-express device in a system with a non-PCI-express chipset. If we assume that is the case then this change is valid. It is also required for at least some PCI-express systems that don't have any devices with a root port capability (some ICH9 systems). MFC after: 1 week Reported by: jfv
This commit is contained in:
parent
c121b7dc85
commit
51f10aedc0
@ -616,12 +616,9 @@ pci_read_extcap(device_t pcib, pcicfgregs *cfg)
|
|||||||
case PCIY_EXPRESS: /* PCI-express */
|
case PCIY_EXPRESS: /* PCI-express */
|
||||||
/*
|
/*
|
||||||
* Assume we have a PCI-express chipset if we have
|
* Assume we have a PCI-express chipset if we have
|
||||||
* at least one PCI-express root port.
|
* at least one PCI-express device.
|
||||||
*/
|
*/
|
||||||
val = REG(ptr + PCIR_EXPRESS_FLAGS, 2);
|
pcie_chipset = 1;
|
||||||
if ((val & PCIM_EXP_FLAGS_TYPE) ==
|
|
||||||
PCIM_EXP_TYPE_ROOT_PORT)
|
|
||||||
pcie_chipset = 1;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user