2.6.9 SMP: via-rhine cannot be upped.

From: Denis Vlasenko
Date: Sat Oct 23 2004 - 08:03:47 EST


I reported this yesterday but somehow managed to mess up configs
and accidentally compiled 2.6.9 for SMP! :(

I just checked that it does not happen on non-SMP 2.6.9.
2.6.9-preempt is working too.

Here goes a problem description again.

I have an onboard VIA eth:

# lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333]
00:01.0 PCI bridge: VIA Technologies, Inc. VT8366/A/7 [Apollo KT266/A/333 AGP]
00:0a.0 Network controller: Texas Instruments ACX 111 54Mbps Wireless Interface
00:0c.0 Network controller: Harris Semiconductor D-Links DWL-g650 A1 (rev 01)
00:10.0 USB Controller: VIA Technologies, Inc. VT6202 [USB 2.0 controller] (rev 80)
00:10.1 USB Controller: VIA Technologies, Inc. VT6202 [USB 2.0 controller] (rev 80)
00:10.2 USB Controller: VIA Technologies, Inc. VT6202 [USB 2.0 controller] (rev 80)
00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge
00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C/VT8235 PIPC Bus Master IDE (rev 06)
00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50)
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74)
01:00.0 VGA compatible controller: nVidia Corporation NV11 [GeForce2 MX/MX 400] (rev a1)

It cannot be upped:

# ip l set dev if up
SIOCSIFFLAGS: Function not implemented
# ifconfig if up
SIOCSIFFLAGS: Function not implemented
# busybox ip l set dev if up
SIOCSIFFLAGS: Function not implemented

(NB: ip and ifconfig are not busyboxed, they are "standard" ones)

Strace (busybox one is smallest):

execve("/usr/bin/busybox", ["busybox", "ip", "l", "set", "dev", "if", "up"], [/* 28 vars */]) = 0
fcntl64(0, F_GETFD)                     = 0
fcntl64(1, F_GETFD)                     = 0
fcntl64(2, F_GETFD)                     = 0
uname({sys="Linux", node="shadow", ...}) = 0
geteuid32()                             = 0
getuid32()                              = 0
getegid32()                             = 0
getgid32()                              = 0
brk(0)                                  = 0x81ab000
brk(0x81ac000)                          = 0x81ac000
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
ioctl(4, 0x8913, 0xbffff9e0)            = 0
ioctl(4, 0x8914, 0xbffff9e0)            = -1 ENOSYS (Function not implemented)
dup(2)                                  = 5
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fstat64(5, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 2), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40000000
_llseek(5, 0, 0xbffff830, SEEK_CUR)     = -1 ESPIPE (Illegal seek)
write(5, "SIOCSIFFLAGS: Function not imple"..., 39) = 39
close(5)                                = 0
munmap(0x40000000, 4096)                = 0
close(4)                                = 0
write(2, "BusyBox v1.00-pre8 (2004.03.31-2"..., 295) = 295
_exit(1)

I booted with init=/bin/sh and ran 'ip l set dev eth0 up'
- it fails under 2.6.9-smp. This rules out my userspace setup
being somehow involved (for example, the fact that I rename iface
from 'eth0' to 'if' does not contribute to the bug).

My 2.6.9-smp config is attached.
--
vda

Attachment: .config.bz2
Description: BZip2 compressed data