From 390b192f0af58733c94f08ab129367a0f85b5dd7 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 1 Feb 2021 18:24:08 +0300 Subject: [PATCH] TSX: workaround for check_state freezes --- rpcs3/Emu/CPU/CPUThread.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index 8ed5c2d234..921d37e0e9 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -757,7 +757,7 @@ bool cpu_thread::check_state() noexcept { u64 ctr = g_suspend_counter; - if (ctr >> 2 == s_tls_sctr >> 2) + if (ctr >> 2 == s_tls_sctr >> 2 && state & cpu_flag::pause) { if (i < 20 || ctr & 1) { @@ -765,7 +765,8 @@ bool cpu_thread::check_state() noexcept } else { - g_suspend_counter.wait(ctr, -4); + // TODO: fix the workaround + g_suspend_counter.wait(ctr, -4, atomic_wait_timeout{100}); } } else