rpcsx/rpcs3/Emu
Eladash f2997e4c00 LV2: Fix the most annoying race ever
Timeline of the race:
1. The PPU is in SLEEP state. state = suspend.
2. lv2_obj::awake is called on the traced thread and is now in ONPROC state, state = signal.
3. lv2_obj::awake is called by another thread externally with a priority higher than our traced thread and appends it to g_pending. state = suspend + signal.
4. lv2_obj::sleep/set_priority (higering priority) is called on any thread which is in ONPROC. Causing it to enter SLEEP or RUNNING state, while the traced thread is back in queue in ONPROC. state = suspend + signal.
5. The traced thread finally calls lv2_obj::awake on itself, g_pending decrements to 0 and we a have a rescheduling event, after XOR state = 0!!! (no signal)
6. In check_state: cpu_sleep_called is now true and remains this way.
7. Another thread with a higher prioty kicks in and appends the traced thread into g_pending. state = suspend.
8. The traced thread is at cpu_thread::cpu_wait(), and that's where it's gonna spend the rest of its life.
2022-08-11 12:44:40 +03:00
..
Audio Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
Cell LV2: Fix the most annoying race ever 2022-08-11 12:44:40 +03:00
CPU CPUThread.cpp: Fix cpu_flag::pending reset 2022-08-11 11:42:16 +03:00
Io cellMusic: Fix resume, fast forward and rewind 2022-07-27 07:39:55 +02:00
Memory LV2: Move nearly all notifications out of all mutex scopes including IDM 2022-08-07 20:23:54 +03:00
NP Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
RSX LV2: Optimizations and fixes 2022-08-11 11:42:16 +03:00
cache_utils.cpp Implement FN (lambda shortener) 2022-07-08 14:47:41 +03:00
cache_utils.hpp Move unspecific Emulator code out of System.cpp 2021-04-24 11:21:22 +03:00
CMakeLists.txt gl: Fix incomplete stencil view of depth-stencil texture 2022-08-03 23:33:31 +03:00
GameInfo.h Move types.h to util/types.hpp 2020-12-12 15:12:01 +03:00
GDB.cpp sys_net refactor (#11740) 2022-04-09 14:51:22 +02:00
GDB.h Implement fill_array() utility 2021-04-19 12:33:32 +03:00
IdManager.cpp Savestates: HLE state saving POC in sys_lwmutex 2022-07-06 19:43:25 +03:00
IdManager.h IdManager.h: Do not lock IDM mutex if the preliminary ID check failed 2022-08-07 20:23:54 +03:00
IPC.h LV2: Improve IPC support (#10206) 2021-05-07 09:58:30 +03:00
IPC_config.cpp Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
IPC_config.h Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
IPC_socket.cpp Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
IPC_socket.h Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
localized_string.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
localized_string.h Remove BOM markers 2020-12-06 15:30:12 +03:00
localized_string_id.h implement cellPhotoImport 2022-07-26 17:27:35 +02:00
perf_meter.cpp Initial Linux Aarch64 support 2022-01-15 06:48:04 +03:00
perf_meter.hpp Initial Linux Aarch64 support 2022-01-15 06:48:04 +03:00
perf_monitor.cpp Log cpu usage periodically 2022-03-16 19:42:06 +01:00
perf_monitor.hpp Log cpu usage periodically 2022-03-16 19:42:06 +01:00
savestate_utils.cpp Savestates: savestate reload fix 2022-07-19 10:43:51 +03:00
System.cpp System.cpp: Replace std::filesystem usage (#12474) 2022-08-08 05:46:32 +03:00
System.h cellPhotoDecode: optimize get_scaled_image 2022-07-29 08:05:35 +02:00
system_config.cpp Qt: fix initial TSX selection 2021-11-06 13:47:43 +01:00
system_config.h Savestates: Fix "Suspend Emulation Savestate Mode" setting 2022-07-12 15:15:42 +03:00
system_config_types.cpp rsx: PS3 Native frame limiter improvements, add Infinite frame limiter 2022-06-25 15:30:41 +02:00
system_config_types.h rsx: PS3 Native frame limiter improvements, add Infinite frame limiter 2022-06-25 15:30:41 +02:00
system_progress.cpp Log cpu usage periodically 2022-03-16 19:42:06 +01:00
system_progress.hpp overlays: Show feedback while stopping ppu compilation 2021-09-16 22:18:43 +02:00
system_utils.cpp Return NPD header in verify_npdrm_self_headers and VerifyEDATHeaderWithKLicense 2022-05-10 23:24:00 +02:00
system_utils.hpp Use simpler C00 unlock EDAT check in GUI 2022-03-09 22:39:30 +03:00
title.cpp Cleanup and move sysinfo.h -> util/sysinfo.hpp 2020-12-18 12:55:54 +03:00
title.h Remove BOM markers 2020-12-06 15:30:12 +03:00
VFS.cpp Allow non-existing paths in vfs::retrieve 2022-07-19 10:43:51 +03:00
VFS.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
vfs_config.cpp VFS: Add device_info to vfs config 2022-05-10 19:39:35 +02:00
vfs_config.h Mount custom dev_bdvd if a disc game was mounted from dev_hdd0 2022-07-22 07:36:49 +02:00