Re: Oops in rtl8139, and more

2001-01-15 Thread Manfred Spraul

The problem is clear:
rtl8139_resume() unconditionally restarts the hardware, even if the
network was not yet started.
The hardware immediately notices something, and sends an interrupt.

The oops happens during rtl8139_open():
the function calls request_irq(), but assumes that the interrupts are
still disabled from the initial rtl8139_init_one(). Thus an interrupt
arrives before the driver structures are initialized.

Jeff, it seems that rtl8139_suspend() and rtl8139_resume() should check
if the nic was opened before stopping/restarting the hardware.

> >>EIP; c01a180e<=
>  Trace; c01a1d53 
>  Trace; c010a16d 
>  Trace; c010a2d7 
>  Trace; c0108f68 
>  Trace; c010a6a1 
>  Trace; c01a1c84 
>  Trace; c010a3a8 
>  Trace; c01a067e 
>  Trace; c01f4f90 


--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Re: Oops in rtl8139, and more

2001-01-15 Thread Manfred Spraul

The problem is clear:
rtl8139_resume() unconditionally restarts the hardware, even if the
network was not yet started.
The hardware immediately notices something, and sends an interrupt.

The oops happens during rtl8139_open():
the function calls request_irq(), but assumes that the interrupts are
still disabled from the initial rtl8139_init_one(). Thus an interrupt
arrives before the driver structures are initialized.

Jeff, it seems that rtl8139_suspend() and rtl8139_resume() should check
if the nic was opened before stopping/restarting the hardware.

 EIP; c01a180e rtl8139_rx_interrupt+b6/264   =
  Trace; c01a1d53 rtl8139_interrupt+cf/164
  Trace; c010a16d handle_IRQ_event+31/5c
  Trace; c010a2d7 do_IRQ+6b/ac
  Trace; c0108f68 ret_from_intr+0/20
  Trace; c010a6a1 setup_irq+81/98
  Trace; c01a1c84 rtl8139_interrupt+0/164
  Trace; c010a3a8 request_irq+90/ac
  Trace; c01a067e rtl8139_open+1e/128
  Trace; c01f4f90 dev_open+48/a4


--
Manfred
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/



Oops in rtl8139, and more ...

2001-01-14 Thread Konstantin Cherenkoff

Hello:

I have an ADSL Internet connection and use dhcpcd (ver. 1.3.19-pl2) as
DHCP client. Everything works OK, but in one particular situation I always
get a kernel Oops. Here's how:

1) Boot into runlevel 1
2) Put computer into suspend mode (it wakes up immediately)
3) Change to runlevel 3

When dhcpcd is started from boot script, I immediately get the following
Oops (translated here via ksymoops):


ksymoops 2.3.7 on i686 2.4.0-ac4.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-ac4/ (default)
 -m /boot/System.map (specified)

No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod file?
Unable to handle kernel NULL pointer derefernce at virtual address 
*pde = 
Oops: 
CPU: 0
EIP: 0010 : []
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010246
eax: c500100c   ebx: 0001 ecx: c115bd40   edx: 
esi:    edi: c500100  ebp: c115bc00esp: c39f3d6c
ds: 0018es: 0018   ss: 0018
Process dhcpcd (pid: 57, stackpage=c39f3000)
Stack: 0001 c500103e c5001000 c115bc00 c01249c0 c5001037  c39f
   0001 c01a1d53 c115bc00 c115bd40 c5001000 c11f0f80 0401 000b
   c39f3e04  0014 c115bd40 c010a16d 000b c115bc00 c39f3e04
Call trace:  
 
 
 
 
Code: 8b 04 16 89 44 24 18 c1 6c 24 18 10 8b 6c 24 18 83 c5 fc 81

>>EIP; c01a180e<=
Trace; c500103e 
Trace; c5001000 
Trace; c01249c0 <___wait_on_page+9c/a4>
Trace; c5001037 
Trace; c01a1d53 
Trace; c5001000 
Trace; c010a16d 
Trace; c010a2d7 
Trace; c0108f68 
Trace; c010a6a1 
Trace; c01a1c84 
Trace; c010a3a8 
Trace; c01a067e 
Trace; c01a1c84 
Trace; c01f4f90 
Trace; c01f5bad 
Trace; c0219634 
Trace; c0125990 
Trace; c0122b00 
Trace; c021b2ab 
Trace; c01f0491 
Trace; c022a9e1 
Trace; c01f0a05 
Trace; c01f09e4 
Trace; c013ec97 
Trace; c0108ebf 
Code;  c01a180e 
 <_EIP>:
Code;  c01a180e<=
   0:   8b 04 16  mov(%esi,%edx,1),%eax   <=
Code;  c01a1811 
   3:   89 44 24 18   mov%eax,0x18(%esp,1)
