• Zach Brown's avatar
    [PATCH] mthca: initialize send and receive queue locks separately · a46f9484
    Zach Brown authored
    mthca: initialize send and receive queue locks separately
    
    lockdep identifies a lock by the call site of its initialization.  By
    initializing the send and receive queue locks in mthca_wq_init() we confuse
    lockdep.  It warns that that the ordered acquiry of both locks in
    mthca_modify_qp() is recursive acquiry of one lock:
    
      =============================================
      [ INFO: possible recursive locking detected ]
      ---------------------------------------------
      modprobe/1192 is trying to acquire lock:
       (&wq->lock){....}, at: [<f892b4db>] mthca_modify_qp+0x60/0xa7b [ib_mthca]
      but task is already holding lock:
       (&wq->lock){....}, at: [<f892b4ce>] mthca_modify_qp+0x53/0xa7b [ib_mthca]
    
    Initializing the locks separately in mthca_alloc_qp_common() stops the
    warning and will let lockdep enforce proper ordering on paths that acquire
    both locks.
    Signed-off-by: default avatarZach Brown <zach.brown@oracle.com>
    Cc: Roland Dreier <rolandd@cisco.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    a46f9484
mthca_qp.c 60.6 KB