• 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  enabled at (0): [<c10371c1>] copy_process+0x3d2/0x109d
    [  184.139789] softirqs last disabled at (0): [<  (null)>]   (null)
    [  184.139802] Pid: 416, comm: kworker/u:11 Tainted: G         C  2.6.37-6.3-adaptation-oaktrail #37
    [  184.139809] Call Trace:
    [  184.139820]  [<c102eeff>] __schedule_bug+0x5e/0x65
    [  184.139829]  [<c14fbca5>] schedule+0xac/0xc4c
    [  184.139840]  [<c11d4845>] ? string+0x37/0x8b
    [  184.139853]  [<c1044f21>] ? lock_timer_base+0x1f/0x3e
    [  184.139863]  [<c14fe7da>] ? _raw_spin_lock_irqsave+0x35/0x3e
    [  184.139876]  [<c1061590>] ? trace_hardirqs_off+0xb/0xd
    [  184.139885]  [<c14fccdc>] schedule_timeout+0x283/0x2d9
    [  184.139896]  [<c104516f>] ? process_timeout+0x0/0xa
    [  184.139906]  [<c14fcd47>] schedule_timeout_uninterruptible+0x15/0x17
    [  184.139916]  [<c104566a>] msleep+0x10/0x16
    [  184.139926]  [<c132f316>] ehci_adjust_port_wakeup_flags+0x69/0xf6
    [  184.139937]  [<c132f3eb>] ehci_pci_suspend+0x48/0x7b
    [  184.139946]  [<c1326587>] suspend_common+0x52/0xbb
    [  184.139956]  [<c1326625>] hcd_pci_suspend+0x26/0x28
    [  184.139967]  [<c11e7182>] pci_pm_suspend+0x5f/0xd0
    [  184.139976]  [<c127ca3a>] pm_op+0x5d/0xf0
    [  184.139986]  [<c127ceac>] __device_suspend+0xf5/0x154
    [  184.139996]  [<c127d2c8>] async_suspend+0x16/0x3a
    [  184.140006]  [<c1058f54>] async_run_entry_fn+0x89/0x111
    [  184.140016]  [<c104deb6>] process_one_work+0x295/0x4cb
    [  184.140026]  [<c1058ecb>] ? async_run_entry_fn+0x0/0x111
    [  184.140036]  [<c104e3d0>] worker_thread+0x17f/0x298
    [  184.140045]  [<c104e251>] ? worker_thread+0x0/0x298
    [  184.140055]  [<c105277f>] kthread+0x64/0x69
    [  184.140064]  [<c105271b>] ? kthread+0x0/0x69
    [  184.140075]  [<c1002efa>] kernel_thread_helper+0x6/0x1a
    Signed-off-by: default avatarYin Kangkai <kangkai.yin@intel.com>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    CC: David Brownell <dbrownell@users.sourceforge.net>
    CC: stable@kernel.org
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    148fc55f
ehci-hub.c 30.4 KB