On Sat, 8 Jan 2005, Srihari Vijayaraghavan wrote:
> Alan,
>
> I have made a couple of observations:
> 1. While it is still easy to trigger this bug without USB Storage Debug
> Option
> in vanilla 2.6.10, I cannot reproduce the bug with debug option. Perhaps it
> changes some timings.
Certainly it changes timings.
> (Without debug option, within a dozen plug/unplug events I can reliably
> trigger the bug, but OTOH with debug options I cannot even after 50 events.
> Maybe I should run my desktop with debug option for better stability. :-))
>
> 2. When running without debug option, the D state "hald" process appears
> first, and upon unplugging the drive an OOPS appears on the very next
> plugging of the drive.
It sounds like the problem occurs in hald, and the later oops is just a
symptom whose cause came much earlier.
> Here is the new OOPS:
>
> usb-storage: device found at 7
> usb-storage: waiting for device to settle before scanning
> Unable to handle kernel paging request at 0000001600000019 RIP:
> <ffffffffa0108259>{:usb_storage:bus_reset+73}
I don't suppose you're familiar enough with 64-bit assembler to be able to
decode the low-level instruction listing and tell me which line of the
bus_reset routine corresponds to offset 73?
Failing that, maybe you can try applying this patch. It will print some
extra debugging information in the system log, even with
CONFIG_USB_STORAGE_DEBUG not set.
Alan Stern
--- 2.6.10-orig/drivers/usb/storage/scsiglue.c Mon Jan 3 09:39:36 2005
+++ 2.6.10/drivers/usb/storage/scsiglue.c Fri Jan 7 22:59:51 2005
@@ -268,9 +268,15 @@
/* This is always called with scsi_lock(srb->host) held */
static int bus_reset(struct scsi_cmnd *srb)
{
- struct us_data *us = (struct us_data *)srb->device->host->hostdata[0];
+ struct us_data *us;
int result, rc;
+ printk(KERN_INFO "In bus_reset, srb: %p\n", srb);
+ printk(" device: %p\n", srb->device);
+ printk(" host: %p\n", srb->device->host);
+ printk(" hostdata: %p\n", (void *) srb->device->host->hostdata[0]);
+
+ us = (struct us_data *)srb->device->host->hostdata[0];
US_DEBUGP("%s called\n", __FUNCTION__);
scsi_unlock(srb->device->host);
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel