mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-14 10:48:36 +12:00
Implement SPU page faults notifications
* Implement both RawSPU and threaded SPU page fault recovery * Guard page_fault_notification_entries access with a mutex * Add missing lock in sys_ppu_thread_recover_page_fault/get_page_fault_context * Fix EINVAL check in sys_ppu_thread_recover_page_fault, previously when the event was not found begin() was erased and CELL_OK was returned. * Fixed page fault recovery waiting logic: - Do not rely on a single thread_ctrl notification (unsafe) - Avoided a race where ::awake(ppu) can be called before ::sleep(ppu) therefore nop-ing out the notification * Avoid inconsistencies with vm flags on page fault cause detection * Fix sys_mmapper_enable_page_fault_notification EBUSY check from RE it's allowed to register the same queue twice (on a different area) but not to enable page fault notifications twice
This commit is contained in:
parent
1875dc3f18
commit
4a28319edf
7 changed files with 212 additions and 99 deletions
|
@ -257,8 +257,8 @@ const std::array<ppu_function_t, 1024> s_ppu_syscall_table
|
|||
uns_func, //195 (0x0C3) UNS
|
||||
BIND_FUNC(sys_raw_spu_set_spu_cfg), //196 (0x0C4)
|
||||
BIND_FUNC(sys_raw_spu_get_spu_cfg), //197 (0x0C5)
|
||||
null_func,//BIND_FUNC(sys_spu_thread_recover_page_fault)//198 (0x0C6)
|
||||
null_func,//BIND_FUNC(sys_raw_spu_recover_page_fault) //199 (0x0C7)
|
||||
BIND_FUNC(sys_spu_thread_recover_page_fault), //198 (0x0C6)
|
||||
BIND_FUNC(sys_raw_spu_recover_page_fault), //199 (0x0C7)
|
||||
|
||||
null_func, null_func, null_func, null_func, null_func, //204 UNS?
|
||||
null_func, null_func, null_func, null_func, null_func, //209 UNS?
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue