Em Wednesday 20 February 2008 19:05:50 Herton Ronaldo Krzesinski escreveu:
> Em Wednesday 20 February 2008 17:55:35 Alan Stern escreveu:
> >
> > Maybe with a complete log the cause will be evident.  If you want to
> > experiment a little, you could try adding some printk lines to the
> > hub_reset_resume() routine in drivers/usb/core/hub.c.  It would be nice
> > to know for sure which branch was taken inside the "if (child) {"
> > block.  Another good place to look is in finish_port_resume() in the
> > same source file; does the "if (udev->reset_resume)" test succeed?
> 
> Ok, will try this.

I inserted some dev_printk/printk's, I paste here for reference. I went further
trying to debug, so that's why there is more things, I'll explain:

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 68fc521..f365bd4 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -1570,8 +1570,10 @@ static int hub_port_wait_reset(struct usb_hub *hub, int 
port1,
 
                /* read and decode port status */
                ret = hub_port_status(hub, port1, &portstatus, &portchange);
-               if (ret < 0)
+               if (ret < 0) {
+                       printk("hub_port_wait_reset ret == %d\n", ret);
                        return ret;
+               }
 
                /* Device went away? */
                if (!(portstatus & USB_PORT_STAT_CONNECTION))
@@ -1581,6 +1583,8 @@ static int hub_port_wait_reset(struct usb_hub *hub, int 
port1,
                if ((portchange & USB_PORT_STAT_C_CONNECTION))
                        return -ENOTCONN;
 
+               printk("hub_port_wait_reset successful or delayed\n");
+
                /* if we`ve finished resetting, then break out of the loop */
                if (!(portstatus & USB_PORT_STAT_RESET) &&
                    (portstatus & USB_PORT_STAT_ENABLE)) {
@@ -1796,8 +1800,10 @@ static int finish_port_resume(struct usb_device *udev)
         * operation is carried out here, after the port has been
         * resumed.
         */
-       if (udev->reset_resume)
+       if (udev->reset_resume) {
+               dev_printk(KERN_DEBUG, &udev->dev, "finish_port_resume: 
udev->reset_resume enabled\n");
                status = usb_reset_device(udev);
+       }
 
        /* 10.5.4.5 says be sure devices in the tree are still there.
         * For now let's assume the device didn't go crazy on resume,
@@ -2032,12 +2038,14 @@ static int hub_reset_resume(struct usb_interface *intf)
 
                if (child) {
 
+                       dev_printk (KERN_DEBUG, hub->intfdev, "%s: child 
TRUE\n", __FUNCTION__);
                        /* For "USB_PERSIST"-enabled children we must
                         * mark the child device for reset-resume and
                         * turn off the connect-change status to prevent
                         * khubd from disconnecting it later.
                         */
                        if (USB_PERSIST && child->persist_enabled) {
+                               dev_printk (KERN_DEBUG, hub->intfdev, "%s: 
USB_PERSIST && child->persist_enabled\n", __FUNCTION__);
                                child->reset_resume = 1;
                                clear_port_feature(hdev, port1,
                                                USB_PORT_FEAT_C_CONNECTION);
@@ -2047,6 +2055,7 @@ static int hub_reset_resume(struct usb_interface *intf)
                         * we have to do a "logical" disconnect.
                         */
                        } else {
+                               dev_printk (KERN_DEBUG, hub->intfdev, "%s: 
hub_port_logical_disconnect\n", __FUNCTION__);
                                hub_port_logical_disconnect(hub, port1);
                        }
                }
@@ -3064,8 +3073,10 @@ int usb_reset_device(struct usb_device *udev)
        if (!parent_hdev->parent && !parent_hub->busy_bits[0])
                usb_enable_root_hub_irq(parent_hdev->bus);
 
-       if (ret < 0)
+       if (ret < 0) {
+               dev_dbg(&udev->dev, "usb_reset_device ret == %d\n", ret);
                goto re_enumerate;
+       }
  
        /* Device might have changed firmware (DFU or similar) */
        if (memcmp(&udev->descriptor, &descriptor, sizeof descriptor)



With this I get this log output:

[   56.909790] PM: Syncing filesystems ... done.
[   56.930590] Freezing user space processes ... (elapsed 0.02 seconds) done.
[   56.951450] Freezing remaining freezable tasks ... (elapsed 0.00 seconds) 
done.
[   56.951811] ACPI: Preparing to enter system sleep state S3
[   56.952507] Suspending console(s)
[   57.462787] uhci_hcd 0000:00:1d.1: release dev 2 ep81-INT, period 8, phase 
4, 118 us
[   57.463712] uhci_hcd 0000:00:1d.1: release dev 2 ep82-INT, period 8, phase 
4, 118 us
[   57.466626] usb 3-1: usb suspend
[   57.476792] usb 1-6: usb suspend
[   57.487754] usb 1-5: usb suspend
[   57.498723] usb 1-1: usb suspend
[   57.509688] hub 3-0:1.0: hub_suspend
[   57.509701] usb usb3: bus suspend
[   57.509706] usb usb3: suspend_rh
[   57.509732] hub 1-0:1.0: hub_suspend
[   57.509736] usb usb1: bus suspend
[   57.509740] ehci_hcd 0000:00:1d.7: suspend root hub
[   57.509776] drm_sysfs_suspend
[   57.510337] ACPI: PCI interrupt for device 0000:00:02.0 disabled
[   57.520927] ACPI handle has no context!
[   57.520954] ACPI handle has no context!
[   57.531930] ACPI: PCI interrupt for device 0000:00:1e.2 disabled
[   57.532050] ACPI: PCI interrupt for device 0000:00:1d.7 disabled
[   57.542596] ehci_hcd 0000:00:1d.7: --> PCI D3/wakeup
[   57.542625] uhci_hcd 0000:00:1d.3: uhci_suspend
[   57.542660] ACPI: PCI interrupt for device 0000:00:1d.3 disabled
[   57.542663] uhci_hcd 0000:00:1d.3: --> PCI D0/legacy
[   57.542667] uhci_hcd 0000:00:1d.2: uhci_suspend
[   57.542700] ACPI: PCI interrupt for device 0000:00:1d.2 disabled
[   57.542703] uhci_hcd 0000:00:1d.2: --> PCI D0/legacy
[   57.542707] uhci_hcd 0000:00:1d.1: uhci_suspend
[   57.542739] ACPI: PCI interrupt for device 0000:00:1d.1 disabled
[   57.542743] uhci_hcd 0000:00:1d.1: --> PCI D0/legacy
[   57.542746] uhci_hcd 0000:00:1d.0: uhci_suspend
[   57.542779] ACPI: PCI interrupt for device 0000:00:1d.0 disabled
[   57.542782] uhci_hcd 0000:00:1d.0: --> PCI D0/legacy
[   57.542782] Intel machine check architecture supported.
[   57.542795] Intel machine check reporting enabled on CPU#0.
[   57.542849] Back to C!
[   57.572279] PM: Writing back config space on device 0000:00:02.0 at offset 1 
(was 900007, writing 900003)
[   57.591858] PM: Writing back config space on device 0000:00:1c.0 at offset f 
(was 20100, writing 2010a)
[   57.591928] ACPI: PCI Interrupt 0000:00:1c.0[A] -> GSI 16 (level, low) -> 
IRQ 16
[   57.591937] PCI: Setting latency timer of device 0000:00:1c.0 to 64
[   57.591944] uhci_hcd 0000:00:1d.0: PCI legacy resume
[   57.591951] ACPI: PCI Interrupt 0000:00:1d.0[A] -> GSI 23 (level, low) -> 
IRQ 23
[   57.591959] PCI: Setting latency timer of device 0000:00:1d.0 to 64
[   57.591988] uhci_hcd 0000:00:1d.0: uhci_resume
[   57.591994] uhci_hcd 0000:00:1d.0: uhci_check_and_reset_hc: legsup = 0x0f30
[   57.591999] uhci_hcd 0000:00:1d.0: Performing full reset
[   57.592020] usb usb2: root hub lost power or was reset
[   57.592024] usb usb2: suspend_rh
[   57.592041] uhci_hcd 0000:00:1d.1: PCI legacy resume
[   57.592048] ACPI: PCI Interrupt 0000:00:1d.1[B] -> GSI 19 (level, low) -> 
IRQ 19
[   57.592056] PCI: Setting latency timer of device 0000:00:1d.1 to 64
[   57.592084] uhci_hcd 0000:00:1d.1: uhci_resume
[   57.592089] uhci_hcd 0000:00:1d.1: uhci_check_and_reset_hc: legsup = 0x0030
[   57.592093] uhci_hcd 0000:00:1d.1: Performing full reset
[   57.592113] usb usb3: root hub lost power or was reset
[   57.592116] usb usb3: suspend_rh
[   57.592170] uhci_hcd 0000:00:1d.2: PCI legacy resume
[   57.592179] ACPI: PCI Interrupt 0000:00:1d.2[C] -> GSI 18 (level, low) -> 
IRQ 18
[   57.592188] PCI: Setting latency timer of device 0000:00:1d.2 to 64
[   57.592216] uhci_hcd 0000:00:1d.2: uhci_resume
[   57.592221] uhci_hcd 0000:00:1d.2: uhci_check_and_reset_hc: legsup = 0x0030
[   57.592225] uhci_hcd 0000:00:1d.2: Performing full reset
[   57.592245] usb usb4: root hub lost power or was reset
[   57.592249] usb usb4: suspend_rh
[   57.592264] uhci_hcd 0000:00:1d.3: PCI legacy resume
[   57.592271] ACPI: PCI Interrupt 0000:00:1d.3[D] -> GSI 16 (level, low) -> 
IRQ 16
[   57.592279] PCI: Setting latency timer of device 0000:00:1d.3 to 64
[   57.592307] uhci_hcd 0000:00:1d.3: uhci_resume
[   57.592312] uhci_hcd 0000:00:1d.3: uhci_check_and_reset_hc: legsup = 0x0030
[   57.592315] uhci_hcd 0000:00:1d.3: Performing full reset
[   57.592335] usb usb5: root hub lost power or was reset
[   57.592339] usb usb5: suspend_rh
[   57.592361] ehci_hcd 0000:00:1d.7: PCI D0, from previous PCI D3
[   57.603361] ACPI: PCI Interrupt 0000:00:1d.7[A] -> GSI 23 (level, low) -> 
IRQ 23
[   57.603374] PCI: Setting latency timer of device 0000:00:1d.7 to 64
[   57.603449] PM: Writing back config space on device 0000:00:1e.0 at offset f 
(was 20000, writing 200ff)
[   57.603486] PCI: Setting latency timer of device 0000:00:1e.0 to 64
[   57.603519] PM: Writing back config space on device 0000:00:1e.2 at offset 1 
(was 2900007, writing 2900003)
[   57.603537] ACPI: PCI Interrupt 0000:00:1e.2[A] -> GSI 17 (level, low) -> 
IRQ 17
[   57.603546] PCI: Setting latency timer of device 0000:00:1e.2 to 64
[   57.618352] PM: Writing back config space on device 0000:01:00.0 at offset f 
(was 100, writing 10a)
[   57.618367] PM: Writing back config space on device 0000:01:00.0 at offset c 
(was 0, writing febc0000)
[   57.618386] PM: Writing back config space on device 0000:01:00.0 at offset 6 
(was 4, writing febff004)
[   57.618397] PM: Writing back config space on device 0000:01:00.0 at offset 4 
(was 1, writing e801)
[   57.618406] PM: Writing back config space on device 0000:01:00.0 at offset 3 
(was 0, writing 10)
[   57.618417] PM: Writing back config space on device 0000:01:00.0 at offset 1 
(was 100000, writing 100007)
[   57.622332] r8169: eth0: link up
[   57.629308] ACPI: PCI Interrupt 0000:00:02.0[A] -> GSI 16 (level, low) -> 
IRQ 16
[   57.630747] usb usb1: usb resume
[   57.630753] ehci_hcd 0000:00:1d.7: resume root hub
[   57.641725] hub 1-0:1.0: hub_resume
[   57.641740] usb usb2: usb resume
[   57.641744] usb usb2: wakeup_rh
[   57.673669] hub 2-0:1.0: trying to enable port power on non-switchable hub
[   57.774471] usb usb3: usb resume
[   57.774477] usb usb3: wakeup_rh
[   57.806397] hub 3-0:1.0: trying to enable port power on non-switchable hub
[   57.907183] hub 3-0:1.0: hub_reset_resume: child TRUE
[   57.907191] hub 3-0:1.0: hub_reset_resume: USB_PERSIST && 
child->persist_enabled
[   57.907212] usb usb4: usb resume
[   57.907216] usb usb4: wakeup_rh
[   57.939140] hub 4-0:1.0: trying to enable port power on non-switchable hub
[   58.039917] usb usb5: usb resume
[   58.039926] usb usb5: wakeup_rh
[   58.071856] hub 5-0:1.0: trying to enable port power on non-switchable hub
[   58.172665] ehci_hcd 0000:00:1d.7: GetStatus port 1 status 001803 POWER 
sig=j CSC CONNECT
[   58.183620] usb 1-1: finish reset-resume
[   58.183627] usb 1-1: finish_port_resume: udev->reset_resume enabled
[   58.234776] ehci_hcd 0000:00:1d.7: port 1 high speed
[   58.234785] ehci_hcd 0000:00:1d.7: GetStatus port 1 status 001007 POWER 
sig=se0 PE CSC CONNECT
[   58.234803] usb 1-1: usb_reset_device ret == -107
[   58.234807] hub 1-0:1.0: logical disconnect on port 1
[   58.234815] usb 1-1: gone after usb resume? status -19
[   58.234819] usb 1-1: can't resume, status -19
[   58.234822] hub 1-0:1.0: logical disconnect on port 1
[   58.234841] ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001803 POWER 
sig=j CSC CONNECT
[   58.234848] hub 1-0:1.0: port 5 status 0001.0501 after resume, 0
[   58.234852] usb 1-5: can't resume, status -19
[   58.234855] hub 1-0:1.0: logical disconnect on port 5
[   58.234870] ehci_hcd 0000:00:1d.7: GetStatus port 6 status 001803 POWER 
sig=j CSC CONNECT
[   58.234876] hub 1-0:1.0: port 6 status 0001.0501 after resume, 0
[   58.234880] usb 1-6: can't resume, status -19
[   58.234883] hub 1-0:1.0: logical disconnect on port 6
[   58.234900] uhci_hcd 0000:00:1d.1: port 1 portsc 01a9,00
[   58.245481] usb 3-1: finish reset-resume
[   58.245486] usb 3-1: finish_port_resume: udev->reset_resume enabled
[   58.446042] hub_port_wait_reset successful or delayed
[   58.496879] usb 3-1: reset low speed USB device using uhci_hcd and address 2
[   58.704322] hub_port_wait_reset successful or delayed
[   58.772031] usb usb2: suspend_rh (auto-stop)
[   58.801548] uhci_hcd 0000:00:1d.1: reserve dev 2 ep81-INT, period 8, phase 
4, 118 us
[   58.804451] uhci_hcd 0000:00:1d.1: reserve dev 2 ep82-INT, period 8, phase 
4, 118 us
[   59.017942] usb usb4: suspend_rh (auto-stop)
[   59.265998] usb usb5: suspend_rh (auto-stop)
[   59.346796] Restarting tasks ... <7>hub 1-0:1.0: state 7 ports 8 chg 0062 
evt 0000
[   59.347957] hub 1-0:1.0: port 1, status 0501, change 0000, 480 Mb/s
[   59.348050] usb 1-1: USB disconnect, address 2
[   59.348135] usb 1-1: unregistering device
[   59.348219] usb 1-1: usb_disable_device nuking all URBs
[   59.348312] usb 1-1: unregistering interface 1-1:1.0
[   59.357092] usb 1-1:1.0: uevent
[   59.357485] usb 1-1: uevent
[   59.364468] EXT3-fs error (device sda1): ext3_find_entry: reading directory 
#7201 offset 0
[   59.364810] Buffer I/O error on device sda1, logical block 0
[   59.364906] lost page write due to I/O error on sda1
[   59.365485] EXT3-fs error (device sda1): ext3_find_entry: reading directory 
#7201 offset 0
[   59.365779] ------------[ cut here ]------------
[   59.365868] WARNING: at fs/buffer.c:1184 mark_buffer_dirty+0x5d/0x80()
[   59.365960] Modules linked in: netconsole af_packet ipv6 snd_seq_oss 
snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss binfmt_misc 
rtc_cmos rtc_core rtc_lib snd_intel8x0 pcspkr snd_ac97_codec i2c_i801 ac97_bus 
i2c_core snd_pcm snd_timer snd snd_page_alloc r8169 battery ac thermal 
processor joydev evdev [last unloaded: button]
[   59.367674] Pid: 2587, comm: dbus-daemon Not tainted 2.6.25-rc2 #21
[   59.367866]  [<c0123444>] warn_on_slowpath+0x54/0x70
[   59.369294]  [<e0185a0c>] ? write_msg+0xcc/0xf0 [netconsole]
[   59.369515]  [<c0123c54>] ? __call_console_drivers+0x54/0x70
[   59.369701]  [<c0123ce9>] ? _call_console_drivers+0x79/0x90
[   59.369894]  [<c0123f19>] ? release_console_sem+0x1d9/0x210
[   59.370076]  [<c0124320>] ? vprintk+0x210/0x3e0
[   59.370257]  [<c0124320>] ? vprintk+0x210/0x3e0
[   59.370434]  [<c0198d9d>] mark_buffer_dirty+0x5d/0x80
[   59.370571]  [<c01c71b6>] ext3_commit_super+0x46/0x70
[   59.370765]  [<c01c7b25>] ext3_handle_error+0x75/0xb0
[   59.370910]  [<c012450b>] ? printk+0x1b/0x20
[   59.371086]  [<c01c7c22>] ext3_error+0x52/0x60
[   59.371221]  [<c01c5788>] ext3_find_entry+0x518/0x670
[   59.371357]  [<c0200cd8>] ? rb_insert_color+0xb8/0xe0
[   59.371546]  [<c0139e6e>] ? hrtimer_start+0x6e/0xf0
[   59.371769]  [<c0376064>] ? schedule+0x2b4/0x460
[   59.371962]  [<c01c628a>] ext3_lookup+0x3a/0xd0
[   59.378392]  [<c017e483>] do_lookup+0x133/0x180
[   59.378556]  [<c017f7ec>] __link_path_walk+0x12c/0xe10
[   59.378714]  [<c030dac9>] ? kfree_skb+0x19/0x30
[   59.378894]  [<c036d24a>] ? unix_stream_recvmsg+0x39a/0x530
[   59.379082]  [<c0180510>] link_path_walk+0x40/0xa0
[   59.379219]  [<c0162049>] ? handle_mm_fault+0xf9/0x5f0
[   59.379404]  [<c0174c31>] ? get_unused_fd_flags+0xc1/0x100
[   59.379588]  [<c0180588>] path_walk+0x18/0x20
[   59.379766]  [<c0180792>] do_path_lookup+0x82/0x1c0
[   59.379904]  [<c0177861>] ? get_empty_filp+0x61/0x130
[   59.380085]  [<c018135d>] __path_lookup_intent_open+0x4d/0x90
[   59.380223]  [<c018141f>] path_lookup_open+0x1f/0x30
[   59.380354]  [<c018151b>] open_namei+0x5b/0x620
[   59.380484]  [<c0153254>] ? unlock_page+0x24/0x30
[   59.380666]  [<c016021d>] ? __do_fault+0x17d/0x3d0
[   59.380895]  [<c0174f6c>] do_filp_open+0x2c/0x50
[   59.381029]  [<c0162049>] ? handle_mm_fault+0xf9/0x5f0
[   59.381213]  [<c0174c31>] ? get_unused_fd_flags+0xc1/0x100
[   59.381392]  [<c0174fd9>] do_sys_open+0x49/0xe0
[   59.381527]  [<c01750ac>] sys_open+0x1c/0x20
[   59.381660]  [<c0104d1e>] sysenter_past_esp+0x5f/0x85
[   59.381849]  [<c0370000>] ? wireless_send_event+0x300/0x330
[   59.384513]  =======================
[   59.384606] ---[ end trace c3920ae13dfb59b5 ]---
[   59.384730] Buffer I/O error on device sda1, logical block 0
[   59.384730] lost page write due to I/O error on sda1
[   59.385821] input: AT Translated Set 2 keyboard as /class/input/input10
[   59.395791] done.
[   59.408060] ehci_hcd 0000:00:1d.7: port 1 high speed
[   59.408165] ehci_hcd 0000:00:1d.7: GetStatus port 1 status 001005 POWER 
sig=se0 PE CONNECT
[   59.408300] hub_port_wait_reset successful or delayed
[   59.458789] usb 1-1: new high speed USB device using ehci_hcd and address 6
[   59.510057] ehci_hcd 0000:00:1d.7: port 1 high speed
[   59.510163] ehci_hcd 0000:00:1d.7: GetStatus port 1 status 001005 POWER 
sig=se0 PE CONNECT
[   59.510303] hub_port_wait_reset successful or delayed
[   59.572822] usb 1-1: USB quirks for this device: 2
[   59.573321] usb 1-1: default language 0x0409
[   59.573877] usb 1-1: uevent
[   59.574027] usb 1-1: usb_probe_device
[   59.574269] usb 1-1: configuration #1 chosen from 1 choice
[   59.575051] usb 1-1: adding 1-1:1.0 (config #1, interface 0)
[   59.575230] usb 1-1:1.0: uevent
[   59.575376] usb-storage 1-1:1.0: usb_probe_interface
[   59.575479] usb-storage 1-1:1.0: usb_probe_interface - got id
[   59.584623] scsi1 : SCSI emulation for USB Mass Storage devices
[   59.586578] drivers/usb/core/inode.c: creating file '006'
[   59.586755] usb 1-1: New USB device found, idVendor=08ec, idProduct=1000
[   59.586853] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   59.586953] usb 1-1: Product: uDiskOnChip
[   59.587033] usb 1-1: Manufacturer: M-Systems
[   59.587116] usb 1-1: SerialNumber: 0FA14860F30378F8
[   59.587234] ehci_hcd 0000:00:1d.7: GetStatus port 4 status 001803 POWER 
sig=j CSC CONNECT
[   59.587359] hub 1-0:1.0: port 4, status 0501, change 0001, 480 Mb/s
[   59.587481] usb-storage: device found at 6
[   59.587568] usb-storage: waiting for device to settle before scanning
[   59.690731] hub 1-0:1.0: debounce: port 4: total 100ms stable 100ms status 
0x501
[   59.741902] ehci_hcd 0000:00:1d.7: port 4 high speed
[   59.742001] ehci_hcd 0000:00:1d.7: GetStatus port 4 status 001005 POWER 
sig=se0 PE CONNECT
[   59.742131] hub_port_wait_reset successful or delayed
[   59.792718] usb 1-4: new high speed USB device using ehci_hcd and address 7
[   59.845892] ehci_hcd 0000:00:1d.7: port 4 high speed
[   59.845992] ehci_hcd 0000:00:1d.7: GetStatus port 4 status 001005 POWER 
sig=se0 PE CONNECT
[   59.846130] hub_port_wait_reset successful or delayed
[   59.911155] usb 1-4: default language 0x0409
[   59.915742] usb 1-4: uevent
[   59.915890] usb 1-4: usb_probe_device
[   59.916128] usb 1-4: configuration #1 chosen from 1 choice
[   59.916899] usb 1-4: adding 1-4:1.0 (config #1, interface 0)
[   59.917077] usb 1-4:1.0: uevent
[   59.917225] usb-storage 1-4:1.0: usb_probe_interface
[   59.917329] usb-storage 1-4:1.0: usb_probe_interface - got id
[   59.926489] scsi2 : SCSI emulation for USB Mass Storage devices
[   59.928457] drivers/usb/core/inode.c: creating file '007'
[   59.928601] usb 1-4: New USB device found, idVendor=05e3, idProduct=0715
[   59.928687] usb 1-4: New USB device strings: Mfr=3, Product=4, SerialNumber=5
[   59.928783] usb 1-4: Product: USB Reader
[   59.928868] usb 1-4: Manufacturer: Genesys
[   59.928949] usb 1-4: SerialNumber: 000000000000
[   59.929061] hub 1-0:1.0: port 5, status 0501, change 0000, 480 Mb/s
[   59.929151] usb 1-5: USB disconnect, address 4
[   59.929240] usb 1-5: unregistering device
[   59.929317] usb 1-5: usb_disable_device nuking all URBs
[   59.929412] usb 1-5: unregistering interface 1-5:1.0
[   59.929994] usb 1-5:1.0: uevent
[   59.930373] usb 1-5: uevent
[   59.930557] usb-storage: device found at 7
[   59.930685] usb-storage: waiting for device to settle before scanning
[   59.980987] ehci_hcd 0000:00:1d.7: port 5 high speed
[   59.981092] ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001005 POWER 
sig=se0 PE CONNECT
[   59.981231] hub_port_wait_reset successful or delayed
[   60.031687] usb 1-5: new high speed USB device using ehci_hcd and address 8
[   60.100861] ehci_hcd 0000:00:1d.7: port 5 high speed
[   60.100962] ehci_hcd 0000:00:1d.7: GetStatus port 5 status 001005 POWER 
sig=se0 PE CONNECT
[   60.101095] hub_port_wait_reset successful or delayed
[   60.256118] usb 1-5: default language 0x0409
[   60.324542] usb 1-5: uevent
[   60.324679] usb 1-5: usb_probe_device
[   60.324925] usb 1-5: configuration #1 chosen from 1 choice
[   60.340739] usb 1-5: adding 1-5:1.0 (config #1, interface 0)
[   60.340922] usb 1-5:1.0: uevent
[   60.356497] drivers/usb/core/inode.c: creating file '008'
[   60.356658] usb 1-5: New USB device found, idVendor=148f, idProduct=2573
[   60.356758] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   60.356856] usb 1-5: Product: 802.11 bg WLAN
[   60.356934] usb 1-5: Manufacturer: Ralink
[   60.357035] hub 1-0:1.0: port 6, status 0501, change 0000, 480 Mb/s
[   60.357124] usb 1-6: USB disconnect, address 5
[   60.357213] usb 1-6: unregistering device
[   60.357293] usb 1-6: usb_disable_device nuking all URBs
[   60.357386] usb 1-6: unregistering interface 1-6:1.0
[   60.357707] usb 1-6:1.0: uevent
[   60.357845] usb 1-6: unregistering interface 1-6:1.1
[   60.358010] usb 1-6:1.1: uevent
[   60.358388] usb 1-6: uevent
[   60.408826] ehci_hcd 0000:00:1d.7: port 6 high speed
[   60.408933] ehci_hcd 0000:00:1d.7: GetStatus port 6 status 001005 POWER 
sig=se0 PE CONNECT
[   60.409070] hub_port_wait_reset successful or delayed
[   60.459623] usb 1-6: new high speed USB device using ehci_hcd and address 9
[   60.511812] ehci_hcd 0000:00:1d.7: port 6 high speed
[   60.511913] ehci_hcd 0000:00:1d.7: GetStatus port 6 status 001005 POWER 
sig=se0 PE CONNECT
[   60.512046] hub_port_wait_reset successful or delayed
[   60.717201] usb 1-6: skipped 1 descriptor after configuration
[   60.717303] usb 1-6: skipped 5 descriptors after interface
[   60.717403] usb 1-6: skipped 1 descriptor after endpoint
[   60.717489] usb 1-6: skipped 9 descriptors after interface
[   60.718587] usb 1-6: default language 0x0409
[   60.724245] usb 1-6: uevent
[   60.724395] usb 1-6: usb_probe_device
[   60.724678] usb 1-6: configuration #1 chosen from 1 choice
[   60.725658] usb 1-6: adding 1-6:1.0 (config #1, interface 0)
[   60.725839] usb 1-6:1.0: uevent
[   60.727815] usb 1-6: adding 1-6:1.1 (config #1, interface 1)
[   60.727974] usb 1-6:1.1: uevent
[   60.728202] drivers/usb/core/inode.c: creating file '009'
[   60.728334] usb 1-6: New USB device found, idVendor=0ac8, idProduct=c312
[   60.728426] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   60.728564] usb 1-6: Product: Sirius USB2.0 Camera
[   60.728652] usb 1-6: Manufacturer: Vimicro Corp.
[   60.728768] hub 2-0:1.0: state 7 ports 2 chg 0000 evt 0000
[   60.728886] hub 3-0:1.0: state 7 ports 2 chg 0000 evt 0002
[   60.728996] hub 4-0:1.0: state 7 ports 2 chg 0000 evt 0000
[   60.729103] hub 5-0:1.0: state 7 ports 2 chg 0000 evt 0000
[   62.728258] hub 2-0:1.0: hub_suspend
[   62.728375] usb usb2: bus auto-suspend
[   62.728454] usb usb2: suspend_rh
[   62.728542] hub 4-0:1.0: hub_suspend
[   62.728620] usb usb4: bus auto-suspend
[   62.728706] usb usb4: suspend_rh
[   62.728782] hub 5-0:1.0: hub_suspend
[   62.728868] usb usb5: bus auto-suspend
[   62.728945] usb usb5: suspend_rh
[   64.586678] scsi 1:0:0:0: Direct-Access     M-Sys    uDiskOnChip      5.u4 
PQ: 0 ANSI: 0 CCS
[   64.589136] sd 1:0:0:0: [sdb] 2052607 512-byte hardware sectors (1051 MB)
[   64.590039] sd 1:0:0:0: [sdb] Write Protect is off
[   64.590159] sd 1:0:0:0: [sdb] Mode Sense: 2b 00 00 00
[   64.590244] sd 1:0:0:0: [sdb] Assuming drive cache: write through
[   64.591510] sd 1:0:0:0: [sdb] 2052607 512-byte hardware sectors (1051 MB)
[   64.592410] sd 1:0:0:0: [sdb] Write Protect is off
[   64.592533] sd 1:0:0:0: [sdb] Mode Sense: 2b 00 00 00
[   64.592615] sd 1:0:0:0: [sdb] Assuming drive cache: write through
[   64.592709]  sdb: sdb1
[   64.593833] sd 1:0:0:0: [sdb] Attached SCSI disk
[   64.594088] sd 1:0:0:0: Attached scsi generic sg0 type 0
[   64.595503] usb-storage: device scan complete
[   64.932636] scsi 2:0:0:0: Direct-Access     Generic  STORAGE DEVICE   9404 
PQ: 0 ANSI: 0
[   64.935110] sd 2:0:0:0: [sdc] Attached SCSI removable disk
[   64.935332] sd 2:0:0:0: Attached scsi generic sg1 type 0
[   64.936726] usb-storage: device scan complete
[   65.965263] EXT3-fs error (device sda1): ext3_find_entry: reading directory 
#7201 offset 0
[   65.965541] Buffer I/O error on device sda1, logical block 0
[   65.965634] lost page write due to I/O error on sda1


So the child branch is taken and USB_PERSIST && child->persist_enabled
evaluates as true. Also udev->reset_resume is enabled. The problem here
is inside usb_reset_device. The devices are redetected because a
reenumeration is forced, see that usb_reset_device return -ENOTCONN because:

- usb_reset_device call chain is hub_port_init -> hub_port_reset ->
hub_port_wait_reset. In hub_port_wait_reset, the call to hub_port_status
doesn't fail, but portstatus or portchange are respectively
USB_PORT_STAT_CONNECTION or USB_PORT_STAT_C_CONNECTION
(Look that no one of the printks in hub_port_wait_reset are printed),
and -ENOTCONN then from one of the two returns go back until
usb_reset_device that then takes the re_enumeration label that causes the
logical disconnect, so the redetection happens.

I don't know why ehci is returning this portchange/portstatus, but this is
triggering the redetection.

> 
> >
> > Alan Stern
> >

--
[]'s
Herton
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to