usb-uhci.c: fix for PCI-lockups/IRQ problems
PATCH 1/1 usb-uhci.c: fix for PCI-lockups/IRQ problems
Hi,
test12-pre3 had a large set of patches to usb-uhci.c. One small detail of this patch can make the driver to lockup the PCI bus with certain UHCI-chips (only Intel but not VIA, of course not on my machines...). This patch should fix that.
It also includes Linus' patch for the IRQ-setup.
Signature · 3 lines
Georg Acher, [email protected] http://www.in.tum.de/~acher/ "Oh no, not again !" The bowl of petunias
drivers/usb/usb-uhci.c +7 -3
@@ -16,7 +16,7 @@* (C) Copyright 1999 Randy Dunlap * (C) Copyright 1999 Gregory P. Smith * -* $Id: usb-uhci.c,v 1.249 2000/11/21 12:03:34 acher Exp $ +* $Id: usb-uhci.c,v 1.251 2000/11/30 09:47:54 acher Exp $ */ #include <linux/config.h>
@@ -52,7 +52,7 @@/* This enables an extra UHCI slab for memory debugging */ #define DEBUG_SLAB -#define VERSTR "$Revision: 1.249 $ time " __TIME__ " " __DATE__ +#define VERSTR "$Revision: 1.251 $ time " __TIME__ " " __DATE__#include <linux/usb.h> #include "usb-uhci.h"
@@ -582,6 +582,7 @@fill_td (td,0 *TD_CTRL_IOC ,0 ,0 );// generate 1ms interrupt (enabled on demand) insert_td (s, qh, td,0 ); + qh->hw.qh.element &= ~UHCI_PTR_TERM ;// remove TERM bit s->td1ms=td;dbg ("allocating qh: bulk_chain" );
@@ -2916,6 +2917,9 @@return -1 ; } +/* Enable PIRQ */ +pci_write_config_word (dev,USBLEGSUP ,USBLEGSUP_DEFAULT ); + s->irq = irq;if (uhci_start_usb (s) <0 ) {
@@ -2951,7 +2955,7 @@if (check_region (io_addr, io_size))break ;/* disable legacy emulation */ -pci_write_config_word (dev,USBLEGSUP ,USBLEGSUP_DEFAULT ); +pci_write_config_word (dev,USBLEGSUP ,0 );return alloc_uhci (dev, dev->irq, io_addr, io_size); }
Quoted 6 lines · Georg Acher
Hi,
test12-pre3 had a large set of patches tousb-uhci.c. One small detail of this patch can make the driver to lockup the PCI bus with certain UHCI-chips (only Intel but not VIA, of course not on my machines...). This patch should fix that. It also includes Linus' patch for the IRQ-setup.
I am testing with this patch applied.
Here's an OOPS I got when plugging and unplugging my USB mouse multiple times.
Unable to handle kernel paging request at virtual address 01cc0035 c589352c *pde = 00000000 Oops: 0000 CPU: 0 EIP: 0010:[<c589352c>]
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010206
eax: 01cc0011 ebx: 5508ec83 ecx: c4d39ef4 edx: c4a22b20
esi: c4a22b20 edi: c4d39f18 ebp: 00000064 esp: c4d39eb4
ds: 0018 es: 0018 ss: 0018
Process khubd (pid: 104, stackpage=c4d39000)
Stack: c4d39f08 c4a22b20 c4d39f18 00000064 00000000 00000286 c5825f46 c4a22b20
c582605a c4a22b20 c1fbd400 80000180 c1d39600 c4d39fdc c4d38000
c4d39f08
c4d39f08 00000000 00000000 c4d39f0c c4d39f0c 00000000 c4d39f20
c4d39f20
Call Trace: [<c5825f46>] [<c582605a>] [<c5826183>] [<c5826210>] [<c582855d>] [<c5829324>] [<c582fcc8>]
[<c58310cc>] [<c5829515>] [<c0108f0f>] [<c5825000>] [<c5827dbc>]
Code: 8b 40 24 89 44 24 14 83 78 10 00 75 0a b8 ed ff ff ff e9 4fQuoted 1 line
Quoted 1 line
EIP;
c589352c<[usb-uhci]uhci_submit_urb+1c/28c> <=====
Trace; c5825f46 <[usbcore]usb_submit_urb+1e/30> Trace; c582605a <[usbcore]usb_start_wait_urb+aa/174> Trace; c5826183 <[usbcore]usb_internal_control_msg+5f/74> Trace; c5826210 <[usbcore]usb_control_msg+78/98> Trace; c582855d <[usbcore]usb_get_port_status+35/3c> Trace; c5829324 <[usbcore]usb_hub_events+b0/27c> Trace; c582fcc8 <[usbcore]usb_bandwidth_option+26e0/271c> Trace; c58310cc <[usbcore]khubd_wait+4/c>
Trace; c5829515 <[usbcore]usb_hub_thread+25/4c> Trace; c0108f0f <kernel_thread+23/30>
Trace; c5825000 <[nls_iso8859-1].data.end+15e5/1645> Trace; c5827dbc <[usbcore]init_module+0/0>
Code; c589352c <[usb-uhci]uhci_submit_urb+1c/28c> 00000000 <_EIP>:
Code; c589352c <[usb-uhci]uhci_submit_urb+1c/28c> <=====
0: 8b 40 24 mov 0x24(%eax),%eax <=====
Code; c589352f <[usb-uhci]uhci_submit_urb+1f/28c>
3: 89 44 24 14 mov %eax,0x14(%esp,1)
Code; c5893533 <[usb-uhci]uhci_submit_urb+23/28c>
7: 83 78 10 00 cmpl $0x0,0x10(%eax)
Code; c5893537 <[usb-uhci]uhci_submit_urb+27/28c>
b: 75 0a jne 17 <_EIP+0x17> c5893543
<[usb-uhci]uhci_submit_urb+33/28c>
Code; c5893539 <[usb-uhci]uhci_submit_urb+29/28c>
d: b8 ed ff ff ff mov $0xffffffed,%eax
Code; c589353e <[usb-uhci]uhci_submit_urb+2e/28c>
12: e9 4f 00 00 00 jmp 66 <_EIP+0x66> c5893592
<[usb-uhci]uhci_submit_urb+82/28c>
I hope this helps,
Miles
-
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/
linux-2.4.0-test12 problem with init
In reply to Georg AcherHi
I reported a problem with using 'init 1' with 2.4.0-test12-pre8 and was told it wasn't a kernel problem. I beg to differ, as it still happens with 2.4.0-test12 but not with 2.4.0-test12-pre7. What changed between pre7 and pre8 to make 'init 1' behave like 'init 5'? 'init 3' works correctly. The only change I've made is to build the new kernel.
The screen messages say it is going into single user mode, but it just doesn't.
Have I missed something that should be changed in the configuration?
Signature · 23 lines
Regards
Bill Maidment
Computer Systems Consultant
_________________________________________
Maidment Enterprises Pty Ltd
42 Woy Woy Bay Road
Woy Woy Bay NSW 2256
_________________________________________
Home Phone 02 4342 6716
Work Phone 02 9927 3234
Mobile 0418 682 993
Home Email [email protected]
Work Email [email protected]
Web Page www.maidment.com.au
_________________________________________
-
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: linux-2.4.0-test12 problem with init
Quoted 10 lines · Bill Maidment
Hi
I reported a problem with using 'init 1' with 2.4.0-test12-pre8 and was told it wasn't a kernel problem. I beg to differ, as it still happens with 2.4.0-test12 but not with 2.4.0-test12-pre7. What changed between pre7 and pre8 to make 'init 1' behave like 'init 5'? 'init 3' works correctly. The only change I've made is to build the new kernel.
The screen messages say it is going into single user mode, but it just doesn't.
Ding. Plz send me ps lawx output at failure time via private mail.
-Mike
-
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/