kernel 2.4.6-3.1 locks up toshiba notebook portege 3480ct when the multi media port replicator model pa3042u-1dst is connected to my notebook. It happens when I do # modprobe yenta_socket With the port replicator, # lspci -v 00:00.0 Host bridge: Intel Corporation 82440MX I/O Controller (rev 01) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, medium devsel, latency 64 00:00.1 Multimedia audio controller: Intel Corporation 82440MX AC'97 Audio Controller Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, fast devsel, latency 0, IRQ 11 I/O ports at fd00 [size=256] I/O ports at fcc0 [size=64] 00:02.0 Communication controller: Lucent Microelectronics 56k WinModem (rev 01) Subsystem: Toshiba America Info Systems: Unknown device 0002 Flags: bus master, medium devsel, latency 0, IRQ 11 Memory at ffefff00 (32-bit, non-prefetchable) [size=256] I/O ports at 02f8 [size=8] I/O ports at 1c00 [size=256] Capabilities: [f8] Power Management version 2 00:04.0 VGA compatible controller: S3 Inc. 86C270-294 Savage/MX-/IX (rev 11) (prog-if 00 [VGA]) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, medium devsel, latency 248, IRQ 11 Memory at f0000000 (32-bit, non-prefetchable) [size=128M] Expansion ROM at 000c0000 [disabled] [size=64K] Capabilities: [dc] Power Management version 1 00:06.0 PCI bridge: Toshiba America Info Systems: Unknown device 061b (rev 03) (prog-if 01 [Subtractive decode]) Flags: bus master, user-definable features, medium devsel, latency 64 Bus: primary=00, secondary=01, subordinate=13, sec-latency=64 I/O behind bridge: 0000c000-0000cfff Memory behind bridge: efd00000-efefffff Capabilities: [c0] Power Management version 2 Capabilities: [c8] Slot ID: 0 slots, First-, chassis 00 00:07.0 Bridge: Intel Corporation 82440MX PCI to ISA Bridge (rev 01) Flags: bus master, medium devsel, latency 0 00:07.1 IDE interface: Intel Corporation 82440MX EIDE Controller (prog-if 80 [Master]) Flags: bus master, medium devsel, latency 64 I/O ports at bff0 [size=16] 00:07.2 USB Controller: Intel Corporation 82440MX USB Universal Host Controller (prog-if 00 [UHCI]) Flags: bus master, medium devsel, latency 64, IRQ 11 I/O ports at bf80 [size=32] 00:07.3 Bridge: Intel Corporation 82440MX Power Management Controller Flags: medium devsel 00:09.0 IRDA controller: Toshiba America Info Systems FIR Port Type-DO Subsystem: Toshiba America Info Systems FIR Port Type-DO Flags: bus master, slow devsel, latency 64, IRQ 11 I/O ports at bf60 [size=32] Capabilities: [80] Power Management version 2 00:0b.0 CardBus bridge: Toshiba America Info Systems ToPIC95 PCI to Cardbus Bridge with ZV Support (rev 20) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, slow devsel, latency 64, IRQ 11 Memory at 10000000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=14, subordinate=14, sec-latency=0 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 16-bit legacy interface ports at 0001 00:0b.1 CardBus bridge: Toshiba America Info Systems ToPIC95 PCI to Cardbus Bridge with ZV Support (rev 20) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, slow devsel, latency 64, IRQ 11 Memory at 10001000 (32-bit, non-prefetchable) [size=4K] Bus: primary=00, secondary=15, subordinate=15, sec-latency=0 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 16-bit legacy interface ports at 0001 01:03.0 IDE interface: Toshiba America Info Systems: Unknown device 0105 (rev 01) (prog-if d5) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, slow devsel, latency 64, IRQ 11 I/O ports at cff8 [size=8] I/O ports at cff4 [size=4] I/O ports at cfe8 [size=8] I/O ports at cfe4 [size=4] I/O ports at cfa0 [size=16] Capabilities: [80] Power Management version 2 01:04.0 Ethernet controller: Intel Corporation 82557 [Ethernet Pro 100] (rev 08) Subsystem: Toshiba America Info Systems: Unknown device 0003 Flags: bus master, medium devsel, latency 64, IRQ 11 Memory at efeff000 (32-bit, non-prefetchable) [size=4K] I/O ports at cf40 [size=64] Memory at efd00000 (32-bit, non-prefetchable) [size=1M] Capabilities: [dc] Power Management version 2 01:05.0 CardBus bridge: Toshiba America Info Systems ToPIC95 PCI to Cardbus Bridge with ZV Support (rev 40) Subsystem: Toshiba America Info Systems: Unknown device 0001 Flags: bus master, slow devsel, latency 64 Memory at efe00000 (32-bit, non-prefetchable) [size=4K] Bus: primary=01, secondary=12, subordinate=12, sec-latency=0 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 16-bit legacy interface ports at 0001 kernel 2.2.18 worked fine. kernel 2.4.7-0.13.1 has the same problem. It looks like 2.4.x doesn't know how to deal with cardbus and pci bridge in port replicator.
Please note that there is another cardbus bridge on the port replicator. That may confuse yenta_socket.
Strange question: could you try the enterprise kernel on this ?
This defect is considered SHOULD-FIX for Fairfax.
The enterprise kernel also locks up the machine.
One more thing. There is no IRQ assigned for the CardBus bridge on the port replicator. It may confuse the kernel.
I think one fix may be to ignore the socket without an IRQ during init.
Here is a patch. With it applied, I got Linux Kernel Card Services 3.1.22 options: [pci] [cardbus] [pm] PCI: Found IRQ 11 for device 00:0b.0 PCI: Found IRQ 11 for device 00:0b.1 PCI: Sharing IRQ 11 with 00:00.1 CardBus bridge (1179:0617, 1179:0001) without PCI interrupt is ignored! Yenta IRQ list 0000, PCI irq11 Socket status: 30000007 Yenta IRQ list 0000, PCI irq11 Socket status: 30000020 Does kernel know how to assign an IRQ to a pci device?
Created attachment 27855 [details] A patch
Created attachment 27877 [details] slightly modified patch
The kernel should be able to assign irq's. If it doesn't, that's a bug, but the check should only be done after enabling the device, attached patch does that first.
Created attachment 27973 [details] An updated patch
Here is the new kernel message. I don't think Linux knows how to assign an IRQ to a PCI device, at least on x86. It has to be assigned by BIOS. Linux Kernel Card Services 3.1.22 options: [pci] [cardbus] [pm] PCI: Found IRQ 11 for device 00:0b.0 PCI: Found IRQ 11 for device 00:0b.0 PCI: Found IRQ 11 for device 00:0b.1 PCI: Sharing IRQ 11 with 00:00.1 PCI: Found IRQ 11 for device 00:0b.1 PCI: Sharing IRQ 11 with 00:00.1 PCI: No IRQ known for interrupt pin A of device 01:05.0. Please try using pci=biosirq. PCI CardBus bridge (1179:0617, 1179:0001) without IRQ is ignored! Passing pci=biosirq to kernel, I got Linux Kernel Card Services 3.1.22 options: [pci] [cardbus] [pm] PCI: Found IRQ 11 for device 00:0b.0 PCI: Found IRQ 11 for device 00:0b.0 PCI: Found IRQ 11 for device 00:0b.1 PCI: Sharing IRQ 11 with 00:00.1 PCI: Found IRQ 11 for device 00:0b.1 PCI: Sharing IRQ 11 with 00:00.1 PCI: No IRQ known for interrupt pin A of device 01:05.0. PCI CardBus bridge (1179:0617, 1179:0001) without IRQ is ignored!
FYI, I updated my patch to print out PCI: CardBus bridge (1179:0617, 1179:0001) without IRQ is ignored! to be consistent with other PCI messages.
patch added to the kernel; thanks!