Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jul 2007 12:46:23 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        jhb@freebsd.org
Cc:        freebsd-mobile@freebsd.org, smithi@nimnet.asn.au, zhangweiwu@realss.com
Subject:   Re: unable to map IRQ for my pccard
Message-ID:  <20070711.124623.-1962671563.imp@bsdimp.com>
In-Reply-To: <200707111431.52840.jhb@freebsd.org>
References:  <1184115985.13672.1.camel@joe.realss.com> <20070710.205634.756906935.imp@bsdimp.com> <200707111431.52840.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <200707111431.52840.jhb@freebsd.org>
            John Baldwin <jhb@freebsd.org> writes:
: On Tuesday 10 July 2007 10:56:34 pm M. Warner Losh wrote:
: > In message: <1184115985.13672.1.camel@joe.realss.com>
: >             Zhang Weiwu <zhangweiwu@realss.com> writes:
: > : On Tue, 2007-07-10 at 15:18 -0400, John Baldwin wrote:
: > : > On Sunday 08 July 2007 08:54:40 pm Zhang Weiwu wrote:
: > : > > >  > cbb0: <TI1250 PCI-CardBus Bridge> mem 0x20822000-0x20822fff at
: > : > > >  > device 2.0 on pci0 pccard0: <16-bit PCCard bus> on cbb0
: > : > > >  > cbb1: <TI1250 PCI-CardBus Bridge> mem 0x20821000-0x20821fff at
: > : > > >  > device 2.1 on pci0 pccard1: <16-bit PCCard bus> on cbb1
: > : > > >  > $PIR: ROUTE_INTERRUPT failed.
: > : > > >  > cbb: Unable to map IRQ...
: > : > > >  > device_attach: cbb1 attach returned 12
: > : > 
: > : > We tried to set the IRQ for your device and the BIOS choked.  Can you 
: get the 
: > : > output from /usr/src/tools/tools/pirtool for your machine?
: > : 
: > : 
: > : Thanks! Here is it:
: > : 
: > : PCI Interrupt Routing Table at 0x000FB270
: > : -----------------------------------------
: > : 0x00: Signature:          $PIR
: > : 0x04: Version:            1.0
: > : 0x06: Size:               96 bytes (4 entries)
: > : 0x08: Device:             0:6:0
: > : 0x0a: PCI Exclusive IRQs: 0x00000400
: > : 0x0c: Compatible with:    0x00000000 unknown chipset
: > : 0x10: Miniport Data:      0x00000000
: > : 0x1f: Checksum:           0x4D
: > : 
: > : Entry 0: Device 0:6:0 Slot 0 (on-board)
: > :         INTA: 60h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTB: 00h (not connected)
: > :         INTC: 00h (not connected)
: > :         INTD: 63h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > : Entry 1: Device 0:2:0 Slot 0 (on-board)
: > :         INTA: 60h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTB: 61h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTC: 00h (not connected)
: > :         INTD: 00h (not connected)
: > : Entry 2: Device 0:3:0 Slot 0 (on-board)
: > :         INTA: 60h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTB: 00h (not connected)
: > :         INTC: 00h (not connected)
: > :         INTD: 00h (not connected)
: > : Entry 3: Device 0:7:0 Slot 0 (on-board)
: > :         INTA: 60h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTB: 61h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTC: 00h (not connected)
: > :         INTD: 00h (not connected)
: > 
: > consider:
: > 
: > : cbb0: <TI1250 PCI-CardBus Bridge> mem 0x20822000-0x20822fff at device 2.0 
: on pci0
: > : pccard0: <16-bit PCCard bus> on cbb0
: > : cbb1: <TI1250 PCI-CardBus Bridge> mem 0x20821000-0x20821fff at device 2.1 
: on pci0
: > : pccard1: <16-bit PCCard bus> on cbb1
: > : $PIR: ROUTE_INTERRUPT failed.
: > : cbb: Unable to map IRQ...
: > : Entry 1: Device 0:2:0 Slot 0 (on-board)
: > :         INTA: 60h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > :         INTB: 61h routable irqs: 3 4 5 6 7 9 10 11 12 14 15
: > 
: > I think we're trying to rotue wire 0x60 twice.  The second try seems
: > to be failing.
: 
: No, we only route things once.  Look at /sys/i386/pci/pci_pir.c.  It keeps 
: track of which IRQ a link is routed to, and we only use the BIOS call if it 
: didn't look like the BIOS had already routed it, and we haven't routed it 
: before.  I think we are actually trying to route 0x61 btw, not 0x60 since 
: it's device 2.1 (and thus probably INTB) that is keeling over.

Then there's another issue.  All the CardBus bridges use INTA when
they have multiple functions, with very very few exceptions...

pciconf -r pci0:2:0 0:0xff

will confirm it.  Now, if I can just find my TI1250 datasheets...

Warner



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