From 63b08143d6c6f74ce8ed3f5a83adc070cddc8e6b Mon Sep 17 00:00:00 2001
From: Torvald Riegel <triegel@redhat.com>
Date: Mon, 20 Feb 2012 20:57:37 +0000
Subject: [PATCH] libitm: Put gl_wt global lock on separate cache line.

	libitm/
	* method-gl.cc (gl_wt_dispatch::orec): Put on separate cacheline.

From-SVN: r184403
---
 libitm/ChangeLog    | 4 ++++
 libitm/method-gl.cc | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index da94906bcd3c..2676cbef4b03 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,7 @@
+2012-02-20  Torvald Riegel  <triegel@redhat.com>
+
+	* method-gl.cc (gl_wt_dispatch::orec): Put on separate cacheline.
+
 2012-02-20  Torvald Riegel  <triegel@redhat.com>
 
 	* method-gl.cc (gl_wt_dispatch::rollback): Optimize memory orders.
diff --git a/libitm/method-gl.cc b/libitm/method-gl.cc
index 4fd506ef1543..4b6769ba2c00 100644
--- a/libitm/method-gl.cc
+++ b/libitm/method-gl.cc
@@ -41,7 +41,8 @@ struct gl_mg : public method_group
   static gtm_word clear_locked(gtm_word l) { return l & ~LOCK_BIT; }
 
   // The global ownership record.
-  atomic<gtm_word> orec;
+  // No tail-padding necessary (the virtual functions aren't used frequently).
+  atomic<gtm_word> orec __attribute__((aligned(HW_CACHELINE_SIZE)));
 
   virtual void init()
   {
@@ -52,7 +53,6 @@ struct gl_mg : public method_group
   virtual void fini() { }
 };
 
-// TODO cacheline padding
 static gl_mg o_gl_mg;
 
 
-- 
GitLab