• Yin Kangkai's avatar
    USB: EHCI: fix scheduling while atomic during suspend · 148fc55f
    Yin Kangkai authored
    There is a msleep with spin lock held during ehci pci suspend, which will
    cause kernel BUG: scheduling while atomic. Fix that.
    
    [  184.139620] BUG: scheduling while atomic: kworker/u:11/416/0x00000002
    [  184.139632] 4 locks held by kworker/u:11/416:
    [  184.139640]  #0:  (events_unbound){+.+.+.}, at: [<c104ddd4>] process_one_work+0x1b3/0x4cb
    [  184.139669]  #1:  ((&entry->work)){+.+.+.}, at: [<c104ddd4>] process_one_work+0x1b3/0x4cb
    [  184.139686]  #2:  (&__lockdep_no_validate__){+.+.+.}, at: [<c127cde3>] __device_suspend+0x2c/0x154
    [  184.139706]  #3:  (&(&ehci->lock)->rlock){-.-...}, at: [<c132f3d8>] ehci_pci_suspend+0x35/0x7b
    [  184.139725] Modules linked in: serio_raw pegasus joydev mrst_gfx(C) battery
    [  184.139748] irq event stamp: 52
    [  184.139753] hardirqs last  enabled at (51): [<c14fdaac>] mutex_lock_nested+0x258/0x293
    [  184.139766] hardirqs last disabled at (52): [<c14fe7b4>] _raw_spin_lock_irqsave+0xf/0x3e
    [  184.139777] softirqs last  enab...
    148fc55f
ehci-au1xxx.c 8 KB