2004-10-23 14:29:50

by David Jez

[permalink] [raw]
Subject: PCI & IRQ problems on TI Extensa 600CD

Hi Martin,

i spent few last nights with my Extensa. This notebook has PCI 2.1 wich
works only under m$ window$ :-(. I tried many version of kernel, 2.2,
2.4 and 2.6 tree and nothing helps me. I tried pci=bios pci=bios,biosirq
kernel options, PCI=BIOS instead of ANY...
Result is always same:
PCI: No IRQ known for interrupt pin A of device 00:04.0.
this cause for example that PCMCIA doesn't work. See attached dmesg log
and other files for details.
In Window$ everythink works OK and IRQ routing table is get from PCI
BIOS.

Any ideas?
--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------


Attachments:
(No filename) (787.00 B)
dmesg (6.91 kB)
lspci (402.00 B)
lspci-vvvnx (4.16 kB)
proc.tgz (1.97 kB)
Download all attachments

2004-10-23 19:53:19

by Jim Nelson

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

David Jez wrote:
> Hi Martin,
>
> i spent few last nights with my Extensa. This notebook has PCI 2.1 wich
> works only under m$ window$ :-(. I tried many version of kernel, 2.2,
> 2.4 and 2.6 tree and nothing helps me. I tried pci=bios pci=bios,biosirq
> kernel options, PCI=BIOS instead of ANY...
> Result is always same:
> PCI: No IRQ known for interrupt pin A of device 00:04.0.
> this cause for example that PCMCIA doesn't work. See attached dmesg log
> and other files for details.
> In Window$ everythink works OK and IRQ routing table is get from PCI
> BIOS.
>
> Any ideas?
>

I've got the same problem with the Cardbus bridge on my old Thinkpad 760ED - I
think your laptop is as old as mine (Pentium 166 - 1996 or thereabouts).

The problem with mine is that the Cardbus bridge doesn't get a vaild IRQ written
into the chip by the BIOS, and Linux relies on the BIOS to do it on older
machines. I haven't found an answer yet - I'm just getting into this stuff
myself, and don't understand PCI well enough to code a fix. It is good to know
that it is not an IBM-only problem.

> 00:00.0 Host bridge: Acer Laboratories Inc. [ALi] M1521 [Aladdin III] (rev 1c)
> 00:02.0 ISA bridge: Acer Laboratories Inc. [ALi] M1523 (rev 07)
> 00:02.1 IDE interface: Acer Laboratories Inc. [ALi] M5219 (rev 20)
> 00:04.0 CardBus bridge: Texas Instruments PCI1130 (rev 04)
> 00:04.1 CardBus bridge: Texas Instruments PCI1130 (rev 04)
> 00:06.0 VGA compatible controller: Chips and Technologies F65550 (rev 45)
>

> 00:02.1 Class 0101: 10b9:5219 (rev 20) (prog-if fa)
> Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
> Status: Cap- 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Latency: 64 (500ns min, 1000ns max)
> Interrupt: pin A routed to IRQ 0
> Region 4: I/O ports at fcf0 [size=16]
> 00: b9 10 19 52 05 00 80 02 20 fa 01 01 00 40 80 00
> 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 20: f1 fc 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 30: 00 00 00 00 00 00 00 00 00 00 00 00 ff 01 02 04
>
> 00:04.0 Class 0607: 104c:ac12 (rev 04)
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
> Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Latency: 64, cache line size 04
> Interrupt: pin A routed to IRQ 0
> Region 0: Memory at 02800000 (32-bit, non-prefetchable) [size=4K]
> Bus: primary=00, secondary=01, subordinate=05, sec-latency=176
> Memory window 0: fffff000-00000000
> Memory window 1: fffff000-00000000
> I/O window 0: 0000fffc-00000003
> I/O window 1: 0000fffc-00000003
> BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite-
> 16-bit legacy interface ports at 0001
> 00: 4c 10 12 ac 07 00 00 02 04 00 07 06 04 40 82 00
> 10: 00 00 80 02 00 00 00 02 00 01 05 b0 00 f0 ff ff
> 20: 00 00 00 00 00 f0 ff ff 00 00 00 00 fc ff 00 00
> 30: 00 00 00 00 fc ff 00 00 00 00 00 00 ff 01 c0 00
> 40: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>
> 00:04.1 Class 0607: 104c:ac12 (rev 04)
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
> Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
> Latency: 64, cache line size 04
> Interrupt: pin B routed to IRQ 0
> Region 0: Memory at 02802000 (32-bit, non-prefetchable) [size=4K]
> Bus: primary=00, secondary=06, subordinate=0a, sec-latency=176
> Memory window 0: 00000000-00000000
> Memory window 1: fffff000-00000000
> I/O window 0: 0000fffc-00000003
> I/O window 1: 0000fffc-00000003
> BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite-
> 16-bit legacy interface ports at 0001
> 00: 4c 10 12 ac 07 00 00 02 04 00 07 06 04 40 82 00
> 10: 00 20 80 02 00 00 00 22 00 06 0a b0 00 00 00 00
> 20: 00 00 00 00 00 f0 ff ff 00 00 00 00 fc ff 00 00
> 30: 00 00 00 00 fc ff 00 00 00 00 00 00 ff 02 c0 00
> 40: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>

Just out of curiosity - does lspci -vvb show the interrupt pins on the Cardbus
bridge routed to IRQ 255?

If so, it might be a problem with the TI bridge chip. IIRC, that's the same model
chip as in my laptop.

2004-10-25 16:22:27

by David Jez

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

Hi Jim,

thank you for reply! Nice to hear that you have similar problem. You
have right, my notebook is same old as yours, pentium 166, maybe
1994-1997. I have TI PCI1130 cardbus bridge. You have right, pin is
routed to IRQ 255. See attach file. But i see same behaviour on IDE
device. Strange is that this works fine under window$ :-( which says
somethink as "interrupts table get from PCI 1.2 bios". I don't know how
far i can believe it.

> I've got the same problem with the Cardbus bridge on my old Thinkpad 760ED
> - I think your laptop is as old as mine (Pentium 166 - 1996 or thereabouts).
>
> The problem with mine is that the Cardbus bridge doesn't get a vaild IRQ
> written into the chip by the BIOS, and Linux relies on the BIOS to do it on
> older machines. I haven't found an answer yet - I'm just getting into this
> stuff myself, and don't understand PCI well enough to code a fix. It is
> good to know that it is not an IBM-only problem.
>
> Just out of curiosity - does lspci -vvb show the interrupt pins on the
> Cardbus bridge routed to IRQ 255?
>
> If so, it might be a problem with the TI bridge chip. IIRC, that's the
> same model chip as in my laptop.
Regards,
--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------


Attachments:
(No filename) (1.41 kB)
LSPCI (3.36 kB)
Download all attachments

2004-10-29 08:24:14

by David Jez

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

Hi all,

Last night i solved this problem. It cause by crippled PCI chipset
parody called ALi and his perverse undocumented "features". I think that
use ISA bridge as IRQ router if we haven't any router is guite good idea.
Everythink with this patch works fine even though i have different irq in
win. See attached logs.
Jim, can you try this patch please? I assume that you have some kind
of ALi chipset too. Maybe this solves your problem too.
Martin, Marcelo, please aply :-).

PS: is here anybody who have relevant datascheet?

Regards,
--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------


Attachments:
(No filename) (790.00 B)
pci-irq.diff (1.22 kB)
data.tgz (5.95 kB)
Download all attachments

2004-10-29 09:51:07

by Jim Nelson

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

David Jez wrote:
> Hi all,
>
> Last night i solved this problem. It cause by crippled PCI chipset
> parody called ALi and his perverse undocumented "features". I think that
> use ISA bridge as IRQ router if we haven't any router is guite good idea.
> Everythink with this patch works fine even though i have different irq in
> win. See attached logs.
> Jim, can you try this patch please? I assume that you have some kind
> of ALi chipset too. Maybe this solves your problem too.
> Martin, Marcelo, please aply :-).
>
> PS: is here anybody who have relevant datascheet?
>
> Regards,
>
>

Naah. I have a piix chipset. My problem (per David Hinds) is that my laptop is
even more b0rken than yours - IBM never hooked up the PCI INTx lines on the TI
1130. My laptop never worked with Cardbus stuff - even in Windows.

He reccommended the external pcmcia_cs package for my system - there's a dummy_cs
module in there (2.4 only, though) that should fix my problem.

Thanks,

Jim

2004-10-29 10:16:46

by David Jez

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

> Naah. I have a piix chipset. My problem (per David Hinds) is that my
> laptop is even more b0rken than yours - IBM never hooked up the PCI INTx
> lines on the TI 1130. My laptop never worked with Cardbus stuff - even in
> Windows.
That's pity :-(. So i don't help you with this because i don't have
similar IBM notebook. Hmmm you should beat out datasheet from IBM :-).

