Re: unable to map IRQ for my pccard

John Baldwin <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>
On Tuesday 10 July 2007 10:56:34 pm M. Warner Losh wrote:
> In message: <[email protected]>
>             Zhang Weiwu <[email protected]> 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.

You can try using a hint like 'hw.pci0.2.INTB.irq=11' and seeing if it works.

-- 
John Baldwin
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.