original_kernel/drivers/infiniband/hw/mthca
Zach Brown a46f9484f8 [PATCH] mthca: initialize send and receive queue locks separately
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: Zach 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: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-04 10:24:57 -07:00
..
Kconfig
Makefile
mthca_allocator.c
mthca_av.c
mthca_catas.c
mthca_cmd.c
mthca_cmd.h
mthca_config_reg.h
mthca_cq.c
mthca_dev.h
mthca_doorbell.h
mthca_eq.c
mthca_mad.c
mthca_main.c
mthca_mcg.c
mthca_memfree.c
mthca_memfree.h
mthca_mr.c
mthca_pd.c
mthca_profile.c
mthca_profile.h
mthca_provider.c
mthca_provider.h
mthca_qp.c
mthca_reset.c
mthca_srq.c
mthca_uar.c
mthca_user.h
mthca_wqe.h