Re: Oops in rtl8139, and more
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
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 ...
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 ...
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