> He reccommended the external pcmcia_cs package for my system - there's a
> dummy_cs module in there (2.4 only, though) that should fix my problem.
Yes, external pcmcia_cs drivers works in this situation. But you need
working irq for e.g. cardbus card that have only pci driver in kernel. I
needed this because realtek_cb work bad and i would like to use cardbus
usb controller and some wifi card.

> Thanks,
>
> Jim
Regards,
--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------

2004-11-01 08:42:22

by David Jez

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

> Naah. I have a piix chipset. My problem (per David Hinds) is that my
> laptop is even more b0rken than yours - IBM never hooked up the PCI INTx
> lines on the TI 1130. My laptop never worked with Cardbus stuff - even in
> Windows.
Jim, just for fun: can you send me your dmesg, lspci -n and dump_pirq
results?

--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------

2004-11-01 13:01:54

by Jim Nelson

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

David Jez wrote:
>>Naah. I have a piix chipset. My problem (per David Hinds) is that my
>>laptop is even more b0rken than yours - IBM never hooked up the PCI INTx
>>lines on the TI 1130. My laptop never worked with Cardbus stuff - even in
>>Windows.
>
> Jim, just for fun: can you send me your dmesg, lspci -n and dump_pirq
> results?
>

Need to compile a new kernel for this thing w/o tridentfb - doesn't work right on
my system for some reason.

