Bug 3457

Summary: Cardbus cards do not work with HP 5700CTX notebook.
Product: Drivers Reporter: Anssi Hannula (anssi.hannula)
Component: PCMCIAAssignee: Dominik Brodowski (linux)
Status: CLOSED INSUFFICIENT_DATA    
Severity: normal CC: romieu
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.8.1 Subsystem:
Regression: --- Bisected commit-id:
Attachments: dmesg with yenta_socket compiled in, 8139too as module with debugging
output of ethtool -d eth0
Dmesg output with pci.h DEBUG defined
Gross hack for debug
dmesg with working 16bit card (pci.h debug defined)

Description Anssi Hannula 2004-09-24 12:53:16 UTC
Hardware Environment:
HP Omnibook 5700CTX laptop
Belkin F5D5010 Cardbus network card

Software Environment:
Kernel 2.6.8.1 (gcc 3.4.1), tested also with 2.6.3.
yenta_socket pcmcia driver and 8139too network driver

Problem Description:
The module loads and works properly until I try to send data, for example ping.
The following lines are printed to syslog repeatedly when trying to ping:

NETDEV WATCHDOG: eth0: transmit timed out
eth0: Transmit timeout, status 0c 0005 c07f media 00.
eth0: Tx queue start entry 4  dirty entry 0.
eth0:  Tx descriptor 0 is 0008a03c. (queue head)
eth0:  Tx descriptor 1 is 0008a03c.
eth0:  Tx descriptor 2 is 0008a03c.
eth0:  Tx descriptor 3 is 0008a03c.
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

I attach the full dmesg (with 8139too debugging enabled) and "ethtool -d eth0" 
output.

The card works in Windows.
It also works in my friend's laptop with the same linux kernel (using 
yenta_socket).
If the problem seems to be in the pcmcia driver or something else, please change 
the bugzilla component accordingly.

Steps to reproduce:
Using Belkin F5D5010 on HP Omnibook 5700CTX.
Comment 1 Anssi Hannula 2004-09-24 12:56:18 UTC
Created attachment 3715 [details]
dmesg with yenta_socket compiled in, 8139too as module with debugging
Comment 2 Anssi Hannula 2004-09-24 12:57:29 UTC
Created attachment 3716 [details]
output of ethtool -d eth0
Comment 3 Francois Romieu 2004-10-06 12:33:50 UTC
[dmesg output] 
PCI: IRQ 0 for device 0000:00:03.0 doesn't match PIRQ mask - try 
pci=usepirqmask 
[...] 
PCI: IRQ 0 for device 0000:00:03.1 doesn't match PIRQ mask - try 
pci=usepirqmask 
 
Does the suggestion above make a difference ? 
 
If not, the output of your /proc/interrupts and a lspci -vx after a few 
timeout messages may shed some light (wild guess: irq routing issue). 
 
-- 
Ueimor 
Comment 4 Anssi Hannula 2004-10-06 13:44:43 UTC
That doesn't make a difference.
After few timeouts:
cat /proc/interrupts:
           CPU0
  0:     875033          XT-PIC  timer
  1:       1047          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  6:        172          XT-PIC  floppy
 10:          0          XT-PIC  yenta, yenta, eth0
 12:         58          XT-PIC  i8042
NMI:          0
LOC:          0
ERR:          0
MIS:          0

lspci -vx:
00:00.0 Host bridge: OPTi Inc. 82C557 [Viper-M] (rev 14)
        Flags: bus master, medium devsel, latency 0
00: 45 10 57 c5 07 00 80 12 14 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:01.0 ISA bridge: OPTi Inc. 82C558 [Viper-M ISA+IDE] (rev 02)
        Flags: bus master, medium devsel, latency 0
00: 45 10 58 c5 07 00 80 82 02 00 01 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:02.0 VGA compatible controller: Chips and Technologies F65554 (rev c2) (prog-
if 00 [VGA])
        Flags: stepping, medium devsel
        Memory at c0000000 (32-bit, non-prefetchable) [size=16M]
        Expansion ROM at <unassigned> [disabled] [size=256K]
00: 2c 10 e4 00 c3 01 80 02 c2 00 00 03 00 00 00 00
10: 00 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:03.0 CardBus bridge: Texas Instruments PCI1131 (rev 01)
        Flags: bus master, medium devsel, latency 168, IRQ 10
        Memory at 10000000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=01, subordinate=04, sec-latency=176
        Memory window 0: 10400000-107ff000 (prefetchable)
        Memory window 1: 10800000-10bff000
        I/O window 0: 00004000-000040ff
        I/O window 1: 00004400-000044ff
        16-bit legacy interface ports at 0001
