aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
AgeCommit message (Collapse)Author
2022-01-14hle: kernel: Fix service_threads access to be thread safe V2.bunnei
- PR #7699 attempted to fix CreateServiceThread and ReleaseServiceThread to be thread safe, but inadvertently introduced a possible dead-lock. - With this PR, we use a worker thread to manage the service thread list, allowing it only to be accessed by a single thread, and guaranteeing threads will not destroy themselves. - Fixes a rare crash in Pokemon Sword/Shield, I've now run this game for ~12 hours non-stop and am quite confident this is a good solution for this issue.
2022-01-14Merge pull request #7699 from bunnei/fix-service-thread-raceMai M
hle: kernel: Fix service_threads access to be thread safe.
2022-01-13hle: kernel: Fix service_threads access to be thread safe.bunnei
- CreateServiceThread and ReleaseServiceThread can be accessed by different threads, uses a lock to make this thread safe. - Fixes a rare crash in Pokemon Sword/Shield that can occur when a new service thread is being created while an old one is being destroyed.
2022-01-11hle: kernel: k_page_table: Update SetProcessMemoryPermission.bunnei
2022-01-11hle: kernel: k_page_table: ReadAndWrite -> UserReadWrite.bunnei
2022-01-11hle: kernel: k_page_table: Rename *ProcessCodeMemory -> *CodeMemory.bunnei
2022-01-08core: hle: kernel: svc: Updates to SetMemoryAttribute and SetMemoryPermission.bunnei
2022-01-08core: hle: kernel: k_page_table: Update CheckMemoryState.bunnei
2021-12-30core: hle: kernel: Implement thread pinning.bunnei
- We largely had the mechanics in place for thread pinning, this change hooks these up. - Validated with tests https://github.com/Atmosphere-NX/Atmosphere/blob/master/tests/TestSvc/source/test_thread_pinning.cpp.
2021-12-28core: hle: kernel: Updated implementation of svcSetHeapSize.bunnei
- Updates our svcSetHeapSize with latest HOS, furthermore allowing heap size to properly be extended/shrunk. - Validated with tests https://github.com/Atmosphere-NX/Atmosphere/blob/master/tests/TestSvc/source/test_set_heap_size.cpp.
2021-12-27Merge pull request #7621 from bunnei/set-mem-permbunnei
core: hle: kernel: Implement SetMemoryPermission.
2021-12-23core: hle: kernel: Implement SetMemoryPermission.bunnei
- Not seen in any games yet, but validated with kernel tests.
2021-12-23 core: hle: kernel: KThread: X18 should be a cryptographically random number.bunnei
- This was added with firmware 11.0.0 (https://switchbrew.org/wiki/11.0.0). - X18 is OR'd by kernel with 1, to make sure it is odd.
2021-12-21hle: kernel: svc: GetInfo: Fix error checking with IdleTickCount.bunnei
- Enforce tha the supplied handle is invalid, not valid. - This gets Witcher 3 booting.
2021-12-20Merge pull request #7597 from bunnei/remove-global-lockbunnei
core: hle: Remove global HLE lock.
2021-12-19kernel: Manually destroy the current process during shut downameerj
Avoids a memory leak.
2021-12-17core: hle: Remove global HLE lock.bunnei
- This was added early on as a hack to protect against some concurrency issues. - It's not clear that this serves any purpose anymore, and if it does, individual components should be fixed rather than using a global recursive mutex.
2021-12-13Remove erroneous #pragma onceValeri
2021-12-12Merge pull request #7462 from bunnei/kernel-improve-schedulingbunnei
Kernel: Improve threading & scheduling V3
2021-12-07Update k_code_memory.hitsmeft24
2021-12-07make KCodeMemory::GetSourceAddress constitsmeft24
Co-authored-by: Mai M. <mathew1800@gmail.com>
2021-12-06hle: kernel k_scheduler: EnableScheduling: Remove redundant ↵bunnei
GetCurrentThreadPointer calls.
2021-12-06hle: kernel k_process: Remove unnecessary .at usage with thread pinning methods.bunnei
2021-12-06hle: kernel: Remove unnecessary virtual specifier on NotifyAvailable.bunnei
2021-12-06hle: kernel: Remove unnecessary virtual specifier on EndWait.bunnei
2021-12-06hle: kernel: k_light_condition_variable: Revert unnecessary license comment ↵bunnei
changes.
2021-12-06hle: kernel: k_condition_variable: Revert unnecessary style changes.bunnei
2021-12-06hle: kernel: Remove unnecessary virtual specifier on CancelWait.bunnei
2021-12-06hle: kernel: service_thread: Force stop threads on destruction.bunnei
2021-12-06hle: kernel: k_light_lock: Implement CancelWait.bunnei
- Fixes a crash in Megadimension Neptunia VII.
2021-12-06hle: kernel: service_thread: Use std::jthread.bunnei
- Fixes a potential deadlock on service thread shutdown.
2021-12-06hle: kernel: k_thread: Skip reschedule on DisableDispatch with SC.bunnei
2021-12-06hle: kernel: k_thread: Rename sleeping_queue -> wait_queue.bunnei
2021-12-06hle: kernel: svc: Fix deadlock that can occur with single core.bunnei
2021-12-06hle: kernel: k_thread: Treat dummy threads as a special type.bunnei
2021-12-06hle: kernel: fix timing on thread preemptionFernandoS27
2021-12-06hle: kernel: fix scheduling ops from HLE host thread.FernandoS27
2021-12-06hle: kernel: Add a flag for indicating that the kernel is currently shutting ↵bunnei
down.
2021-12-06hle: kernel: KSynchronizationObject: Fix variable shadowing.bunnei
2021-12-06hle: kernel: Cleanup to match coding style.bunnei
2021-12-06hle: kernel: KProcess: Improvements for thread pinning.bunnei
2021-12-06hle: kernel: KThreadQueue: Remove deprecated code.bunnei
2021-12-06hle: kernel: KConditionVariable: Various updates & simplifications.bunnei
2021-12-06hle: kernel: KThread: Migrate to updated KThreadQueue (part 2).bunnei
2021-12-06hle: kernel: KThread: Migrate to updated KThreadQueue (part 1).bunnei
2021-12-06hle: kernel: KConditionVariable: Migrate to updated KThreadQueue.bunnei
2021-12-06hle: kernel: KServerSession: Migrate to updated KThreadQueue.bunnei
2021-12-06hle: kernel: KLightConditionVariable: Migrate to updated KThreadQueue.bunnei
2021-12-06hle: kernel: KLightLock: Migrate to updated KThreadQueue.bunnei
2021-12-06hle: kernel: KAddressArbiter: Migrate to updated KThreadQueue.bunnei