Transparent bridges (a. k. a. HUB-to-PCI bridges)?
M. Warner Losh
imp at bsdimp.com
Tue Nov 23 10:36:32 PST 2004
In message: <200411231226.38172.jkim at niksun.com>
Jung-uk Kim <jkim at niksun.com> writes:
: While I was booting Linux, I saw a 'transparent bridge' from dmesg and
: started digging up because I was fighting against 'interrupt
: storming' and 'stray IRQ' problems with the latest Intel chipsets
: recently and I had a feeling that it's somehow related.
:
: http://lxr.linux.no/source/drivers/pci/probe.c?v=2.6.8.1#L195
We do exactly this already in our pci pci bridge code. We allow
allocation for all subresources appropriately. From see the
PCIB_SUBTRACTIVE if statements in pcib_alloc_resource.
: http://lxr.linux.no/source/arch/i386/pci/fixup.c?v=2.6.8.1#L192
We detect fixups correctly here. There's also some toshiba parts that
we detect as well. From pci_pci.c:
/*
* Intel 815, 845 and other chipsets say they are PCI-PCI bridges,
* but have a ProgIF of 0x80. The 82801 family (AA, AB, BAM/CAM,
* BA/CA/DB and E) PCI bridges are HUB-PCI bridges, in Intelese.
* This means they act as if they were subtractively decoding
* bridges and pass all transactions. Mark them and real ProgIf 1
* parts as subtractive.
*/
if ((pci_get_devid(dev) & 0xff00ffff) == 0x24008086 ||
pci_read_config(dev, PCIR_PROGIF, 1) == 1)
sc->flags |= PCIB_SUBTRACTIVE;
: http://lxr.linux.no/source/arch/i386/pci/irq.c?v=2.6.8.1#L870
: http://lxr.linux.no/source/arch/i386/pci/irq.c?v=2.6.8.1#L1017
We already do the right kinds of dances for ioapic connected busses,
and other busses that have table driven needs (eg pci $PIR and ACPI
related stuff). Check out the legacy pci driver and the acpi_pci
drivers for details.
: But I don't see any special treatment in FreeBSD's PCI driver.
I sure do.
: 1. Is this relevant for FreeBSD?
Yes. We already have the relevant code.
: 2. Is this related to the problems (esp. SMP)?
I doubt it.
Warner
More information about the freebsd-current
mailing list