• Stephen Boyd's avatar
    pinctrl: msm: Silence recursive lockdep warning · 3525f555
    Stephen Boyd authored
    If a driver calls enable_irq_wake() on a gpio turned interrupt
    from the msm pinctrl driver we'll get a lockdep warning like so:
    
    =============================================
    [ INFO: possible recursive locking detected ]
    3.14.0-rc3 #2 Not tainted
    ---------------------------------------------
    modprobe/52 is trying to acquire lock:
     (&irq_desc_lock_class){-.....}, at: [<c026aea0>] __irq_get_desc_lock+0x48/0x88
    
    but task is already holding lock:
     (&irq_desc_lock_class){-.....}, at: [<c026aea0>] __irq_get_desc_lock+0x48/0x88
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&irq_desc_lock_class);
      lock(&irq_desc_lock_class);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    
    4 locks held by modprobe/52:
     #0:  (&__lockdep_no_validate__){......}, at: [<c04f2864>] __driver_attach+0x48/0x98
     #1:  (&__lockdep_no_validate__){......}, at: [<c04f2874>] __driver_attach+0x58/0x98
     #2:  (&irq_desc_lock_class){-.....}, at: [<c026aea0>] __irq_get_desc_lock+0x48/0x88
     #3:  (&(&pctrl->lock)->rlock){......}, at: [<c04bb4b8>] msm_gpio_irq_set_wake+0x20/0xa8
    
    Silence it by putting the gpios into their own lock class.
    Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
    Acked-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    3525f555
pinctrl-msm.c 25.1 KB