From owner-freebsd-current@FreeBSD.ORG Wed Nov 24 00:33:23 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9D99016A4CE for ; Wed, 24 Nov 2004 00:33:23 +0000 (GMT) Received: from digger1.defence.gov.au (digger1.defence.gov.au [203.5.217.4]) by mx1.FreeBSD.org (Postfix) with ESMTP id 65FD443D31 for ; Wed, 24 Nov 2004 00:33:22 +0000 (GMT) (envelope-from wilkinsa@squash.dsto.defence.gov.au) Received: from ednmsw503.dsto.defence.gov.au (ednmsw503.dsto.defence.gov.au [131.185.2.150]) by digger1.defence.gov.au with ESMTP id iAO0WKZg009812 for ; Wed, 24 Nov 2004 11:02:20 +1030 (CST) Received: from muttley.dsto.defence.gov.au (unverified) by ednmsw503.dsto.defence.gov.au (Content Technologies SMTPRS 4.3.10) with ESMTP id for ; Wed, 24 Nov 2004 11:03:12 +1030 Received: from ednex501.dsto.defence.gov.au (ednex501.dsto.defence.gov.au [131.185.2.81]) by muttley.dsto.defence.gov.au (8.11.3/8.11.3) with ESMTP id iAO0Pjh30212 for ; Wed, 24 Nov 2004 10:55:46 +1030 (CST) Received: from squash.dsto.defence.gov.au ([131.185.40.212]) by ednex501.dsto.defence.gov.au with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id XM1D0AHF; Wed, 24 Nov 2004 10:55:42 +1030 Received: from squash.dsto.defence.gov.au (localhost [127.0.0.1]) by squash.dsto.defence.gov.au (8.12.11/8.12.11) with ESMTP id iAO0Q3gX021012 for ; Wed, 24 Nov 2004 10:56:03 +1030 (CST) (envelope-from wilkinsa@squash.dsto.defence.gov.au) Received: (from wilkinsa@localhost) by squash.dsto.defence.gov.au (8.12.11/8.12.11/Submit) id iAO0Q3ka021011 for freebsd-current@freebsd.org; Wed, 24 Nov 2004 10:56:03 +1030 (CST) (envelope-from wilkinsa) Date: Wed, 24 Nov 2004 10:56:03 +1030 From: "Wilkinson, Alex" To: freebsd-current@freebsd.org Message-ID: <20041124002603.GD20881@squash.dsto.defence.gov.au> Mail-Followup-To: freebsd-current@freebsd.org References: <200411231226.38172.jkim@niksun.com> <200411231343.22760.jhb@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <200411231343.22760.jhb@FreeBSD.org> User-Agent: Mutt/1.5.6i Subject: Re: Transparent bridges (a. k. a. HUB-to-PCI bridges)? X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Nov 2004 00:33:23 -0000 Trying to understand your nomenclature John, so that I can follow this thread. Can you please elaborate on the following .... please ;-\ 1. PCI bridges - Host-PCI - PCI-PCI 2. OOPish device object (device_t) ? 3. $PIR table - aW 0n Tue, Nov 23, 2004 at 01:43:22PM -0500, John Baldwin wrote: > On Tuesday 23 November 2004 12:26 pm, Jung-uk Kim wrote: > > 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 > > http://lxr.linux.no/source/arch/i386/pci/fixup.c?v=2.6.8.1#L192 > > 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 > > > > But I don't see any special treatment in FreeBSD's PCI driver. > > > > 1. Is this relevant for FreeBSD? > > 2. Is this related to the problems (esp. SMP)? > > First of all, I have no idea what type of interrupt routing problems you are > having, but as for the above: > > FreeBSD uses a much simpler way of managing PCI interrupt routing. In > FreeBSD, each hardware device (including PCI bridges (whether Host-PCI or > PCI-PCI) and PCI busses) have an OOPish device object (device_t) associated > with them. You can see the tree structure via 'devinfo'. The way FreeBSD > implements interrupt routing is that each PCI bridge driver provides a method > for determining the IRQ associated with a given bus/device/pin tuple. (The > bus is implicit since each bridge only handles requests for its immediate > downstream bus.) In order to make use of the several different ways of > determining interrupt routing, there are several different PCI bridge drivers > for both Host-PCI and PCI-PCI bridges. For example, there are ACPI Host-PCI > and PCI-PCI bridge drivers that will route interrupts using the _PRT table > objects provided by ACPI for busses in ACPI's namespace. Also, there are > PCIBIOS bridge drivers to handle routing for the non-ACPI non-APIC case using > the information in the $PIR table. Similarly, for the non-ACPI APIC case, > there are MP Table bridge drivers to route interrupts for busses that are > listed in the MP Table. If a PCI-PCI bridge is not enumerated in ACPI space > on an ACPI system or is not listed in either the $PIR (non-APIC) or MP Table > (APIC) on a non-ACPI system, then the bridge will be probed via the simple > PCI-PCI bridge driver which does the standard barber-pole swizzle to route > interrupts based off the intpins on the bridge device's upstream connection. > Thus, for "transparent" bridges not listed in the MP Table, the MP Table > driver won't attach and it will fall back to the simple PCI-PCI bridge driver > and just work. > > Now, back to your original problem: what type of interrupt problems are you > having? > > -- > John Baldwin <>< http://www.FreeBSD.org/~jhb/ > "Power Users Use the Power to Serve" = http://www.FreeBSD.org > _______________________________________________ > freebsd-current@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org" >