On Tue, 5 Dec 2000, Linus Torvalds wrote: > Anybody else who has had problems with PCI interrupt routing (tends to be > "new" devices like CardBus, ACPI, USB etc), can you verify that this > either fixes things or at least doesn't break a setup that had started > working earlier.. problems with recent 2.4.0-test1* on my HP OmniBook 800 are probably combined PCMCIA(CB) / PCI / APM issues. The point is my 16bit cards (modem+ne2k) are working perfectly fine with yenta sockets until the first suspend/resume. Afterwards the PCI config space of the Cardbus bridge(s) is completely messed up forcing me to reboot. So I just applied your patch vs. 2.4.0-t12p3 (had to cleanup one rejected hunk due to an eisa_set_level_irq() which is already there). pcmcia-cs is 3.1.22. result: issue remains unchanged but nothing seems to be broken so far. The only difference I've noticed is the following two lines appearing when modprobing the pcmcia_core/yenta stuff: IRQ for 00:04.0(0) via 00:04.0 -> PIRQ 01, mask 8eb8, \ excl 0000 -> newirq=9 ... failed IRQ for 00:04.1(1) via 00:04.1 -> PIRQ 04, mask 8eb8, \ excl 0000 -> newirq=7 ... failed My guess: might be due to the PCI-IRQ-router (VLSI 82C534 PCI-bridge, id=1004:0102) without special support (defaults to r->get == NULL). Furthermore, I've noticed at 2.4.0-t10 the PCI-IRQ's of the CB-bridges were lost (reset to 0) during suspend/resume whereas at 2.4.0-t12p3 they survive (-t11 not tried). However memory and io-mapping get lost. I'd consider this the main reason for the failure, but I'm not sure whether it's the Cardbus bridges' fault or a PCI or APM issue. But nothing - neither fixed nor broken - has changed for me by this patch, except for the two lines which apparently do not matter anyway. attached: dmesg and lspci traces with some comments. What more information/debugging would be helpful? Regards Martin
# dmesg identical (except trivial stuff) for: Linux version 2.4.0-test12 ([EMAIL PROTECTED]) (gcc version 2.95.3 19991030 (prerelease)) #4 Mon Dec 4 16:50:54 CET 2000 # and Linux version 2.4.0-test12-pci-irq ([EMAIL PROTECTED]) (gcc version 2.95.3 19991030 (prerelease)) #5 Wed Dec 6 01:04:14 CET 2000 BIOS-provided physical RAM map: BIOS-e820: 000000000009fc00 @ 0000000000000000 (usable) BIOS-e820: 0000000000000400 @ 000000000009fc00 (reserved) BIOS-e820: 0000000000020000 @ 00000000000e0000 (reserved) BIOS-e820: 0000000002f00000 @ 0000000000100000 (usable) BIOS-e820: 0000000000100000 @ 00000000fff00000 (reserved) Scan SMP from c0000000 for 1024 bytes. Scan SMP from c009fc00 for 1024 bytes. Scan SMP from c00f0000 for 65536 bytes. Scan SMP from c009fc00 for 4096 bytes. On node 0 totalpages: 12288 zone(0): 4096 pages. zone(1): 8192 pages. zone(2): 0 pages. mapped APIC to ffffe000 (010cd000) Kernel command line: BOOT_IMAGE=linux.2412p ro root=301 video=vesa Initializing CPU#0 Detected 164.661 MHz processor. Console: colour dummy device 80x25 Calibrating delay loop... 328.50 BogoMIPS Memory: 46516k/49152k available (929k kernel code, 2248k reserved, 76k data, 200k init, 0k highmem) Dentry-cache hash table entries: 8192 (order: 4, 65536 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 16384 (order: 4, 65536 bytes) Inode-cache hash table entries: 4096 (order: 3, 32768 bytes) VFS: Diskquotas version dquot_6.4.0 initialized CPU: Before vendor init, caps: 008001bf 00000000 00000000, vendor = 0 Intel Pentium with F0 0F bug - workaround enabled. CPU: After vendor init, caps: 008001bf 00000000 00000000 00000000 CPU: After generic, caps: 008001bf 00000000 00000000 00000000 CPU: Common caps: 008001bf 00000000 00000000 00000000 CPU: Intel Pentium MMX stepping 03 Checking 'hlt' instruction... OK. POSIX conformance testing by UNIFIX PCI: BIOS32 Service Directory structure at 0xc00ec060 PCI: BIOS32 Service Directory entry at 0xeefb0 PCI: BIOS probe returned s=00 hw=11 ver=02.10 l=01 PCI: PCI BIOS revision 2.10 entry at 0xeefc2, last bus=1 PCI: Using configuration type 1 PCI: Probing PCI hardware PCI: Scanning for ghost devices on bus 0 PCI: Scanning for ghost devices on bus 1 PCI: IRQ init PCI: Interrupt Routing Table found at 0xc00f36e0 00:03 slot=00 0:00/0000 1:00/0000 2:00/0000 3:00/0000 00:04 slot=00 0:01/8eb8 1:04/8eb8 2:04/0000 3:04/0000 00:05 slot=00 0:08/8eb8 1:08/0000 2:08/0000 3:08/0000 00:06 slot=00 0:02/8eb8 1:02/0000 2:02/0000 3:02/0000 01:00 slot=00 0:08/8eb8 1:08/0000 2:08/0000 3:08/0000 01:06 slot=01 0:06/8eb8 1:06/8eb8 2:06/8eb8 3:06/8eb8 PCI: Using IRQ router default [1004/0102] at 00:01.0 PCI: IRQ fixup 00:03.0: ignoring bogus IRQ 255 IRQ for 00:03.0(0) via 00:03.0 -> not routed PCI: Allocating resources PCI: Resource c0000000-c03fffff (f=1208, d=0, p=0) PCI: Resource 000e6000-000e6fff (f=200, d=0, p=0) PCI: Resource 000e7000-000e7fff (f=200, d=0, p=0) PCI: Resource 00003000-0000301f (f=101, d=0, p=0) PCI: Sorting device list... Linux NET4.0 for Linux 2.4 Based upon Swansea University Computer Society NET3.039 apm: BIOS version 1.2 Flags 0x03 (Driver version 1.13) Starting kswapd v1.8 vesafb: framebuffer at 0xc0000000, mapped to 0xc3802000, size 1088k vesafb: mode is 800x600x16, linelength=1600, pages=0 vesafb: protected mode interface info at c000:7d70 vesafb: scrolling: redraw vesafb: directcolor: size=0:5:6:5, shift=0:11:5:0 Console: switching to colour frame buffer device 100x37 fb0: VESA VGA frame buffer device pty: 256 Unix98 ptys configured Uniform Multi-Platform E-IDE driver Revision: 6.31 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx hda: TOSHIBA MK2104MAV, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: 4233600 sectors (2168 MB), CHS=525/128/63 Partition check: hda: hda1 hda2 hda3 hda4 < hda5 hda6 > Serial driver version 5.02 (2000-08-09) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled ttyS00 at 0x03f8 (irq = 4) is a 16550A NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP, IGMP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 4096 bind 4096) NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. VFS: Mounted root (ext2 filesystem) readonly. Freeing unused kernel memory: 200k freed Adding Swap: 133048k swap-space (priority -1) # when modprobing yenta-stuff: Linux PCMCIA Card Services 3.1.22 options: [pci] [cardbus] [pm] # next two lines only when pci-irq-patch included IRQ for 00:04.0(0) via 00:04.0 -> PIRQ 01, mask 8eb8, excl 0000 -> newirq=9 ... failed IRQ for 00:04.1(1) via 00:04.1 -> PIRQ 04, mask 8eb8, excl 0000 -> newirq=7 ... failed # identical again Yenta IRQ list 0858, PCI irq7 Socket status: 30000010 Yenta IRQ list 0858, PCI irq9 Socket status: 30000010
2.4.0-t12p3 (no difference whether vanilla or pci-irq-patch applied) pcmcia-cs-3.1.22 lspci -vvv on TI1131 CB bridges ------------------------------- (1) after cold reboot 00:04.0 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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 set Interrupt: pin A routed to IRQ 9 Region 0: Memory at 000e6000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=80, subordinate=80, sec-latency=32 Memory window 0: 00000000-00000000 Memory window 1: 00000000-00000000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA+ VGA- MAbort- >Reset+ 16bInt- PostWrite- 16-bit legacy interface ports at 0001 00:04.1 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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 set Interrupt: pin B routed to IRQ 7 Region 0: Memory at 000e7000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=81, subordinate=81, sec-latency=32 Memory window 0: 00000000-00000000 Memory window 1: 00000000-00000000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA+ VGA- MAbort- >Reset+ 16bInt- PostWrite- 16-bit legacy interface ports at 0001 (2) after modprobing pcmcia_core, yenta_socket, ds 00:04.0 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin A routed to IRQ 9 Region 0: Memory at 000e6000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=80, subordinate=80, sec-latency=176 Memory window 0: 10000000-103ff000 (prefetchable) Memory window 1: 10400000-107ff000 I/O window 0: 00001000-000010ff I/O window 1: 00001400-000014ff BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 00:04.1 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin B routed to IRQ 7 Region 0: Memory at 000e7000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=81, subordinate=81, sec-latency=176 Memory window 0: 10800000-10bff000 (prefetchable) Memory window 1: 10c00000-10fff000 I/O window 0: 00001800-000018ff I/O window 1: 00001c00-00001cff BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 (3) after: - starting cardmgr - modprobing serial_cs and pcnet_cs - both cards (modem+ne2k) working fine - cardctl eject - suspend - resume - cards do not work anymore, freeze when physically ejecting the card(s) note: the IRQ's are still there (which was lost in 2.4.0-t10) but memory and io is messed up. 00:04.0 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin A routed to IRQ 9 Region 0: Memory at 000e6000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=80, subordinate=80, sec-latency=176 Memory window 0: 00000000-00000000 (prefetchable) Memory window 1: 10400000-00000000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 00:04.1 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin B routed to IRQ 7 Region 0: Memory at 000e7000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=81, subordinate=81, sec-latency=176 Memory window 0: 00000000-00000000 (prefetchable) Memory window 1: 10c00000-00000000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 (4) after: - killing cardmgr - rmmod all pcmcia-related - modprobe pcmcia_core, yenta_socket, ds again - problems unchanged 00:04.0 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin A routed to IRQ 9 Region 0: Memory at 000e6000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=80, subordinate=80, sec-latency=176 Memory window 0: 00000000-00000000 (prefetchable) Memory window 1: 10400000-00000000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 00:04.1 CardBus bridge: Texas Instruments PCI1131 (rev 01) 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: 168 set, cache line size 08 Interrupt: pin B routed to IRQ 7 Region 0: Memory at 000e7000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=81, subordinate=81, sec-latency=176 Memory window 0: 10400000-107ff000 (prefetchable) Memory window 1: 10800000-10bff000 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+ PostWrite+ 16-bit legacy interface ports at 0001 (5) have to reboot before using (or ejecting) the cards.