00: 4c 10 15 ac 07 00 00 02 01 00 07 06 08 a8 82 00
10: 00 00 00 10 00 00 00 02 00 01 04 b0 00 00 40 10
20: 00 f0 7f 10 00 00 80 10 00 f0 bf 10 00 40 00 00
30: fc 40 00 00 00 44 00 00 fc 44 00 00 ff 01 00 05
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:03.1 CardBus bridge: Texas Instruments PCI1131 (rev 01)
        Flags: bus master, medium devsel, latency 168, IRQ 10
        Memory at 10001000 (32-bit, non-prefetchable) [size=4K]
        Bus: primary=00, secondary=05, subordinate=08, sec-latency=176
        Memory window 0: 10c00000-10fff000 (prefetchable)
        Memory window 1: 11000000-113ff000
        I/O window 0: 00004800-000048ff
        I/O window 1: 00004c00-00004cff
        16-bit legacy interface ports at 0001
00: 4c 10 15 ac 07 00 00 02 01 00 07 06 08 a8 82 00
10: 00 10 00 10 00 00 00 02 00 05 08 b0 00 00 c0 10
20: 00 f0 ff 10 00 00 00 11 00 f0 3f 11 00 48 00 00
30: fc 48 00 00 00 4c 00 00 fc 4c 00 00 ff 02 c0 05
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:14.0 IDE interface: OPTi Inc. 82C621 [Viper-M/N+] (rev 12) (prog-if 80 
[Master])
        Flags: bus master, medium devsel, latency 0
        I/O ports at 3000 [size=16]
00: 45 10 21 c6 55 00 80 02 12 80 01 01 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 30 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 00 00 00 00

01:00.0 Ethernet controller: Accton Technology Corporation SMC2-1211TX (rev 10)
        Subsystem: Accton Technology Corporation: Unknown device 2230
        Flags: bus master, medium devsel, latency 64, IRQ 10
        I/O ports at 4000 [size=256]
        Memory at 10800000 (32-bit, non-prefetchable) [size=512]
        Capabilities: [50] Power Management version 2
00: 13 11 11 12 07 00 90 02 10 00 00 02 00 40 00 00
10: 01 40 00 00 00 00 80 10 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 02 01 00 00 13 11 30 22
30: 00 00 00 00 50 00 00 00 00 00 00 00 0a 01 20 40


My other pcmcia cards (all 16-bit) work well, when this is a 32-bit ("cardbus") 
card.
It may be worth to mention that I have this laptop for only about 5 days 
anymore.
Comment 5 Francois Romieu 2004-10-06 15:01:32 UTC
Can you #define DEBUG at the top of arch/i386/pci/pci.h and rebuild the whole 
thing so as to have more information in the kernel log ? 
 
-- 
Ueimor 
Comment 6 Anssi Hannula 2004-10-07 06:50:02 UTC
Created attachment 3773 [details]
Dmesg output with pci.h DEBUG defined

Here's the dmesg output with pci.h debug defined also.
Comment 7 Francois Romieu 2004-10-07 10:43:38 UTC
Created attachment 3777 [details]
Gross hack for debug

This patch may help checking if there is something really strange with
irq routing (it will surely crash the laptop a few times but you said you
will only keep it for the next 4 days, so...).

Please keep the DEBUG option in if you try it. You may want to change the
value 9 with... well, any 0..16 value (try the values which are not used by a
different device first). Keep the second slot free when the network adapter is
in.

No warranty.
Comment 8 Francois Romieu 2004-10-07 10:46:32 UTC
Can you send lspci -vx + dmesg with pci.h DEBUG defined when a correctly 
working 16bit card is inserted in your system ? 
Comment 9 Anssi Hannula 2004-10-07 11:54:48 UTC
Created attachment 3778 [details]
dmesg with working 16bit card (pci.h debug defined)

Well, here is the working card's dmesg and lspci -vx:
00:00.0 Host bridge: OPTi Inc. 82C557 [Viper-M] (rev 14)
	Flags: bus master, medium devsel, latency 0
00: 45 10 57 c5 07 00 80 02 14 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:01.0 ISA bridge: OPTi Inc. 82C558 [Viper-M ISA+IDE] (rev 02)
	Flags: bus master, medium devsel, latency 0
00: 45 10 58 c5 07 00 80 82 02 00 01 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:02.0 VGA compatible controller: Chips and Technologies F65554 (rev c2)
(prog-if 00 [VGA])
	Flags: stepping, medium devsel
	Memory at c0000000 (32-bit, non-prefetchable) [size=16M]
	Expansion ROM at <unassigned> [disabled] [size=256K]
