2003-09-19 00:41:58

by Thomas Molina

[permalink] [raw]
Subject: 2.6.0-test problems loading network drivers

I have a Compaq Presario 12XL325 laptop which continues to have problems
with some kernel hacking options (see bugzilla 973). While I continue to
test new bitkeeper and -mm kernel builds, I also work around them by
building a kernel with the problematic options disabled in order to test
other features.

While testing the new kernel builds I have run across a problem loading
the pcmcia network drivers (SMC 2632W wireless ethernet card). My pcmcia
controller is defined as follows:

00:0a.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus
Controller (rev 01)
Subsystem: Compaq Computer Corporation: Unknown device b103
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, cache line size 20
Interrupt: pin A routed to IRQ 9
Region 0: Memory at 10000000 (32-bit, non-prefetchable) [size=4K]
Bus: primary=00, secondary=02, subordinate=05, 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
BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt+
PostWrite+
16-bit legacy interface ports at 0001


The operating environment is RedHat 9. I have enclosed various system
files I figure to be of interest.

Attachment 1 is the configuration used to build the kernel
Attachment 2 is /proc/interrupts
Attachment 3 is /proc/ioports
Attachment 4 is the full lspci output for my system

However, the following show the
difference between how 2.4 handles card insertion events vs. how 2.6-test
handles those events. Maybe someone could either tell me this is a kernel
problem, or else say how I could update my system to handle this situation
in 2.6. Thanks in advance.

First, here is how 2.4 handles the events:

original dmesg output

Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
PCI: Assigned IRQ 9 for device 00:0a.0
Yenta IRQ list 0018, PCI irq9
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x200-0x207 0x220-0x22f 0x378-0x37f 0x388-0x38f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.


/var/log/messages on inserting card

Sep 15 22:11:46 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Sep 15 22:11:46 localhost cardmgr[1461]: executing: 'modprobe hermes'
Sep 15 22:11:46 localhost cardmgr[1461]: executing: 'modprobe orinoco'
Sep 15 22:11:46 localhost cardmgr[1461]: executing: 'modprobe orinoco_cs'
Sep 15 22:11:46 localhost cardmgr[1461]: executing: './network start eth0'
ip_tables: (C) 2000-2002 Netfilter core team
Sep 15 22:11:46 localhost /etc/hotplug/net.agent: invoke ifup eth0
Sep 15 22:11:47 localhost kernel: ip_tables: (C) 2000-2002 Netfilter core team
Sep 15 22:11:52 localhost dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Sep 15 22:11:53 localhost dhclient: DHCPACK from 192.168.1.1
Sep 15 22:11:53 localhost dhclient: bound to 192.168.1.103 -- renewal in 42953 seconds.


dmesg output when inserting card

cs: memory probe 0xa0000000-0xa0ffffff: clean.
hermes.c: 5 Apr 2002 David Gibson <[email protected]>
orinoco.c 0.11b (David Gibson <[email protected]> and others)
orinoco_cs.c 0.11b (David Gibson <[email protected]> and others)
divert: allocating divert_blk for eth0
eth0: Station identity 001f:0003:0000:0008
eth0: Looks like an Intersil firmware version 0.08
eth0: Ad-hoc demo mode supported
eth0: IEEE standard IBSS ad-hoc mode supported
eth0: WEP supported, 104-bit key
eth0: MAC address 00:04:E2:2A:29:58
eth0: Station name "Prism I"
eth0: ready
eth0: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f

Following is how 2.6 handles the same event:

original dmesg output


Linux Kernel Card Services 3.1.22
options: [pci] [cardbus] [pm]
PCI: Assigned IRQ 9 for device 0000:00:0a.0
Yenta: CardBus bridge found at 0000:00:0a.0 [0e11:b103]
Yenta: Enabling burst memory read transactions
Yenta: Using CSCINT to route CSC interrupts to PCI
Yenta: Routing CardBus interrupts to PCI
Yenta: ISA IRQ list 0018, PCI irq9
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x200-0x207 0x220-0x22f 0x378-0x37f 0x388-0x38f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.



/var/log/messages on inserting card


