A question about hot-pluggable PCI.

M. Warner Losh imp at bsdimp.com
Mon Apr 11 10:24:16 PDT 2005


In message: <20050411134817.GA4176 at empiric.icir.org>
            Bruce M Simpson <bms at spc.org> writes:
: On Mon, Apr 11, 2005 at 07:25:07AM -0600, Scott Long wrote:
: > Asking for 'hotplug support' is pretty generic and non-descriptive.  Are
: > you asking for device level hotplug support, where we carefully drain
: > transactions out of a device, device driver, and whatever I/O or network
: > or whatever layers are above it?  Or are you talking about PCI hotplug
: > support?  If so, which de-facto standard?  Compaq?  IBM?  ACPI?
: > PCI-SIG?  Something else?
: 
: Sorry, I thought my original post was quite clear; in order to support
: my hot-pluggable PCI chassis, FreeBSD needs to grow the ability to manage
: PCI resources without any firmware support (other than possibly the ability
: to route interrupts). Since I sent that mail I looked at the requirements
: list for 5-STABLE and realized this is in fact on it.

The trouble is that 'Hot Plug' pci is a semi-standardized thing.
That's why people are confused. :-)  You want to plug in a new PCI
bus, while most people consider hot-plug PCI a way to replace cards in
a running system.

: I looked in src/sys/dev/cardbus/cardbus_cis.c, and Linux's ACPI-based PCI
: hotplug driver, and realised that at the lowest level, they are all in fact
: pretty much doing the same thing -- that is, setting all bits in a BAR, and
: then figuring out the desired aperture size for each BAR, allocating the
: appropriate resources using rman, figuring out base addresses, etc.

Yup.

: We currently rely on the BIOS to do this. The bit I've been discussing with
: Warner is how to deal with the problem of setting subordinate bus numbers,
: though because I can get away without doing that for the 'pcib is an immediate
: child of cardbus' case, I haven't done it.

No we don't.  We use what the BIOS provides, but will lazily allocate
the BARs as necessary.  We don't open the resource windows on the
bridges, however.

: I had also thought of passing down a 'cold' flag, for pcibX to indicate to
: pciY that this is a 'cold attach' (the BIOS hasn't been anywhere near the
: devices behind this bridge -- it is as fresh as after a RST# assert).

I don't think that's a wise idea.

Warner


More information about the freebsd-hackers mailing list