From 9f625de51a18422df903d79b2585c8fb50f2d5f1 Mon Sep 17 00:00:00 2001 From: Eladash Date: Thu, 3 Aug 2023 13:26:11 +0300 Subject: [PATCH] vm.cpp/Non-TSX: Fixup potential deadlock --- rpcs3/Emu/Memory/vm.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/Memory/vm.cpp b/rpcs3/Emu/Memory/vm.cpp index 0c2c719957..36e9c2e636 100644 --- a/rpcs3/Emu/Memory/vm.cpp +++ b/rpcs3/Emu/Memory/vm.cpp @@ -391,14 +391,19 @@ namespace vm return; } + if (!get_range_lock_bits(true)) [[likely]] + { + return; + } + if (i < 100) busy_wait(200); else std::this_thread::yield(); - if (!get_range_lock_bits(true)) [[likely]] + if (cpu_flag::wait - cpu.state) { - return; + cpu.state += cpu_flag::wait; } } }