2004-10-01 00:13:46

by Hubert Tonneau

[permalink] [raw]
Subject: USB storage crash report in 2.6 SMP

Copying a large amount of datas (several gigabytes) between two USB 2.0 attached
disks will crash any Linux 2.6 SMP kernel, including 2.6.9-rc3.

The stack report is:
qh_completions 0x7B/0x118 [ehci_hcd]
scan_async
ehci_work
echi_irq
handle_IRQ_event
commnon_interrupt
default_idle
default_idle
cpu_idle

The crash will append on any attempt to copy something like 100 GB.
Copying something like 1 GB or less works nicely.
Switching to an UP kernel solves the problem.
Switching to a 2.4 kernel solves the problem.
I tested it on two different machines, with two different disks sets.


2004-10-02 18:10:03

by Olaf Hering

[permalink] [raw]
Subject: Re: USB storage crash report in 2.6 SMP

On Thu, Sep 30, Hubert Tonneau wrote:

> Copying a large amount of datas (several gigabytes) between two USB 2.0 attached
> disks will crash any Linux 2.6 SMP kernel, including 2.6.9-rc3.
>
> The stack report is:
> qh_completions 0x7B/0x118 [ehci_hcd]

this was fixed a while ago, but not yet synced with Linus.

...
Maybe the call chain is something like this:

ehci_irq
spin_lock (&ehci->lock)
ehci_work ehci_watchdog
end_unlink_async
qh_completions
ehci_urb_done
spin_unlock (&ehci->lock)
usb_hcd_giveback_urb spin_lock (&ehci->lock)
ehci_work

now ehci_watchdog could proceed until usb_hcd_giveback_urb returns, then
ehci_urb_done must wait until the watchdog is done. both seem to operate
on the same list. I cant test it right now, box crashed.
...


--
USB is for mice, FireWire is for men!

sUse lINUX ag, nÜRNBERG


Attachments:
(No filename) (947.00 B)
ehci-0802.patch (1.47 kB)
Download all attachments