lkml.org 
[lkml]   [2000]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: PCI irq routing..
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 (root@srv.diehl.home) (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 (root@srv.diehl.home) (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.

\
 
 \ /
  Last update: 2005-03-22 12:51    [W:0.090 / U:9.492 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site