cvs commit: src/sys/dev/pci pci.c

John Baldwin jhb at freebsd.org
Mon Feb 4 15:00:37 PST 2008


On Monday 04 February 2008 10:34:09 am Scott Long wrote:
> John Baldwin wrote:
> > 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.
> > 
> 
> Ok, funky.  So there are onboard PCIe devices, but it only advertises a
> port if there are external devices.  I'm not clear on the technical
> distinction there either.

Correct, I find it quite odd myself and had assumed that you would always have 
root ports.  I was quite surprised to learn otherwise. :-/

-- 
John Baldwin


More information about the cvs-src mailing list