• Nathan Lynch's avatar
    ledtrig-cpu: kill useless mutex to fix sleep in atomic context · 0b8728d6
    Nathan Lynch authored
    Seeing the following every time the CPU enters or leaves idle on a
    Beagleboard:
    
    BUG: sleeping function called from invalid context at kernel/mutex.c:269
    in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/0
    no locks held by swapper/0/0.
    [<c001659c>] (unwind_backtrace+0x0/0xf8) from [<c05aaa7c>] (mutex_lock_nested+0x24/0x380)
    [<c05aaa7c>] (mutex_lock_nested+0x24/0x380) from [<c043bd1c>] (ledtrig_cpu+0x38/0x88)
    [<c043bd1c>] (ledtrig_cpu+0x38/0x88) from [<c000f4b0>] (cpu_idle+0xf4/0x120)
    [<c000f4b0>] (cpu_idle+0xf4/0x120) from [<c07e47c8>] (start_kernel+0x2bc/0x30c)
    
    Miles Lane has reported seeing similar splats during system suspend.
    
    The mutex in struct led_trigger_cpu appears to have no function: it
    resides in a per-cpu data structure which never changes after the
    trigger is registered.  So just remove it.
    Reported-by: default avatarMiles Lane <miles.lane@gmail.com>
    Signed-off-by: default avatarNathan Lynch <ntl@pobox.com>
    Signed-off-by: default avatarBryan Wu <roc@roc-samos.(none)>
    0b8728d6
ledtrig-cpu.c 3.31 KB