linux/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 IB/mthca: Always build debugging code unless CONFIG_EMBEDDED=y 2006-04-02 14:39:20 -07:00
Makefile IB/mthca: Always build debugging code unless CONFIG_EMBEDDED=y 2006-04-02 14:39:20 -07:00
mthca_allocator.c [PATCH] IB/mthca: Factor out common queue alloc code 2005-08-26 20:37:37 -07:00
mthca_av.c IB: simplify static rate encoding 2006-04-10 09:43:47 -07:00
mthca_catas.c Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband 2005-11-10 13:27:06 -08:00
mthca_cmd.c IB/mthca: Convert FW commands to use wait_for_completion_timeout() 2006-06-17 20:37:30 -07:00
mthca_cmd.h IB: simplify static rate encoding 2006-04-10 09:43:47 -07:00
mthca_config_reg.h [PATCH] IB: Add copyright notices 2005-08-26 20:37:35 -07:00
mthca_cq.c IB/mthca: Make all device methods truly reentrant 2006-06-17 20:37:41 -07:00
mthca_dev.h IB/mthca: Fix race in reference counting 2006-05-09 10:50:29 -07:00
mthca_doorbell.h [PATCH] IB: sparse endianness cleanup 2005-08-26 20:37:35 -07:00
mthca_eq.c [PATCH] irq-flags: misc drivers: Use the new IRQF_ constants 2006-07-02 13:58:50 -07:00
mthca_mad.c IB/mthca: Add client reregister event generation 2006-06-17 20:37:36 -07:00
mthca_main.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mthca_mcg.c IB/mthca: Fix section mismatch problems 2006-03-29 09:36:46 -08:00
mthca_memfree.c IB/mthca: Use an enum for HCA page size 2006-03-20 10:08:19 -08:00
mthca_memfree.h IB/mthca: Use an enum for HCA page size 2006-03-20 10:08:19 -08:00
mthca_mr.c IB/mthca: FMR ioremap fix 2006-05-10 15:16:57 -07:00
mthca_pd.c IB/mthca: Fix section mismatch problems 2006-03-29 09:36:46 -08:00
mthca_profile.c IB/mthca: Optimize large messages on Sinai HCAs 2006-03-20 10:08:22 -08:00
mthca_profile.h [PATCH] IB/mthca: Add SRQ implementation 2005-08-26 20:37:37 -07:00
mthca_provider.c IB/mthca: Make all device methods truly reentrant 2006-06-17 20:37:41 -07:00
mthca_provider.h IB/mthca: Make all device methods truly reentrant 2006-06-17 20:37:41 -07:00
mthca_qp.c [PATCH] mthca: initialize send and receive queue locks separately 2006-07-04 10:24:57 -07:00
mthca_reset.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
mthca_srq.c IB/mthca: Make all device methods truly reentrant 2006-06-17 20:37:41 -07:00
mthca_uar.c [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
mthca_user.h IB/mthca: Add device-specific support for resizing CQs 2006-03-20 10:08:08 -08:00
mthca_wqe.h IB/mthca: fix posting of send lists of length >= 255 on mem-free HCAs 2005-11-29 11:33:46 -08:00