diff mbox

IB/ehca: Reduce number of spin_lock/spin_unlocks in ehca_poll_eqs

Message ID 20091127031320.GV32182@kryten (mailing list archive)
State Rejected
Headers show

Commit Message

Anton Blanchard Nov. 27, 2009, 3:13 a.m. UTC
None
diff mbox

Patch

Index: linux.trees.git/drivers/infiniband/hw/ehca/ehca_main.c
===================================================================
--- linux.trees.git.orig/drivers/infiniband/hw/ehca/ehca_main.c	2009-11-27 10:17:29.000000000 +1100
+++ linux.trees.git/drivers/infiniband/hw/ehca/ehca_main.c	2009-11-27 10:19:08.000000000 +1100
@@ -957,15 +957,17 @@  void ehca_poll_eqs(unsigned long data)
 			int max = 3;
 			volatile u64 q_ofs, q_ofs2;
 			unsigned long flags;
+
 			spin_lock_irqsave(&eq->spinlock, flags);
+
 			q_ofs = eq->ipz_queue.current_q_offset;
-			spin_unlock_irqrestore(&eq->spinlock, flags);
 			do {
-				spin_lock_irqsave(&eq->spinlock, flags);
 				q_ofs2 = eq->ipz_queue.current_q_offset;
-				spin_unlock_irqrestore(&eq->spinlock, flags);
 				max--;
 			} while (q_ofs == q_ofs2 && max > 0);
+
+			spin_unlock_irqrestore(&eq->spinlock, flags);
+
 			if (q_ofs == q_ofs2)
 				ehca_process_eq(shca, 0);
 		}