Commit graph

731 commits

Author SHA1 Message Date
RipleyTom cd87a64621 Headers cleanup 2025-02-11 20:38:35 +01:00
Megamouse 3381a884d0 Fix some warnings 2025-01-08 20:02:33 +01:00
Elad a8bfa6a16c SPU: Operating system LR memory signals 2024-12-29 21:01:17 +02:00
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 a4ea71d18f CELL: Rewrite reservation notification postponing 2024-11-30 18:06:34 +02:00
Elad 926de68a79 Debugger: Dump related thread information on crash 2024-11-28 13:32:52 +02:00
oltolm 2b0f786b2d
Fix std::basic_string warnings (#16261) 2024-11-11 21:54:44 +02:00
Elad Ashkenazi bc22df8ba8 SPU: Optimize cellSpurs reservations 2024-11-03 11:13:54 +02:00
Elad 85d1649696 utils/atomic.hpp: Make atomic_op reject non-non-const lvalue 2024-11-02 21:43:35 +02:00
Megamouse 431221f172 Don't log "always" messages in fatal_error_listener until enabled
Opening the console breaks Qt cli popups
2024-10-25 20:10:46 +02:00
Elad Ashkenazi 3e516df214 SPU: Reimplement SPURS limiter 2024-10-17 13:59:56 +03:00
Elad Ashkenazi cef3ee2d80 SPU: More SPURS limiter fixes 2024-10-14 06:30:05 +03:00
Elad Ashkenazi 8fac136056 SPU: SPURS pause based average task order duration 2024-10-11 17:41:34 +03:00
Elad c009215983 SPU: Fix "Max SPURS Threads" performance 2024-10-11 07:28:28 +03:00
Elad Ashkenazi d51d5ce86d SPURS limiter tweaks 2024-10-07 15:02:23 +03:00
Elad f0c60b42c2
SPURS Task limit hotfix (#16140) 2024-09-27 22:15:06 +03:00
Elad 10dece1c80 SPU: Improve SPURS Task limit algorithm 2024-09-27 12:43:44 +03:00
Elad Ashkenazi 60b5adab63 SPU: SPURS limit update 2024-09-26 06:59:20 +03:00
Elad Ashkenazi 8b79fd3da1 SPU: Make SPURS limit a dynamic setting 2024-09-26 06:59:20 +03:00
Elad Ashkenazi 4b0a5bd1b8 SPU: Fix callback leak 2024-09-24 10:31:37 +03:00
Elad Ashkenazi 6995467ff6 SPU: SPURS limiter algorithm update 2024-09-24 10:31:37 +03:00
Elad Ashkenazi ad42a2b89a SPU: Task-based SPURS limiter 2024-09-24 10:31:37 +03:00
Elad Ashkenazi 11e3aa660e SPU: Remove condition from GETLLAR spin detection 2024-08-25 18:29:30 +03:00
kd-11 c2f5de1c55 Fix compiler warnings about unused args for aarch64 2024-08-20 05:18:53 +03:00
Elad Ashkenazi 981a1c56fb SPU: Disable transfer locking for RSX addresses 2024-08-15 14:05:25 +03:00
Elad Ashkenazi ce92341e75 SPU: Unlock RSX list transfers 2024-08-15 14:05:25 +03:00
Elad Ashkenazi 6fb05be9da CELL: Remove performance hack for reservation
With the new notification method, we can remove this hack with micro-consequences. (though it comes with benefit of not breaking current reservations spuriously)
2024-08-14 11:53:00 +03:00
Elad Ashkenazi d0ebba6c5e CELL: New reservation notifications mechanism 2024-08-14 11:53:00 +03:00
Elad Ashkenazi 3fa8994f4e SPU: Fix "SPU Accurate Reservations" off 2024-08-13 10:56:33 +03:00
Megamouse ff84e7c6e2 Fix overflow warning 2024-08-12 21:04:10 +02:00
Elad Ashkenazi 6c791541ee SPU: Fix bug in GETLLAR 2024-08-11 17:55:56 +03:00
kd-11 9d87e444ac Clear hv context 2024-08-08 13:40:07 +03:00
Elad Ashkenazi 77e8f9a8ab SPU: Utilize Operating System sleep in detected RCHCNT loop 2024-07-19 14:31:19 +03:00
Elad Ashkenazi f948a80242 CELL: More efficient reservation notificatins 2024-06-30 07:46:14 +03:00
Elad Ashkenazi 649714429b SPU: Notify threads on RdEventStat properly 2024-06-20 00:51:51 +03:00
Elad Ashkenazi dbb02241c5 SPU: Cleanup GETLLAR 2024-06-20 00:51:51 +03:00
Elad Ashkenazi 5b973448bf SPU: Better GETLLAR spin detection 2024-06-15 22:41:52 +03:00
Elad Ashkenazi d5935a37bb SPU: Notify threads if data changed in RdEventStat 2024-06-15 22:41:52 +03:00
Elad Ashkenazi 5693cc9eb3 SPU: smart GETLLAR spin detection 2024-06-15 22:41:52 +03:00
Elad Ashkenazi ac5d907002 SPU: Remove inaccurate GETLLAR option 2024-06-06 19:27:52 +03:00
Elad Ashkenazi 0da51d25bc SPU: Add block prefix to log if available 2024-05-30 11:41:24 +03:00
Eladash ff42459239 SPU Analyzer: Improve value propagation 2024-05-21 16:37:54 +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
Elad Ashkenazi a2dcbb9c13 Replace src_loc with std::soource_location 2024-05-21 14:19:12 +03:00
Megamouse b8f8d09f97 Fix spu_thread audit check 2024-05-18 16:16:08 +02:00
Megamouse dfee5b9a6c threads: replace magic number id_type with thread_class 2024-05-18 16:16:08 +02:00
Elad Ashkenazi 6d8575d0d0 Savestates: Warn on invalid SPU save state 2024-05-14 19:36:48 +03:00
Eladash 7bd4cfc5b3 Logging fix 2024-05-04 14:15:51 +03:00
Eladash 060ddca1ab SPU: Fixup breakpoints 2024-04-13 13:48:00 +03:00
Eladash 12bfc7d56a SPU/Debugger: Use bitset for breakpoints 2024-04-12 17:13:11 +03:00