Re: PCI & IRQ problems on TI Extensa 600CD

From: Jim Nelson
Date: Tue Nov 02 2004 - 11:49:51 EST


It looks that you have same problem and kernel doesn't find IRQ
router. So try attached patch (for 2.6.9 and added your bridge) if it helps.
I think that it may help (look at dump_pirq results).
You can try turn on DEBUG (in file arch/i386/pci/pci.h) and see debug
messages on screen.

Dave



That patch comes too late in the PCI init sequence for my machine. pirq_find_router() (where your patch goes) depends on pirq_table being set up by pirq_find_routing_table(). When I put in the debug statement in the attached patch, I got the "PCI: No Interrupt Routing Table found" message. Since pirq_table wasn't set up, pirq_find_router() is never called. Let me look at this some more (got vacation this week, so I can finally devote some time to this.)

Jim


When I used pci=biosirq, this is what I got:


Linux version 2.6.9-Thinkpad (jim@david) (gcc version 3.3.3 20040412 (Red Hat Linux 3.3.3-7)) #9 Tue Nov 2 10:29:03 EST 2004

<snip>

PCI: BIOS32 Service Directory structure at 0xc00fd8e0
PCI: BIOS32 Service Directory entry at 0xfd8f0
PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=06
PCI: PCI BIOS revision 2.10 entry at 0xfd930, last bus=6
PCI: Using configuration type 1
Linux Plug and Play Support v0.97 (c) Adam Belay
PnPBIOS: Scanning system for PnP BIOS support...
PnPBIOS: Found PnP BIOS installation structure at 0xc00fe700
PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0xe724, dseg 0xf0000
PnPBIOS: 17 nodes reported by PnP BIOS; 17 recorded by driver
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI: Scanning for ghost devices on bus 0
PCI: Peer bridge fixup
PCI: IRQ init
PCI: Fetching IRQ routing table... OK ret=14, size=48, map=800
PCI: Using BIOS Interrupt Routing Table
00:03 slot=00 0:01/def8 1:00/0000 2:00/0000 3:00/0000
00:05 slot=00 0:01/def8 1:00/0000 2:00/0000 3:00/0000
00:04 slot=00 0:01/def8 1:02/def8 2:03/def8 3:04/def8
PCI: Using BIOS for IRQ routing
PCI: IRQ fixup
0000:00:02.0: ignoring bogus IRQ 255
0000:00:02.1: ignoring bogus IRQ 255
IRQ for 0000:00:02.0:0 -> not found in routing table
IRQ for 0000:00:02.1:1 -> not found in routing table
PCI: Allocating resources
PCI: Resource 10812000-10812fff (f=200, d=0, p=0)
PCI: Resource 10811000-10811fff (f=200, d=0, p=0)
PCI: Resource 08000000-083fffff (f=200, d=0, p=0)
PCI: Resource 08400000-0840ffff (f=200, d=0, p=0)
PCI: Resource 08800000-08bfffff (f=200, d=0, p=0)
PCI: Resource 10810000-108100ff (f=200, d=0, p=0)
PCI: Sorting device list...
pnp: the driver 'system' has been registered
pnp: match found with the PnP device '00:10' and the driver 'system'
pnp: 00:10: ioport range 0x100-0x107 has been reserved
pnp: 00:10: ioport range 0x26e-0x26f has been reserved
pnp: 00:10: ioport range 0xd00-0xd01 has been reserved
pnp: 00:10: ioport range 0x15e8-0x15ef has been reserved
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
Initializing Cryptographic API
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found

<snip>

Linux Kernel Card Services
options: [pci] [cardbus] [pm]
IRQ for 0000:00:02.0:0 -> not found in routing table
PCI: No IRQ known for interrupt pin A of device 0000:00:02.0.
Yenta: CardBus bridge found at 0000:00:02.0 [0000:0000]
Yenta: ISA IRQ mask 0x06b8, PCI irq 0
Socket status: 30000006
IRQ for 0000:00:02.1:1 -> not found in routing table
PCI: No IRQ known for interrupt pin B of device 0000:00:02.1.
Yenta: CardBus bridge found at 0000:00:02.1 [0000:0000]
Yenta: ISA IRQ mask 0x06b8, PCI irq 0
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0820-0x08ff: clean.
cs: IO port probe 0x0800-0x080f: clean.
cs: IO port probe 0x03e0-0x04ff: excluding 0x4d0-0x4d7
cs: IO port probe 0x0100-0x03af: excluding 0x200-0x207
cs: IO port probe 0x0a00-0x0aff: excluding 0xa68-0xa6f
spurious 8259A interrupt: IRQ7.

It's a BIOS problem. Linux is capable of retreiving the pirq table using BIOS calls, but the table the BIOS returns does not have entries for the Cardbus bridge. I think I might be out of luck. Lemme go do some research, and see what I can dig up.

Jim
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/