Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Nov 2004 11:34:52 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        jkim@niksun.com
Cc:        freebsd-current@freebsd.org
Subject:   Re: Transparent bridges (a. k. a. HUB-to-PCI bridges)?
Message-ID:  <20041123.113452.85414512.imp@bsdimp.com>
In-Reply-To: <200411231226.38172.jkim@niksun.com>
References:  <200411231226.38172.jkim@niksun.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <200411231226.38172.jkim@niksun.com>
            Jung-uk Kim <jkim@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041123.113452.85414512.imp>