Commit graph

702 commits

Author SHA1 Message Date
Elad 575a245f8d
IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
Elad b4505600c7 PPU: Notify SPUs while waiting for its own state 2024-11-30 18:06:34 +02:00
Elad a4ea71d18f CELL: Rewrite reservation notification postponing 2024-11-30 18:06:34 +02:00
Elad 68d74bc28a Progress Dialog: Fix recursion and concurrency use of text updates 2024-11-16 12:22:23 +02:00
Megamouse 7866dc2e34 overlays: localize RPCS3 progress dialog 2024-11-15 09:48:12 +01:00
kd-11 be0ef0cc28 macos - Fix crash executing resolver 2024-08-24 14:13:14 +03:00
kd-11 c2f5de1c55 Fix compiler warnings about unused args for aarch64 2024-08-20 05:18:53 +03:00
Elad Ashkenazi 46ceeed10d Debugger/PPU: Minor bugfix in CR register dump 2024-08-15 14:05:25 +03:00
Elad Ashkenazi d0ebba6c5e CELL: New reservation notifications mechanism 2024-08-14 11:53:00 +03:00
kd-11 1200bbe7cc Address review comments 2024-08-08 13:40:07 +03:00
kd-11 839a25e129 Bump scratch to 8k 2024-08-08 13:40:07 +03:00
kd-11 cba658baba Complete PPU support 2024-08-08 13:40:07 +03:00
kd-11 34549445a8 Migrate PPU to post-process execution model 2024-08-08 13:40:07 +03:00
kd-11 56cc5d9355 Initial PPU LLVM implementation for aarch64 2024-08-08 13:40:07 +03:00
Elad Ashkenazi 33851d51ab Fixup and Improve CELL reservation notifications 2024-07-01 18:59:26 +03:00
Elad Ashkenazi f948a80242 CELL: More efficient reservation notificatins 2024-06-30 07:46:14 +03:00
Elad Ashkenazi 87f5368d3c PPU: Fix access violation on logging 2024-06-23 19:29:13 +03:00
Elad Ashkenazi 0b22423ab8 Minor fs::file usage fixes
Do not crash on file creation failure. Make some config writes atomic.
2024-06-10 13:45:23 +03:00
Elad Ashkenazi 6fff22391c PPU Analyzer: Utilize exported functions 2024-06-08 14:09:37 +03:00
Elad Ashkenazi 26b21ed031 LLVM: Prevent crash on disk space shortage 2024-05-30 11:41:24 +03:00
Eladash f9345c7699 SPU LLVM: PUTLLC 16 Optimization
Also, do not check LR event if already raised in PUTLLC
2024-05-21 16:37:54 +03:00
Megamouse 04d6ff274b Move cache dir code to utils 2024-05-07 08:47:29 +02:00
Megamouse c11c286206 Adust vsh cache dir criteria 2024-05-07 08:47:29 +02:00
Megamouse f418ad74f5 VSH: move cache to /cache/vsh/ 2024-05-07 08:47:29 +02:00
Megamouse dff7352e2e llvm: silence warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing] 2024-04-20 01:38:11 +02:00
Eladash 7bf8917c08 PPU LLVM: Fix crash in Unity games 2024-04-19 20:51:37 +03:00
Eladash 103b2fe5fd PPU/reservations: send thread notification only if data changed 2024-04-12 09:58:30 +03:00
Eladash 597a9f6dd6 PPU Loader: Fix unload of HLEd PRX modules 2024-04-01 12:20:38 +03:00
Eladash e90b399329 PPU LLVM: Fix leak of modules outside dev_flash/sys/internal
Cache path was not matching on removal
2024-03-30 21:58:26 +03:00
Eladash e38b005a8b PPU LLVM: Unify memory limit for PRX and Overlay files 2024-03-30 21:58:26 +03:00
Eladash f0abb4473e PPU LLVM: Fix memory leak on precompilation 2024-03-30 21:58:26 +03:00
oltolm d62e90f5b4 use the pass manager instead of the legacy one 2024-03-30 05:06:29 +03:00
Eladash cc2fa94fa1 PPU: Fix logging of sys_interrupt syscalls 2024-03-28 16:24:47 +02:00
Eladash 6a1fa88e15 PPU: Fixup savestate prio bit usage 2024-03-27 19:59:22 +02:00
Eladash 7468d96c51 Savestates: safe saving while cellSaveData is active 2024-03-27 19:59:22 +02:00
Eladash 750359d780 Fixup emulation stopping 2024-03-27 19:59:22 +02:00
Eladash 8588b2b11a vm: Fix writer lock leak 2024-03-27 19:59:22 +02:00
Eladash 68349e48cd Savestates: Save PPU running order 2024-03-26 21:35:53 +02:00
Elad Ashkenazi 29ad568791 Fix ppu_thread::serialize_common 2024-03-25 12:05:24 +02:00
Elad.Ash e32ed90d21
PPU LLVM: Remove one external symbol resolve for BLR 2024-03-21 15:56:31 +02:00
Eladash 2f822abb47 PPU LLVM: Use symbol resolver function to resolve functions 2024-03-20 12:48:31 +02:00
Eladash f47c7e0ef1 PPU LLVM: Relax MSELF entry name constraints
These names are a hint
2024-02-16 10:42:57 +02:00
Eladash f943deb2c3 PPU LLVM: Do not use possible duplicates in MSELF 2024-02-16 10:42:57 +02:00
Eladash 85884d14cd PPU LLVM: Add more MSELF file checks
Do not crash on invalid files.
2024-02-16 10:42:57 +02:00
Megamouse 7a02787bee fix some more warnings 2023-12-30 21:14:26 +01:00
Megamouse 59c58aa3cf fix some warnings 2023-12-30 19:07:35 +01:00
Eladash 69ef9c8a6a PPU/sys_dbg: Implement self-modifying code 2023-12-03 12:57:21 +02:00
Eladash d449420a45 PPU Progress Dialog: Add "Applying PPU Code" stage 2023-11-28 21:18:18 +02:00
Eladash 0416f6361c Fix file_view::read_at and file_view::get_stat 2023-11-28 16:46:44 +02:00
Eladash 5dbeb68ed2 Savestates: Fix optional_savestate_state use 2023-11-27 12:36:17 +02:00