From c898f7b85f5488730f906bac9fb0d1c4ad2570c0 Mon Sep 17 00:00:00 2001
From: Torvald Riegel <triegel@redhat.com>
Date: Sat, 24 Dec 2011 01:42:48 +0000
Subject: [PATCH] libitm: Don't enforce privatization safety if already in
 serial mode.

	libitm/
	* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
	privatization safety if already in serial mode.

From-SVN: r182676
---
 libitm/ChangeLog   | 5 +++++
 libitm/beginend.cc | 7 ++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index abdf4fb62d8a..d2f0fd752f08 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,8 @@
+2011-12-24  Torvald Riegel  <triegel@redhat.com>
+
+	* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
+	privatization safety if already in serial mode.
+
 2011-12-24  Torvald Riegel  <triegel@redhat.com>
 
 	* beginend.cc (GTM::gtm_thread::restart): Add and handle
diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index 17f9d7490d89..797548192eb1 100644
--- a/libitm/beginend.cc
+++ b/libitm/beginend.cc
@@ -457,7 +457,12 @@ GTM::gtm_thread::trycommit ()
       // The transaction is now inactive. Everything that we still have to do
       // will not synchronize with other transactions anymore.
       if (state & gtm_thread::STATE_SERIAL)
-	gtm_thread::serial_lock.write_unlock ();
+        {
+          gtm_thread::serial_lock.write_unlock ();
+          // There are no other active transactions, so there's no need to
+          // enforce privatization safety.
+          priv_time = 0;
+        }
       else
 	gtm_thread::serial_lock.read_unlock (this);
       state = 0;
-- 
GitLab