Save irq state in uhci_stop so that the irqsave/irqrestore's in all the free_pending and remove_pending code can be eliminated.
diff -Nru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c --- a/drivers/usb/host/uhci-hcd.c Mon Feb 9 12:56:00 2004 +++ b/drivers/usb/host/uhci-hcd.c Mon Feb 9 12:56:00 2004 @@ -2448,6 +2448,7 @@ static void uhci_stop(struct usb_hcd *hcd) { struct uhci_hcd *uhci = hcd_to_uhci(hcd); + unsigned long flags; del_timer_sync(&uhci->stall_timer); @@ -2455,6 +2456,7 @@ * At this point, we're guaranteed that no new connects can be made * to this bus since there are no more parents */ + local_irq_save(flags); uhci_free_pending_qhs(uhci); uhci_free_pending_tds(uhci); uhci_remove_pending_qhs(uhci); @@ -2463,7 +2465,8 @@ uhci_free_pending_qhs(uhci); uhci_free_pending_tds(uhci); - + local_irq_restore(flags); + release_uhci(uhci); } ------------------------------------------------------- The SF.Net email is sponsored by EclipseCon 2004 Premiere Conference on Open Tools Development and Integration See the breadth of Eclipse activity. February 3-5 in Anaheim, CA. http://www.eclipsecon.org/osdn _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel