| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2022-02-02 | Merge pull request #7835 from bunnei/page-table-lock | bunnei | |
| hle: kernel: KPageTable: Migrate locks to KScopedLightLock. | |||
| 2022-02-02 | general: Replace NonCopyable struct with equivalents | Lioncash | |
| 2022-02-02 | general: Move deleted copy/move constructor/assignment operators to public ↵ | Lioncash | |
| interface This allows for better compiler errors, where the compiler will state a copy or move couldn't occur due to the relevant function being deleted. Previously a compiler would warn about the relevant function not being accessible (which, while true, isn't as informative as it could be). | |||
| 2022-02-01 | hle: kernel: KPageTable: Migrate locks to KScopedLightLock. | bunnei | |
| - More accurately reflects real kernel behavior by using guest locks. | |||
| 2022-01-31 | svc: Add 32 bit SynchronizePreemptionState | Narr the Reg | |
| Used by Espgaluda II | |||
| 2022-01-27 | hle: kernel: KScheduler: Fix deadlock with core waiting for a thread lock ↵ | bunnei | |
| that has migrated. - Previously, it was possible for a thread migration to occur from core A to core B. - Next, core B waits on a guest lock that must be released by a thread queued for core A. - Meanwhile, core A is still waiting on the core B's current thread lock - resulting in a deadlock. - Fix this by try-locking the thread lock. - Fixes softlocks in FF8 and Pokemon Legends Arceus. | |||
| 2022-01-26 | Merge pull request #7762 from bunnei/un-map-improve | bunnei | |
| Kernel Memory Updates (Part 4): Improve Un/MapPages, and more. | |||
| 2022-01-25 | Merge pull request #7771 from lioncash/assert | Morph | |
| kernel/k_affinity_mask: Remove duplicated assert | |||
| 2022-01-24 | kernel/k_affinity_mask: Remove duplicated assert | Lioncash | |
| This is already checked inside GetCoreBit() | |||
| 2022-01-22 | hle: kernel: KThread: Improve Increment/Decrement RunningThreadCount. | bunnei | |
| - Previously implementation was incorrect, and would occasionally underflow. | |||
| 2022-01-22 | core: hle: kernel: KPageTable: Various improvements to MapPages and UnmapPages. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: MapProcessCode: Various cleanup. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: ReserveTransferMemory: Various cleanup. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: ResetTransferMemory: Various cleanup. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: SetMemoryAttribute: Various cleanup. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: Assert valid address on GetPhysicalAddr. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: Operate: Assert lock ownership. | bunnei | |
| 2022-01-22 | core: hle: kernel: KPageTable: SetHeapSize: Cleanup & take physical memory lock. | bunnei | |
| 2022-01-22 | core: hle: kernel: Refactor Un/MapPhysicalMemory to remove unnecessary methods. | bunnei | |
| 2022-01-22 | core: hle: kernel: Rename Un/Map to Un/MapMeory. | bunnei | |
| 2022-01-21 | hle: kernel: KThread: Ensure host (dummy) threads block on locking. | bunnei | |
| - But do not enter the priority queue, as otherwise they will be scheduled. - Allows dummy threads to use guest synchronization primitives. | |||
| 2022-01-20 | hle: kernel: Remove redundant tracking of dummy threads. | bunnei | |
| - These are already tracked by kernel's registered_objects member. | |||
| 2022-01-20 | hle: kernel: KThread: DummyThread can be waited, ensure wait_queue is not ↵ | bunnei | |
| nullptr. | |||
| 2022-01-20 | hle: kernel: KThread: Decrease DummyThread priority to ensure it is never ↵ | bunnei | |
| scheduled. | |||
| 2022-01-20 | hle: kernel: service_thread: Ensure dummy thread is closed & destroyed on ↵ | bunnei | |
| thread exit. | |||
| 2022-01-20 | hle: kernel: KServerSession: Remove hack for CompleteSyncRequest. | bunnei | |
| - This does not appear to be necessary anymore. | |||
| 2022-01-20 | hle: kernel: KServerSession: Simplify CompleteSyncRequest EndWait. | bunnei | |
| - Considering is_thread_waiting is never set, so we can remove IsThreadWaiting. - KThread::EndWait will take the scheduler lock, so we can remove the redundant lock. | |||
| 2022-01-20 | hle: kernel: KThread: Ensure dummy threads never call EndWait. | bunnei | |
| - These are only used by host threads for locking and will never have a wait_queue. | |||
| 2022-01-20 | hle: kernel: KScheduler: Ensure dummy threads are never scheduled. | bunnei | |
| - These are only used by host threads for locking. | |||
| 2022-01-20 | hle: kernel: KThread: Rename thread_type_for_debugging -> thread_type. | bunnei | |
| - This will be used to ensure that we do not schedule dummy threads. | |||
| 2022-01-18 | Merge pull request #7701 from bunnei/clear-mem-pages | bunnei | |
| Kernel Memory Updates (Part 3): Clear KMemoryManager pages & other fixes | |||
| 2022-01-17 | Merge pull request #7712 from bunnei/fix-thread-exit | bunnei | |
| Accurately implement thread exit | |||
| 2022-01-17 | hle: remove no-op code | Valeri | |
| Found by static analysis with PVS-Studio. Nobody seems to really know what was it doing there. | |||
| 2022-01-14 | hle: kernel: k_memory_manager: Clear pages on allocation & free. | bunnei | |
| - Heap pages should be zero'd. - Also explicitly passed along heap allocation option. | |||
| 2022-01-14 | core: hle: kernel: KThread: Integrate with KWorkerTask and implement ↵ | bunnei | |
| DoWorkerTaskImpl. - This is used to terminate a thread asynchronously after it has been exited. - This fixes a crash that can occur in Pokemon Sword/Shield because a thread is incorrectly closed on svcExitThread, then, the thread is destroyed on svcCloseHandle while it is still scheduled. - Instead, we now wait for the thread to no longer be scheduled on all cores before destroying it from KWorkerTaskManager, which is accurate to HOS behavior. | |||
| 2022-01-14 | core: hle: kernel: KProcess: Integrate with KWorkerTask and add ↵ | bunnei | |
| unimplemented DoWorkerTaskImpl. | |||
| 2022-01-14 | core: hle: kernel: KThread: Replace Suspend with UpdateState & various updates. | bunnei | |
| - This makes our implementations of these more closely match HOS. | |||
| 2022-01-14 | core: hle: kernel: Instantiate a kernel instance of KWorkerTaskManager. | bunnei | |
| 2022-01-14 | core: hle: kernel: Add KWorkerTask and KWorkerTaskManager. | bunnei | |
| - These primitives are used to dispatch asynchronous kernel tasks from KThread and KProcess. | |||
| 2022-01-14 | hle: 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-14 | Merge pull request #7699 from bunnei/fix-service-thread-race | Mai M | |
| hle: kernel: Fix service_threads access to be thread safe. | |||
| 2022-01-13 | hle: 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-11 | hle: kernel: k_page_table: Update SetProcessMemoryPermission. | bunnei | |
| 2022-01-11 | hle: kernel: k_page_table: ReadAndWrite -> UserReadWrite. | bunnei | |
| 2022-01-11 | hle: kernel: k_page_table: Rename *ProcessCodeMemory -> *CodeMemory. | bunnei | |
| 2022-01-08 | core: hle: kernel: svc: Updates to SetMemoryAttribute and SetMemoryPermission. | bunnei | |
| 2022-01-08 | core: hle: kernel: k_page_table: Update CheckMemoryState. | bunnei | |
| 2021-12-30 | core: 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-28 | core: 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-27 | Merge pull request #7621 from bunnei/set-mem-perm | bunnei | |
| core: hle: kernel: Implement SetMemoryPermission. | |||
