> -----Original Message----- > From: Sarah Sharp [mailto:sarah.a.sharp@xxxxxxxxxxxxxxx] > Sent: Thursday, October 07, 2010 7:33 AM > To: linux-usb@xxxxxxxxxxxxxxx > Cc: Xu, Andiry; Oliver Neukum > Subject: Help with oops during xHCI resume > > I've been testing Andiry's xHCI power management patches (plus John's > USB3 hub patches, for various reasons[1]). > > I ran into an oops when I resumed from suspend with a mounted USB 3.0 > hard drive playing a movie file. I think it's because > xhci_add_endpoint() is trying to allocate things with the wrong memory > flags, but I'm not sure. > > Here's the oops, and messages before it: > > [ 2165.959299] xhci_hcd 0000:05:00.0: Allocating ring at > ffff880037e0cf00 > [ 2165.959303] xhci_hcd 0000:05:00.0: Allocating priv segment > structure at ffff880131f51d20 > [ 2165.959319] general protection fault: 0000 [#1] SMP > [ 2165.959359] last sysfs file: > /sys/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb9/9-2/9- > 2:1.0/host5/target5:0:0/5:0:0:0/block/sdb/sdb1/stat > [ 2165.959421] CPU 1 > [ 2165.959434] Modules linked in: xhci_hcd usb_storage usbhid uhci_hcd > ehci_hcd usbcore arc4 snd_hda_codec_conexant thinkpad_acpi snd_hda_intel > snd_seq_dummy snd_hda_codec i > [ 2165.959829] > [ 2165.959842] Pid: 7260, comm: usb-storage Not tainted 2.6.36-rc5+ > #635 74663HU/74663HU > [ 2165.959881] RIP: 0010:[<ffffffff810db361>] [<ffffffff810db361>] > dma_pool_alloc+0x61/0x2c0 > [ 2165.959930] RSP: 0018:ffff880131fb3a30 EFLAGS: 00010002 > [ 2165.959959] RAX: c0000101002c0209 RBX: c0000101002c0209 RCX: > 000000000001ffff > [ 2165.959995] RDX: 0000000030060004 RSI: 0000000000000010 RDI: > ffff880037fca690 > [ 2165.960031] RBP: ffff880131fb3ab0 R08: 000000000033fccb R09: > 000000000000000a > [ 2165.960067] R10: 0000000000000006 R11: 0000000000000000 R12: > ffff880037fca680 > [ 2165.960103] R13: ffff880037fca690 R14: 0000000000000286 R15: > ffff880131fe5480 > [ 2165.960140] FS: 0000000000000000(0000) GS:ffff880001e80000(0000) > knlGS:0000000000000000 > [ 2165.960182] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b > [ 2165.960211] CR2: 00007f3b2083c000 CR3: 0000000001a91000 CR4: > 00000000000406a0 > [ 2165.960247] DR0: 0000000000000000 DR1: 0000000000000000 DR2: > 0000000000000000 > [ 2165.960283] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: > 0000000000000400 > [ 2165.960319] Process usb-storage (pid: 7260, threadinfo > ffff880131fb2000, task ffff880131fe5480) > [ 2165.960362] Stack: > [ 2165.960375] ffff880131fb3a40 ffff880037fca6e0 ffff880131fb3ac8 > 00000010812c92a0 > [ 2165.960421] <0> ffffffff00000020 ffff880131fb3ac0 ffff880131fb3a80 > ffff880037e0cf00 > [ 2165.960472] <0> ffffffffa01ebb00 ffff880131fb3a50 ffff880131fb3af0 > ffff880131f51d20 > [ 2165.960526] Call Trace: > [ 2165.960545] [<ffffffffa01e04b6>] xhci_segment_alloc+0x76/0x100 > [xhci_hcd] > [ 2165.960585] [<ffffffffa01e06eb>] xhci_ring_alloc+0xab/0x1c0 > [xhci_hcd] > [ 2165.960621] [<ffffffffa01e088c>] xhci_endpoint_init+0x8c/0x4d0 > [xhci_hcd] > [ 2165.960659] [<ffffffffa01da947>] xhci_add_endpoint+0x127/0x2b0 > [xhci_hcd] > [ 2165.960703] [<ffffffffa0309667>] > usb_hcd_alloc_bandwidth+0x137/0x330 [usbcore] > [ 2165.960745] [<ffffffffa0305dfe>] > usb_reset_and_verify_device+0x36e/0x590 [usbcore] > [ 2165.960788] [<ffffffff814d982e>] ? > wait_for_completion_interruptible_timeout+0xe/0x10 > [ 2165.960833] [<ffffffffa03060d2>] usb_reset_device+0xb2/0x190 > [usbcore] > [ 2165.960870] [<ffffffffa01adf69>] usb_stor_port_reset+0x69/0x70 > [usb_storage] > [ 2165.960908] [<ffffffffa01ae3b6>] > usb_stor_invoke_transport+0x76/0x400 [usb_storage] > [ 2165.960949] [<ffffffff814d9738>] ? wait_for_common+0xd8/0x180 > [ 2165.960982] [<ffffffff810417f0>] ? default_wake_function+0x0/0x10 > [ 2165.961017] [<ffffffffa01ade19>] > usb_stor_transparent_scsi_command+0x9/0x10 [usb_storage] > [ 2165.961062] [<ffffffffa01b01ee>] > usb_stor_control_thread+0x15e/0x240 [usb_storage] > [ 2165.961103] [<ffffffffa01b0090>] ? > usb_stor_control_thread+0x0/0x240 [usb_storage] > [ 2165.961144] [<ffffffffa01b0090>] ? > usb_stor_control_thread+0x0/0x240 [usb_storage] > [ 2165.961184] [<ffffffff81061286>] kthread+0x96/0xa0 > [ 2165.961212] [<ffffffff8100bc04>] kernel_thread_helper+0x4/0x10 > [ 2165.961244] [<ffffffff810611f0>] ? kthread+0x0/0xa0 > [ 2165.961273] [<ffffffff8100bc00>] ? kernel_thread_helper+0x0/0x10 > [ 2165.961304] Code: c6 49 8d 44 24 60 48 89 45 88 49 8b 1c 24 eb 1b > 66 2e 0f 1f 84 00 00 00 00 00 8b 53 24 49 3b 54 24 28 0f 82 1a 01 00 00 48 > 89 c3 <48> 8b 03 4c 39 e3 0f > [ 2165.961577] RIP [<ffffffff810db361>] dma_pool_alloc+0x61/0x2c0 > [ 2165.961612] RSP <ffff880131fb3a30> > [ 2166.472390] ---[ end trace 78a4031e83732b59 ]--- > > The xHCI driver is calling xhci_endpoint_init() with a memory flag of > GFP_NOIO. The kmalloc in xhci_ring_alloc() with that flag succeeds, and > a kzalloc() in xhci_segment_alloc() succeeds, but the dma_pool_alloc() > in xhci_segment_alloc() is what causes the oops, AFAIK. > > Oliver had suggested I use GFP_NOIO instead of GFP_KERNEL in this code > because this might be called during in a storage error handling thread > (which it looks like it is from the oops message). Do I need to use > GFP_ATOMIC instead? Or is this indicative of another problem? > > Sarah Sharp > > [1] I'm seeing a disconnect with all the USB 3.0 hard drives I have > available whenever I try to hibernate the system. The device refuses to > enumerate, and the port gets disabled. If I unplug the device and > replug it in again, the device comes up as high speed. So I thought I > might need part of John's hub patch to prevent the USB core from > disabling the port (since USB 3.0 hubs can't have their ports disabled). Sarah, can you specify John's USB3 hub patches? Are they already in 2.6.36-rc7? I've tested with only my patches on 2.6.36-rc7, and USB3.0 HDD with movie playing on it seems work fine during and after system hibernation. Thanks, Andiry -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html