Code;  c01a1815 
   7:   c1 6c 24 18 10shrl   $0x10,0x18(%esp,1)
Code;  c01a181a 
   c:   8b 6c 24 18   mov0x18(%esp,1),%ebp
Code;  c01a181e 
  10:   83 c5 fc  add$0xfffc,%ebp
Code;  c01a1821 
  13:   81 00 00 00 00 00 addl   $0x0,(%eax)

Kernel panic: Aiee, killing interrupt handler !

1 warning issued.  Results may not be reliable.


 

When I try to do emergency sync before rebooting, I see this:

SysReq: Emergency Sync
Syncing device 03:02 ... Scheduling in interrupt
Kernel BUG at sched.c: 688 !

And then, oops #2 ...

ksymoops 2.3.7 on i686 2.4.0-ac4.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-ac4/ (default)
 -m /boot/System.map (specified)

No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod file?
Invalid operand: 
CPU: 0
EIP: 0010 : []
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010282
eax: 001b   ebx:  ecx: 0001   edx: 0001
ds: 0018es: 0018   ss: 0018
Process dhcpcd (pid: 57, stackpage=c39f3000)
Stack: c0240a45 c0240b96 02b0 c11ed180 c39f2000 c39f3be8 c11ed1c8 c39f2000
   c01abe8f c115c160  c017d3b4 0282 c39f3bc8 c011a33c c39f2000
   c11ed180  c39f2000 c03363bc c11ed1c8 c0131f48 c11ed840 0302
Call trace:  
 
 
 
 
 

Code: 0f 0b 8d 65 bc 5b 5e 5f 89 ec 5d c3 8d 76 00 55 89 e5 83 ec  

>>EIP; c0114421<=
Trace; c01abe8f 
Trace; c017d3b4 
Trace; c011a33c <__run_task_queue+50/64>
Trace; c0131f48 <__wait_on_buffer+48/90>
Trace; c01320d4 
Trace; c01321b0 
Trace; c019f2ca 
Trace; c019f31b 
Trace; c01163ee 
Trace; c0118eb3 
Trace; c010939e 
Trace; c0113943 
Trace; c0113604 
Trace; c01b0764 
Trace; c01abae0 
Trace; c01abada 
Trace; c0150db9 
Trace; c0108fdc 
Trace; c5001000 
Trace; c500100c 
Trace; c01a180e 
Trace; c500103e 
Trace; c5001000 
Trace; c01249c0 <___wait_on_page+9c/a4>
Trace; c5001037 
Trace; c01a1d53 
Trace; c5001000 
Trace; c01a067e 
Trace; c01a1c84 
Trace; c01f4f90 
Trace; c01f5bad 
Trace; c0219634 
Trace; c0125990 
Trace; c0122b00 
Trace; c021b2ab 
Trace; c01f0491 
Trace; c022a9e1 
Trace; c01f0a05 
Trace; c01f09e4 
Trace; c013ec97 
Trace; c0108ebf 
Code;  c0114421 
 <_EIP>:
Code;  c0114421<=
   0:   0f 0b ud2a  <=
Code;  c0114423 
   2:   8d 65 bc  lea0xffbc(%ebp),%esp
Code;  c0114426 
   5:   5bpop%ebx
Code;  c0114427 
   6:   5epop%esi
Code;  c0114428 
   7:   

Oops in rtl8139, and more ...

2001-01-14 Thread Konstantin Cherenkoff

Hello:

I have an ADSL Internet connection and use dhcpcd (ver. 1.3.19-pl2) as
DHCP client. Everything works OK, but in one particular situation I always
get a kernel Oops. Here's how:

1) Boot into runlevel 1
2) Put computer into suspend mode (it wakes up immediately)
3) Change to runlevel 3

When dhcpcd is started from boot script, I immediately get the following
Oops (translated here via ksymoops):


ksymoops 2.3.7 on i686 2.4.0-ac4.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-ac4/ (default)
 -m /boot/System.map (specified)

No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod file?
Unable to handle kernel NULL pointer derefernce at virtual address 
*pde = 
Oops: 
CPU: 0
EIP: 0010 : [c01a180e]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010246
eax: c500100c   ebx: 0001 ecx: c115bd40   edx: 
esi:    edi: c500100  ebp: c115bc00esp: c39f3d6c
ds: 0018es: 0018   ss: 0018
Process dhcpcd (pid: 57, stackpage=c39f3000)
Stack: 0001 c500103e c5001000 c115bc00 c01249c0 c5001037  c39f
   0001 c01a1d53 c115bc00 c115bd40 c5001000 c11f0f80 0401 000b
   c39f3e04  0014 c115bd40 c010a16d 000b c115bc00 c39f3e04
Call trace: c500103e c5001000 c01249c0 c5001037 c01a1d53 c5001000
c010a16d c010a2d7 c0108f68 c010a6a1 c01a1c84 c010a3a8
c01a067e c01a1c84 c01f4f90 c01f5bad c0219634 c0125990
c0122b00 c021b2ab c01f0491 c022a9e1 c01f0a05 c01f09e4
c013ec97 c0108ebf
Code: 8b 04 16 89 44 24 18 c1 6c 24 18 10 8b 6c 24 18 83 c5 fc 81

EIP; c01a180e rtl8139_rx_interrupt+b6/264   =
Trace; c500103e END_OF_CODE+4cc1de6/
Trace; c5001000 END_OF_CODE+4cc1da8/
Trace; c01249c0 ___wait_on_page+9c/a4
Trace; c5001037 END_OF_CODE+4cc1ddf/
Trace; c01a1d53 rtl8139_interrupt+cf/164
Trace; c5001000 END_OF_CODE+4cc1da8/
Trace; c010a16d handle_IRQ_event+31/5c
Trace; c010a2d7 do_IRQ+6b/ac
Trace; c0108f68 ret_from_intr+0/20
Trace; c010a6a1 setup_irq+81/98
Trace; c01a1c84 rtl8139_interrupt+0/164
Trace; c010a3a8 request_irq+90/ac
Trace; c01a067e rtl8139_open+1e/128
Trace; c01a1c84 rtl8139_interrupt+0/164
Trace; c01f4f90 dev_open+48/a4
Trace; c01f5bad dev_change_flags+51/108
Trace; c0219634 devinet_ioctl+268/5b4
Trace; c0125990 filemap_nopage+0/448
Trace; c0122b00 handle_mm_fault+e8/164
Trace; c021b2ab inet_ioctl+133/198
Trace; c01f0491 sockfd_lookup+11/74
Trace; c022a9e1 packet_ioctl+315/340
Trace; c01f0a05 sock_ioctl+21/28
Trace; c01f09e4 sock_ioctl+0/28
Trace; c013ec97 sys_ioctl+1fb/214
Trace; c0108ebf system_call+33/38
Code;  c01a180e rtl8139_rx_interrupt+b6/264
 _EIP:
Code;  c01a180e rtl8139_rx_interrupt+b6/264   =
   0:   8b 04 16  mov(%esi,%edx,1),%eax   =
Code;  c01a1811 rtl8139_rx_interrupt+b9/264
   3:   89 44 24 18   mov%eax,0x18(%esp,1)
Code;  c01a1815 rtl8139_rx_interrupt+bd/264
   7:   c1 6c 24 18 10shrl   $0x10,0x18(%esp,1)
Code;  c01a181a rtl8139_rx_interrupt+c2/264
   c:   8b 6c 24 18   mov0x18(%esp,1),%ebp
Code;  c01a181e rtl8139_rx_interrupt+c6/264
  10:   83 c5 fc  add$0xfffc,%ebp
Code;  c01a1821 rtl8139_rx_interrupt+c9/264
  13:   81 00 00 00 00 00 addl   $0x0,(%eax)

Kernel panic: Aiee, killing interrupt handler !

1 warning issued.  Results may not be reliable.


 

When I try to do emergency sync before rebooting, I see this:

SysReq: Emergency Sync
Syncing device 03:02 ... Scheduling in interrupt
Kernel BUG at sched.c: 688 !

And then, oops #2 ...

ksymoops 2.3.7 on i686 2.4.0-ac4.  Options used
 -V (default)
 -k /proc/ksyms (default)
 -l /proc/modules (default)
 -o /lib/modules/2.4.0-ac4/ (default)
 -m /boot/System.map (specified)

No modules in ksyms, skipping objects
Warning (read_lsmod): no symbols in lsmod, is /proc/modules a valid lsmod file?
Invalid operand: 
CPU: 0
EIP: 0010 : [c0114421]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010282
eax: 001b   ebx:  ecx: 0001   edx: 0001
ds: 0018es: 0018   ss: 0018
Process dhcpcd (pid: 57, stackpage=c39f3000)
Stack: c0240a45 c0240b96 02b0 c11ed180 c39f2000 c39f3be8 c11ed1c8 c39f2000
   c01abe8f c115c160  c017d3b4 0282 c39f3bc8 c011a33c c39f2000
   c11ed180  c39f2000 c03363bc c11ed1c8 c0131f48 c11ed840 0302
Call trace: c01abe8f c017d3b4 c011a33c c0131f48 c01320d4 c01321b0
c019f2ca c019f31b c01163ee c0118eb3 c010939e c0113943
c0113604 c01b0764 c01abae0 c01abada c0150db9 c0108fdc
c5001000 c500100c c01a180e c500103e c5001000 c01249c0
c5001037 c01a1d53 c5001000 c01a067e c01a1c84 c01f4f90
c01f5bad c0219634 c0125990 c0122b00 c021b2ab c01f0491
c022a9e1