Sep 15 22:02:58 localhost cardmgr[1482]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
Sep 15 22:02:58 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe hermes'
Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco'
Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco_cs'
Sep 15 22:02:58 localhost cardmgr[1482]: executing: './network start eth0'
Sep 15 22:02:58 localhost /etc/hotplug/net.agent: NET add event not supported
Sep 15 22:03:45 localhost login(pam_unix)[1783]: session closed for user root
Sep 15 22:03:50 localhost login(pam_unix)[1894]: session opened for user tmolina by (uid=0)


dmesg on inserting card


cs: memory probe 0xa0000000-0xa0ffffff: clean.
orinoco.c 0.13e (David Gibson <[email protected]> and others)
orinoco_cs.c 0.13e (David Gibson <[email protected]> and others)
eth0: Station identity 001f:0003:0000:0008
eth0: Looks like an Intersil firmware version 0.8.3
eth0: Ad-hoc demo mode supported
eth0: IEEE standard IBSS ad-hoc mode supported
eth0: WEP supported, 104-bit key
eth0: MAC address 00:04:E2:2A:29:58
eth0: Station name "Prism I"
eth0: ready
eth0: index 0x01: Vcc 5.0, irq 3, io 0x0100-0x013f


Attachments:
sysconfig (24.57 kB)
sysinterrupts (377.00 B)
sysioports (568.00 B)
syslspci (4.93 kB)
sysverlinux (879.00 B)
Download all attachments

2003-09-19 16:12:31

by Stephen Hemminger

[permalink] [raw]
Subject: Re: 2.6.0-test problems loading network drivers


>
> Sep 15 22:02:58 localhost cardmgr[1482]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
> Sep 15 22:02:58 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
> Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe hermes'
> Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco'
> Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco_cs'
> Sep 15 22:02:58 localhost cardmgr[1482]: executing: './network start eth0'
> Sep 15 22:02:58 localhost /etc/hotplug/net.agent: NET add event not supported
> Sep 15 22:03:45 localhost login(pam_unix)[1783]: session closed for user root
> Sep 15 22:03:50 localhost login(pam_unix)[1894]: session opened for user tmolina by (uid=0)

network hotplug changed slightly in 2.6 so the kernel passes: 'add' instead of 'register'
to the scripts. This is because network devices are kobjects and go through the generic
hotplug path.

The fix is:
--- /etc/hotplug/net.agent.old 2003-09-19 09:10:06.390819425 -0700
+++ /etc/hotplug/net.agent 2003-09-19 09:10:34.545620648 -0700
@@ -26,7 +26,7 @@
fi

case $ACTION in
-register)
+add|register)
# Don't do anything if the network is stopped
if [ ! -f /var/lock/subsys/network ]; then
exit 0

2003-09-19 19:12:35

by Greg KH

[permalink] [raw]
Subject: Re: 2.6.0-test problems loading network drivers

On Fri, Sep 19, 2003 at 09:12:04AM -0700, Stephen Hemminger wrote:
>
> >
> > Sep 15 22:02:58 localhost cardmgr[1482]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
> > Sep 15 22:02:58 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
> > Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe hermes'
> > Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco'
> > Sep 15 22:02:58 localhost cardmgr[1482]: executing: 'modprobe orinoco_cs'
> > Sep 15 22:02:58 localhost cardmgr[1482]: executing: './network start eth0'
> > Sep 15 22:02:58 localhost /etc/hotplug/net.agent: NET add event not supported
> > Sep 15 22:03:45 localhost login(pam_unix)[1783]: session closed for user root
> > Sep 15 22:03:50 localhost login(pam_unix)[1894]: session opened for user tmolina by (uid=0)
>
> network hotplug changed slightly in 2.6 so the kernel passes: 'add' instead of 'register'
> to the scripts. This is because network devices are kobjects and go through the generic
> hotplug path.
>
> The fix is:
> --- /etc/hotplug/net.agent.old 2003-09-19 09:10:06.390819425 -0700
> +++ /etc/hotplug/net.agent 2003-09-19 09:10:34.545620648 -0700
> @@ -26,7 +26,7 @@
> fi
>
> case $ACTION in
> -register)
> +add|register)
> # Don't do anything if the network is stopped
> if [ ! -f /var/lock/subsys/network ]; then
> exit 0

This fix is in the last released version of the hotplug package if
people just want to use that instead of patching their scripts (it also
has some other 2.6 fixes in it.)

thanks,

greg k-h