00: 2c 10 e4 00 c3 01 80 02 c2 00 00 03 00 00 00 00
10: 00 00 00 c0 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 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 00 00 00 00

00:03.0 CardBus bridge: Texas Instruments PCI1131 (rev 01)
	Flags: bus master, medium devsel, latency 168, IRQ 10
	Memory at 10000000 (32-bit, non-prefetchable) [size=4K]
	Bus: primary=00, secondary=01, subordinate=04, sec-latency=176
	Memory window 0: 10400000-107ff000 (prefetchable)
	Memory window 1: 10800000-10bff000
	I/O window 0: 00004000-000040ff
	I/O window 1: 00004400-000044ff
	16-bit legacy interface ports at 0001
00: 4c 10 15 ac 07 00 00 02 01 00 07 06 08 a8 82 00
10: 00 00 00 10 00 00 00 02 00 01 04 b0 00 00 40 10
20: 00 f0 7f 10 00 00 80 10 00 f0 bf 10 00 40 00 00
30: fc 40 00 00 00 44 00 00 fc 44 00 00 ff 01 c0 05
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:03.1 CardBus bridge: Texas Instruments PCI1131 (rev 01)
	Flags: bus master, medium devsel, latency 168, IRQ 10
	Memory at 10001000 (32-bit, non-prefetchable) [size=4K]
	Bus: primary=00, secondary=05, subordinate=08, sec-latency=176
	Memory window 0: 10c00000-10fff000 (prefetchable)
	Memory window 1: 11000000-113ff000
	I/O window 0: 00004800-000048ff
	I/O window 1: 00004c00-00004cff
	16-bit legacy interface ports at 0001
00: 4c 10 15 ac 07 00 00 02 01 00 07 06 08 a8 82 00
10: 00 10 00 10 00 00 00 02 00 05 08 b0 00 00 c0 10
20: 00 f0 ff 10 00 00 00 11 00 f0 3f 11 00 48 00 00
30: fc 48 00 00 00 4c 00 00 fc 4c 00 00 ff 02 c0 05
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:14.0 IDE interface: OPTi Inc. 82C621 [Viper-M/N+] (rev 12) (prog-if 80
[Master])
	Flags: bus master, medium devsel, latency 0
	I/O ports at 3000 [size=16]
00: 45 10 21 c6 55 00 80 02 12 80 01 01 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 01 30 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 00 00 00 00


16bit cards don't seem to be showed by lspci (because they aren't pci-devices).
The irq for it (3) gets defined by pcmcia-cs software configuration, and works
with any free irq available.
I will now try your patch.
Comment 10 Anssi Hannula 2004-10-07 13:19:11 UTC
I've tried the patch with numbers 3, 9, 10, 11, all lock up the system in kernel 
loading. If we are searching for the CardBus IRQ, according to notebook manual 
it's 10. And if I understood right that's what the kernel originally guessed.

For me it looks like the problem is in finding the IRQ for the ethernet 
controller when loading the driver:
PCI: Enabling device 0000:01:00.0 (0000 -> 0003)
IRQ for 0000:01:00.0:0 -> not found in routing table
Shouldn't this assign the irq 10 to the ethernet controller, too?
Comment 11 Anssi Hannula 2005-06-04 03:01:59 UTC
Switched the component, note that this bug doesn't have any testers ATM.
Comment 12 Russell King 2005-06-04 03:40:36 UTC
The message:

> IRQ for 0000:01:00.0:0 -> not found in routing table

just means that the device wasn't found in the routing table.  However, your
/proc/interrupts output indicates that the IRQ was correctly assigned:

>  10:          0          XT-PIC  yenta, yenta, eth0

but it has a count of '0' which means interrupts from eth0 and the socket
itself are not getting through (I bet the '0' doesn't increment if you plug/
unplug the card.)

This probably means that there's some magic for your laptop to route this
interrupt to IRQ10 which we don't know about.  Or it may be that the Cardbus
bridge is incorrectly configured.  It may be useful to search the 'net for
the 'cbdump' program and provide the output.
Comment 13 Dominik Brodowski 2005-06-12 14:30:46 UTC
Is this bug still present in recent kernels (i.e. 2.6.11.12, 2.6.12-rc6)?
Comment 14 Dominik Brodowski 2005-07-25 11:12:13 UTC
No new test results; please re-open if bug is still present in 2.6.13-rc3 or later.