linux/drivers/infiniband/hw/ehca
Hoang-Nam Nguyen 31726798bd IB/ehca: Fix sync between completion handler and destroy cq
This patch fixes two issues reported by Roland Dreier and Christoph Hellwig:

- Mismatched sync/locking between completion handler and destroy cq We
  introduced a counter nr_events per cq to track number of irq events
  seen. This counter is incremented when an event queue entry is seen
  and decremented after completion handler has been called regardless
  if scaling code is active or not. Note that nr_callbacks tracks
  number of events assigned to a cpu and both counters can potentially
  diverge.

  The sync between running completion handler and destroy cq is done
  by using the global spin lock ehca_cq_idr_lock.

- Replace yield by wait_event on the counter above to become zero.

Signed-off-by: Hoang-Nam Nguyen <hnguyen@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2007-03-01 13:04:05 -08:00
..
ehca_av.c [PATCH] slab: remove SLAB_KERNEL 2006-12-07 08:39:24 -08:00
ehca_classes.h IB/ehca: Fix sync between completion handler and destroy cq 2007-03-01 13:04:05 -08:00
ehca_classes_pSeries.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
ehca_cq.c IB/ehca: Fix sync between completion handler and destroy cq 2007-03-01 13:04:05 -08:00
ehca_eq.c IB/ehca: Rework irq handler 2007-02-16 13:57:34 -08:00
ehca_hca.c IB/ehca: Change query_port() to return LINK_UP instead UNKNOWN 2007-02-16 13:57:34 -08:00
ehca_irq.c IB/ehca: Fix sync between completion handler and destroy cq 2007-03-01 13:04:05 -08:00
ehca_irq.h IB/ehca: Rework irq handler 2007-02-16 13:57:34 -08:00
ehca_iverbs.h IB/ehca: Remove use of do_mmap() 2007-02-04 14:11:57 -08:00
ehca_main.c IB/ehca: Fix sync between completion handler and destroy cq 2007-03-01 13:04:05 -08:00
ehca_mcast.c IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
ehca_mrmw.c [PATCH] Transform kmem_cache_alloc()+memset(0) -> kmem_cache_zalloc(). 2007-02-11 10:51:27 -08:00
ehca_mrmw.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
ehca_pd.c [PATCH] Transform kmem_cache_alloc()+memset(0) -> kmem_cache_zalloc(). 2007-02-11 10:51:27 -08:00
ehca_qes.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
ehca_qp.c [PATCH] Transform kmem_cache_alloc()+memset(0) -> kmem_cache_zalloc(). 2007-02-11 10:51:27 -08:00
ehca_reqs.c IB: Return qp pointer as part of ib_wc 2007-02-04 14:11:55 -08:00
ehca_sqp.c IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
ehca_tools.h IB/ehca: Fix eHCA driver compilation for uniprocessor 2006-10-30 20:52:51 -08:00
ehca_uverbs.c IB/ehca: Remove use of do_mmap() 2007-02-04 14:11:57 -08:00
hcp_if.c IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hcp_if.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hcp_phyp.c IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hcp_phyp.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hipz_fns.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hipz_fns_core.h IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00
hipz_hw.h IB/ehca: Use named constant for max mtu 2006-11-13 08:46:28 -08:00
ipz_pt_fn.c IB/ehca: Use WQE offset instead of WQE addr for pending work reqs 2006-11-29 15:33:08 -08:00
ipz_pt_fn.h IB/ehca: Rework irq handler 2007-02-16 13:57:34 -08:00
Kconfig IB/ehca: Allow en/disabling scaling code via module parameter 2007-02-16 13:57:34 -08:00
Makefile IB/ehca: Add driver for IBM eHCA InfiniBand adapters 2006-09-22 15:22:22 -07:00