<dmesg - haven't compiled a 2.6.9 for it yet>

Linux version 2.6.9-rc4Thinkpad.1 (root@david) (gcc version 3.3.3 20040412 (Red
Hat Linux 3.3.3-7)) #6 Thu Oct 14 17:05:32 EDT 2004
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 0000000005000000 (usable)
BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
80MB LOWMEM available.
On node 0 totalpages: 20480
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 16384 pages, LIFO batch:4
HighMem zone: 0 pages, LIFO batch:1
DMI not present.
Built 1 zonelists
Kernel command line: BOOT_IMAGE=2.6_test ro root=303
video=tridentfb:1024x768,bpp=16,noaccel
Initializing CPU#0
PID hash table entries: 512 (order: 9, 8192 bytes)
Detected 132.645 MHz processor.
Using tsc for high-res timesource
Console: colour VGA+ 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 78200k/81920k available (1589k kernel code, 3296k reserved, 693k data,
112k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay loop... 260.09 BogoMIPS (lpj=130048)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
CPU: After generic identify, caps: 000001bf 00000000 00000000 00000000
CPU: After vendor identify, caps: 000001bf 00000000 00000000 00000000
Intel Pentium with F0 0F bug - workaround enabled.
CPU: After all inits, caps: 000001bf 00000000 00000000 00000000
CPU: Intel Pentium 75 - 200 stepping 0c
Checking 'hlt' instruction... OK.
NET: Registered protocol family 16
PCI: PCI BIOS revision 2.10 entry at 0xfd930, last bus=6
PCI: Using configuration type 1
Linux Kernel Card Services
options: [pci] [cardbus] [pm]
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
tridentfb: Trident framebuffer 0.7.8-NEWAPI initializing
tridentfb: framebuffer size = 2048 Kb
tridentfb: 0000:00:03.0 board found
tridentfb: 1024x768 flat panel found
Console: switching to colour frame buffer device 128x48
tridentfb: fb0: Trident frame buffer device 1024x768-16bpp
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
Using anticipatory io scheduler
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
PIIXa: IDE controller at PCI slot 0000:00:01.0
PIIXa: chipset revision 2
PIIXa: bad irq (0): will probe later
PIIXa: neither IDE port enabled (BIOS)
Probing IDE interface ide0...
hda: IBM-DCRA-22110, ATA DISK drive
Probing IDE interface ide1...
ide1: Wait for ready failed before probe !
Probing IDE interface ide2...
ide2: Wait for ready failed before probe !
Probing IDE interface ide3...
ide3: Wait for ready failed before probe !
Probing IDE interface ide4...
ide4: Wait for ready failed before probe !
Probing IDE interface ide5...
ide5: Wait for ready failed before probe !
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: max request size: 128KiB
hda: 4128768 sectors (2113 MB) w/96KiB Cache, CHS=4096/16/63
hda: cache flushes not supported
hda: hda1 hda2 hda3
PCI: No IRQ known for interrupt pin A of device 0000:00:02.0. Please try using
pci=biosirq.
Yenta: CardBus bridge found at 0000:00:02.0 [0000:0000]
Yenta: ISA IRQ mask 0x06b8, PCI irq 0
Socket status: 30000006
PCI: No IRQ known for interrupt pin B of device 0000:00:02.1. Please try using
pci=biosirq.
Yenta: CardBus bridge found at 0000:00:02.1 [0000:0000]
Yenta: ISA IRQ mask 0x06b8, PCI irq 0
Socket status: 30000006
mice: PS/2 mouse device common for all mice
input: AT Translated Set 2 keyboard on isa0060/serio0
input: PS/2 Generic Mouse on isa0060/serio1
NET: Registered protocol family 2
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 8192 bind 16384)
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Freeing unused kernel memory: 112k freed
Adding 98776k swap on /dev/hda2. Priority:-1 extents:1
EXT3 FS on hda3, internal journal
kjournald starting. Commit interval 5 seconds
EXT3 FS on hda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
usbcore: registered new driver hub
ehci_hcd: block sizes: qh 128 qtd 96 itd 192 sitd 96
ohci_hcd: 2004 Feb 02 USB 1.1 'Open' Host Controller (OHCI) Driver (PCI)
ohci_hcd: block sizes: ed 64 td 64
USB Universal Host Controller Interface driver v2.2

