diff options
author | jhb <jhb@FreeBSD.org> | 2008-02-01 20:31:09 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2008-02-01 20:31:09 +0000 |
commit | 51f10aedc0f2f8967184701805df0acf26cf28a8 (patch) | |
tree | 133a26ba3cedc94192fae4e0a9c4c4db67226aa3 | |
parent | c121b7dc85514d0c0d9defdf23b55d3acd49cd90 (diff) | |
download | FreeBSD-src-51f10aedc0f2f8967184701805df0acf26cf28a8.zip FreeBSD-src-51f10aedc0f2f8967184701805df0acf26cf28a8.tar.gz |
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
-rw-r--r-- | sys/dev/pci/pci.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index d7343d2..0e8647f 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -616,12 +616,9 @@ pci_read_extcap(device_t pcib, pcicfgregs *cfg) case PCIY_EXPRESS: /* PCI-express */ /* * 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); - if ((val & PCIM_EXP_FLAGS_TYPE) == - PCIM_EXP_TYPE_ROOT_PORT) - pcie_chipset = 1; + pcie_chipset = 1; break; default: break; |