cvs commit: src/sys/dev/pci pci.c
John Baldwin
jhb at freebsd.org
Mon Feb 4 07:10:41 PST 2008
On Friday 01 February 2008 09:18:38 pm Scott Long wrote:
> John Baldwin wrote:
> > jhb 2008-02-01 20:31:09 UTC
> >
> > FreeBSD src repository
> >
> > Modified files:
> > sys/dev/pci pci.c
> > Log:
> > 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
> >
> > Revision Changes Path
> > 1.357 +2 -5 src/sys/dev/pci/pci.c
>
> It's certainly possible for a PCI-X device to be plugged into a PCI-only
> system; PCI-X is backwards compatible at an electrical an protocol level
> with 3.3V PCI. So yes, you will see PCI-X extcaps on PCI-X cards even
> if there is no PCI-X bridge.
>
> I'm sure there are fun, interesting, and highly obtuse ways to get a
> PCI-E device onto a system with no PCI-E root complex. I do agree with
> your implicit statement to not worry about such an edge case, at least
> not until such an edge case becomes a demonstrated reality. What does
> worry me is that Intel would release PCI-E chipsets without an
> advertised root complex. That would seem to blatantly violate the spec.
> Does Jack have confirmation that this is really the case? If so, what
> else is being played fast-and-loose with that we should know about?
It's not that it isn't advertising a root complex but isn't advertising a
root _port_ unless there is a PCI-e expansion card plugged in. I guess
internal PCI-e devices aren't connected via a port? It does seem
inconsistent as my laptop with no external PCI-e slots has root ports
capabilities on PCI-PCI bridges off of bus 0 that service internal devices.
--
John Baldwin
More information about the cvs-src
mailing list