<lspci -n>

00:00.0 Class 0600: 8086:1235 (rev 02)
00:01.0 Class 0601: 8086:122e (rev 02)
00:02.0 Class 0607: 104c:ac12 (rev 04)
00:02.1 Class 0607: 104c:ac12 (rev 04)
00:03.0 Class 0300: 1023:9660 (rev d3)
00:05.0 Class 0400: 1014:0057

<dump_pirq.pl>

No PCI interrupt routing table was found.

Interrupt router at 00:01.0: Intel 82371FB PIIX PCI-to-ISA bridge
PIRQ1 (link 0x60): irq 11
PIRQ2 (link 0x61): irq 11
PIRQ3 (link 0x62): unrouted
PIRQ4 (link 0x63): unrouted
Serial IRQ: [disabled] [quiet] [frame=17] [pulse=4]
Level mask: 0x0800 [11]

2004-11-02 05:00:59

by David Jez

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

Hi Jim,

> Need to compile a new kernel for this thing w/o tridentfb - doesn't work
> right on my system for some reason.
>
> <dmesg - haven't compiled a 2.6.9 for it yet>
>
> PCI: PCI BIOS revision 2.10 entry at 0xfd930, last bus=6
> PCI: Using configuration type 1
> Linux Kernel Card Services
> options: [pci] [cardbus] [pm]
> PCI: Probing PCI hardware
> PCI: Probing PCI hardware (bus 00)
IRQ router is missing.

> PCI: No IRQ known for interrupt pin A of device 0000:00:02.0. Please try
> using pci=biosirq.
> PCI: No IRQ known for interrupt pin B of device 0000:00:02.1. Please try
> using pci=biosirq.
>
> 00:00.0 Class 0600: 8086:1235 (rev 02)
> 00:01.0 Class 0601: 8086:122e (rev 02)
> 00:02.0 Class 0607: 104c:ac12 (rev 04)
> 00:02.1 Class 0607: 104c:ac12 (rev 04)
> 00:03.0 Class 0300: 1023:9660 (rev d3)
> 00:05.0 Class 0400: 1014:0057
>
> No PCI interrupt routing table was found.
>
> Interrupt router at 00:01.0: Intel 82371FB PIIX PCI-to-ISA bridge
> PIRQ1 (link 0x60): irq 11
> PIRQ2 (link 0x61): irq 11
> PIRQ3 (link 0x62): unrouted
> PIRQ4 (link 0x63): unrouted
> Serial IRQ: [disabled] [quiet] [frame=17] [pulse=4]
> Level mask: 0x0800 [11]
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
--
-------------------------------------------------------
David "Dave" Jez Brno, CZ, Europe
E-mail: [email protected]
PGP key: finger [email protected]
---------=[ ~EOF ]=------------------------------------


Attachments:
(No filename) (1.68 kB)
irq-2.6.9.diff (1.20 kB)
Download all attachments

2004-11-02 14:35:52

by Jim Nelson

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

David Jez wrote:
> Hi Jim,
>
>
>>Need to compile a new kernel for this thing w/o tridentfb - doesn't work
>>right on my system for some reason.
>>
>><dmesg - haven't compiled a 2.6.9 for it yet>
>>
>>PCI: PCI BIOS revision 2.10 entry at 0xfd930, last bus=6
>>PCI: Using configuration type 1
>>Linux Kernel Card Services
>> options: [pci] [cardbus] [pm]
>>PCI: Probing PCI hardware
>>PCI: Probing PCI hardware (bus 00)
>
> IRQ router is missing.
>
>
>>PCI: No IRQ known for interrupt pin A of device 0000:00:02.0. Please try
>>using pci=biosirq.
>>PCI: No IRQ known for interrupt pin B of device 0000:00:02.1. Please try
>>using pci=biosirq.
>>
>>00:00.0 Class 0600: 8086:1235 (rev 02)
>>00:01.0 Class 0601: 8086:122e (rev 02)
>>00:02.0 Class 0607: 104c:ac12 (rev 04)
>>00:02.1 Class 0607: 104c:ac12 (rev 04)
>>00:03.0 Class 0300: 1023:9660 (rev d3)
>>00:05.0 Class 0400: 1014:0057
>>
>>No PCI interrupt routing table was found.
>>
>>Interrupt router at 00:01.0: Intel 82371FB PIIX PCI-to-ISA bridge
>> PIRQ1 (link 0x60): irq 11
>> PIRQ2 (link 0x61): irq 11
>> PIRQ3 (link 0x62): unrouted
>> PIRQ4 (link 0x63): unrouted
>> Serial IRQ: [disabled] [quiet] [frame=17] [pulse=4]
>> Level mask: 0x0800 [11]
>
> 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


Attachments:
pirq_fail_message.patch (258.00 B)

2004-11-02 16:44:53

by Jim Nelson

[permalink] [raw]
Subject: Re: PCI & IRQ problems on TI Extensa 600CD

>> 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