Liam
61a8696510
k_server_session: preliminary support for userspace server sessions
2022-10-11 18:40:40 -04:00
Liam
9b34afa588
Add implementation of svcCreateSession
2022-10-11 18:15:45 -04:00
Liam
35d3e7db2a
common: remove "yuzu:" prefix from thread names
2022-10-03 18:43:56 -04:00
bunnei
01bb5d5c4d
Merge pull request #8637 from liamwhite/bad-interrupts
...
kernel: unlayer CPU interrupt handling
2022-08-07 17:48:55 -07:00
Andrea Pappacoda
cdb240f3d4
chore: make yuzu REUSE compliant
...
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.
Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.
The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.
Following REUSE has a few advantages over the current approach:
- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
`.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
files like binary assets / images is always accurate and up to date
To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.
[REUSE]: https://reuse.software
Follow-up to 01cf05bc75
2022-07-27 12:53:49 +02:00
Liam
6523854dd6
kernel: unlayer CPU interrupt handling
2022-07-25 12:14:15 -04:00
Morph
591d1f1b09
Merge pull request #8549 from liamwhite/kscheduler-sc
...
kernel: use KScheduler from Mesosphere
2022-07-25 12:00:31 -04:00
Kelebek1
458da8a948
Project Andio
2022-07-22 01:11:32 +01:00
Merry
a1d2fb314e
KCodeMemory: Mark virtual methods as override
2022-07-15 10:39:58 +01:00
Liam
a9a83fa726
kernel: Ensure all uses of disable_count are balanced
2022-07-14 22:47:18 -04:00
Liam
77137583cd
kernel: be more careful about initialization path for HLE threads
2022-07-14 22:47:18 -04:00
Liam
da07e13e07
kernel: fix single-core preemption points
2022-07-14 22:47:18 -04:00
Liam
21945ae127
kernel: fix issues with single core mode
2022-07-14 22:47:18 -04:00
Liam
0624c880bd
kernel: use KScheduler from mesosphere
2022-07-14 22:47:18 -04:00
bunnei
802bbb2263
Merge pull request #8559 from liamwhite/waiter-list
...
kernel: fix usage of waiter_list in Finalize
2022-07-11 12:10:01 -07:00
Kelebek1
b23c6b456c
PR
2022-07-10 08:29:37 +01:00
Kelebek1
240650f6a6
Rework CoreTiming
2022-07-10 06:59:40 +01:00
Liam
1611c53c12
kernel: fix usage of waiter_list in Finalize
2022-07-09 18:54:54 -04:00
liamwhite
7e75593c20
Merge pull request #8502 from liamwhite/end-wait
...
kernel: clean up waiting implementation
2022-07-07 17:31:49 -04:00
liamwhite
07e3c56f0d
Merge pull request #8532 from liamwhite/fiber-supplements
...
common/fiber: make fibers easier to use
2022-07-05 18:20:39 -04:00
Liam
ed0319cfed
common/fiber: make fibers easier to use
2022-07-02 12:33:49 -04:00
Liam
2c1e2c63c3
cpu_manager: properly check idle on return from preemption
2022-06-30 16:54:05 -04:00
Morph
01bc0c84f0
Merge pull request #8512 from german77/nnResult
...
Replace multiple names with a better name
2022-06-28 16:59:33 -07:00
bunnei
c78f6d4f20
Merge pull request #8504 from comex/mesosphere-current-process
...
Support `InfoType_MesosphereCurrentProcess`
2022-06-27 13:05:07 -07:00
german77
7b48e7b363
core: kernel: Replace instances of KPageLinkedList with KPageGroup
2022-06-26 20:21:45 -05:00
german77
a7d9be1384
core: Replace all instances of ResultCode with Result
2022-06-26 20:21:37 -05:00
comex
bf7e78795f
Re-add missing case
and braces, and trim whitespace
2022-06-25 18:01:56 -07:00
comex
a14438d013
Update src/core/hle/kernel/svc.cpp
...
Co-authored-by: liamwhite <liamwhite@users.noreply.github.com>
2022-06-25 18:00:29 -07:00
comex
48737a4bb2
Support InfoType_MesosphereCurrentProcess
2022-06-25 16:23:23 -07:00
Liam
075155022e
kernel: clean up waiting implementation
2022-06-25 13:36:14 -04:00
Liam
2c56e94702
kernel: make current thread pointer thread local
2022-06-23 00:28:00 -04:00
bunnei
95b844dbae
Merge pull request #8491 from Morph1984/extra-assert
...
KPageTable: Remove extraneous assert
2022-06-22 14:47:07 -07:00
bunnei
9da4e62573
Merge pull request #8483 from liamwhite/fire-emblem-three-semaphores
...
kernel: wait for threads to stop on pause
2022-06-22 14:46:33 -07:00
Morph
1c8f6ba18f
KPageTable: Remove extraneous assert
...
Since start is always 0 and VAddr is unsigned, we can safely remove this assert.
2022-06-21 21:28:54 -04:00
bunnei
737c446fc1
Merge pull request #8432 from liamwhite/watchpoint
...
core/debugger: memory breakpoint support
2022-06-21 16:04:57 -07:00
bunnei
73e13aa090
Merge pull request #8468 from liamwhite/dispatch-tracking
...
kernel: fix some uses of disable_count
2022-06-21 15:30:27 -07:00
Liam
24d7aaf43c
kernel: wait for threads to stop on pause
2022-06-18 16:54:33 -04:00
Nikita Strygin
cf7e4bda92
Implement ExitProcess svc
...
Currently this just stops all the emulation
This works under assumption that only application will try to use
ExitProcess, with services not touching it
If application exits - it quite makes sense to end the emulation
2022-06-16 21:35:34 +03:00
Liam
208ed712f4
core/debugger: memory breakpoint support
2022-06-16 13:18:07 -04:00
Liam
744a208763
kernel: fix some uses of disable_count
2022-06-15 20:53:49 -04:00
Fernando S
f86b770ff7
Merge pull request #8457 from liamwhite/kprocess-suspend
...
kernel: implement KProcess suspension
2022-06-16 02:41:12 +02:00
Mai
23514388ed
Merge pull request #8464 from liamwhite/break-debug
...
kernel: notify debugger on break SVC
2022-06-15 11:55:54 -04:00
Liam
a7358ff1d4
kernel: notify debugger on break SVC
2022-06-14 21:06:23 -04:00
Liam
20eab9fed9
core: centralize profile scope for Dynarmic
2022-06-14 18:19:04 -04:00
Liam
888f499188
kernel: implement KProcess suspension
2022-06-14 10:04:11 -04:00
Liam
bd38aefc57
kernel: fix passthrough of local captures in lambda
2022-06-13 20:09:32 -04:00
Liam
6f59e2676b
kernel: ensure class token lambda exit is unreachable
2022-06-13 20:09:00 -04:00
Liam
8fea7e56e5
kernel: fix inconsistency in AutoObjectTraits macro definitions
2022-06-13 20:09:00 -04:00
Liam
084d7d6b01
common: Change semantics of UNREACHABLE to unconditionally crash
2022-06-13 20:09:00 -04:00
bunnei
741da9c8bf
Merge pull request #8388 from liamwhite/simpler-pause
...
CpuManager: simplify pausing
2022-06-13 15:48:03 -07:00
Liam
6c659c3a16
kernel: fix KCodeMemory initialization
2022-06-09 12:33:28 -04:00
Liam
af022294dd
CpuManager: simplify pausing
2022-06-08 21:47:29 -04:00
Liam
07922abffc
core/debugger: Support reading guest thread names
2022-06-01 21:25:32 -04:00
Liam
989d4a7a41
core/debugger: Improved stepping mechanism and misc fixes
2022-06-01 02:15:15 -04:00
Liam
fb4b3c127f
core/debugger: Implement new GDB stub debugger
2022-06-01 00:01:25 -04:00
Morph
8eabdc058b
kernel: svc: Replace -1ULL with 0xFFFFFFFFFFFFFFFF
...
Resolves the C4146 compiler warning on MSVC.
2022-04-24 17:40:47 -04:00
Morph
99ceb03a1c
general: Convert source file copyright comments over to SPDX
...
This formats all copyright comments according to SPDX formatting guidelines.
Additionally, this resolves the remaining GPLv2 only licensed files by relicensing them to GPLv2.0-or-later.
2022-04-23 05:55:32 -04:00
german77
b2359f1527
hidbus: Implement hidbus and ringcon
2022-04-16 00:49:21 -05:00
Fernando S
34710065e8
Merge pull request #8172 from bunnei/kernel-mutex
...
hle: kernel: Use std::mutex instead of spin locks for most kernel locking.
2022-04-16 00:05:04 +02:00
Liam
f17aaeccf9
service: jit: Implement the JIT service
2022-04-13 08:41:27 -04:00
bunnei
ca2accfb25
Merge pull request #8165 from bunnei/ensure-session-port-cleanup
...
Kernel: Track open references to KServerPort and KServerSession.
2022-04-12 14:01:40 -07:00
bunnei
dc2dd5d5a6
Merge pull request #8178 from tech-ticks/skyline-icache-fix
...
hle: kernel: Invalidate entire icache in UnmapProcessMemory and UnmapCodeMemory (fixes #8174 )
2022-04-12 11:23:20 -07:00
bunnei
3f0b93925f
core: hle: kernel: k_thread: Rework dummy thread waiting.
2022-04-11 21:15:38 -07:00
bunnei
ae38b8bf5e
hle: kernel: k_spin_lock: Remove unused ThreadPause.
2022-04-11 21:13:40 -07:00
bunnei
8deaac8bd1
hle: kernel: Use std::mutex instead of spin locks for most kernel locking.
2022-04-11 21:13:40 -07:00
bunnei
fd5e1e80da
Merge pull request #8157 from lat9nq/kernel-races
...
kernel: Fix some data races
2022-04-11 21:13:01 -07:00
tech-ticks
3b91d213b1
hle: kernel: Invalidate entire icache in UnmapProcessMemory and UnmapCodeMemory ( fixes #8174 )
2022-04-09 13:29:19 +02:00
bunnei
a7f73d606f
hle: kernel: Unify and integrate reference tracking for KServerPort/KServerSession.
...
- These are not managed elsewhere, and need to be tracked and closed on emulation shutdown.
2022-04-08 14:13:22 -07:00
bunnei
b44a564792
hle: kernel: k_server_port: Release ref-counted host emulation members on Destroy.
2022-04-08 14:11:40 -07:00
bunnei
788bebb160
hle: kernel: k_auto_object: Move unregister with kernel to after Destroy.
...
- Destructor is no longer invoked, so our object counting was off.
2022-04-08 14:11:40 -07:00
bunnei
f55fc850a2
hle: kernel: hle_ipc: HasSessionRequestHandler: Check if domain handler is expired rather than locking.
2022-04-08 14:11:39 -07:00
Merry
1f275eb077
core/hle: Replace lock_guard with scoped_lock
2022-04-07 19:44:07 +01:00
Fernando S
50192eb4ad
Merge pull request #8148 from merryhime/interrupts
...
dynarmic: Better interrupts
2022-04-07 16:21:41 +02:00
lat9nq
b976cac49d
k_system_control: Fix data race
...
`return distribution(gen)` is a data race between a read and a write in
two threads, reported by TSan. Remove static random number generators so
they aren't using the same generator.
2022-04-05 19:55:56 -04:00
lat9nq
983916e919
k_auto_object: Fix data race
...
Change the memory order to acqure-release when we decrement the
reference count. Prevents a race with line 89 reported by TSan.
2022-04-03 21:47:58 -04:00
lat9nq
6bcbbb29e7
k_thread: Fix data race
...
TSan reports a data race between writing at cpp:1162 and reading at
h:262. Make the thread_state atomic to prevent this.
2022-04-03 21:47:58 -04:00
lat9nq
d6a0666268
k_process: Fix data race
...
TSan reported a race between thread 36 and thread 34, a read at :225 and
a write at :225 respectively. Make total_proces_running_time_ticks
atomic to avoid this race.
2022-04-03 21:47:57 -04:00
lat9nq
5b5a1b7fa7
kernel: Fix current_process race
...
TSan reported a race at :258 and :803, so make current_process an atomic
pointer.
2022-04-03 21:47:57 -04:00
lat9nq
83b86d915a
k_scheduler_lock: Fix data race
...
TSan reports a race between the main thread and T37 during
IsLockedByCurrentThread and when it's set at the end of Lock(),
respectively. Set owner_thread to an atomic pointer to fix it.
Co-authored-by: bunnei <bunneidev@gmail.com>
2022-04-03 21:47:57 -04:00
merry
f8b8af47ad
dynarmic: Better interrupts
2022-04-03 16:39:48 +01:00
bunnei
bf1750664c
hle: service: Add option for service interfaces to create or use the default thread.
2022-04-02 01:24:30 -04:00
bunnei
864523327f
hle: kernel: Create a default thread for services that do not need their own host thread.
2022-04-02 01:24:30 -04:00
bunnei
9408100a80
hle: kernel: k_page_table: Fix implementations of LockForCodeMemory & UnlockForCodeMemory.
2022-03-26 01:49:34 -07:00
bunnei
0c75913bf2
hle: kernel: k_page_table: Implement LockMemoryAndOpen & UnlockMemory.
2022-03-26 01:46:41 -07:00
bunnei
1b3dba329a
hle: kernel: svc: MapProcessMemory: Fix usage of KPageLinkedList to use physical address space.
2022-03-26 01:35:37 -07:00
bunnei
3bc0c2a625
hle: kernel: svc: CreateCodeMemory: Remove log of 'out' host pointer.
...
- This does not seem terribly useful and is inconsistent with other usage.
2022-03-26 01:34:29 -07:00
bunnei
94543f129e
hle: kernel: k_code_memory: Fix usage of KPageLinkedList to use physical address space.
2022-03-26 01:33:16 -07:00
bunnei
5b667f5e52
hle: kernel: k_page_table: Implement MakeAndOpenPageGroup & MakePageGroup.
2022-03-26 01:25:52 -07:00
bunnei
c975a51ae7
hle: kernel: k_page_table: Add IsHeapPhysicalAddress method.
2022-03-26 01:23:43 -07:00
bunnei
f29410d821
hle: kernel: k_page_linked_list: Add Empty method.
2022-03-26 01:02:42 -07:00
bunnei
4e2401c11a
hle: kernel: svc: UnmapProcessCodeMemory: Fix inverted alignment check.
2022-03-26 01:01:55 -07:00
bunnei
82ac66f8a4
Merge pull request #8048 from ameerj/include-purge
...
general: Reduce unused includes across the project
2022-03-21 18:03:54 -07:00
bunnei
5960d54722
Merge pull request #8040 from Morph1984/handle-table
...
KHandleTable: Optimize table entry layout
2022-03-19 23:17:37 -07:00
ameerj
ade596121b
core: Reduce unused includes
2022-03-19 02:23:32 -04:00
ameerj
d618bba8a6
general: Reduce core.h includes
2022-03-18 02:13:02 -04:00
Morph
8b7d571b66
KHandleTable: Optimize table entry layout
...
Since the handle type is not being used, we can reduce the amount of space each entry takes up by 4 bytes.
2022-03-18 00:28:25 -04:00
bunnei
e95bb782f0
core: hle: kernel: init_slab_setup: Move CalculateSlabHeapGapSize to global namespace.
2022-03-14 18:14:54 -07:00
bunnei
5f3e77d93e
core: hle: kernel: Allocate dummy threads on host thread storage.
...
- Fixes a crash where on subsequent boots, long-lived host threads would have their dummy threads freed.
2022-03-14 18:14:54 -07:00
bunnei
82a2463062
core: hle: kernel: Downgrade dangling objects warning to debug.
...
- It is not impossible to leak kernel objects, so this is not really any issue anymore (albeit, still interesting).
2022-03-14 18:14:54 -07:00
bunnei
f7d1929816
core: hle: kernel: Make object list container global and ensure it is reset on each emulation session.
2022-03-14 18:14:54 -07:00
bunnei
51589c5e21
core: hle: kernel: Remove server session tracking.
...
- These are now allocated/managed by emulated memory, so we do not need to track and free them on shutdown.
2022-03-14 18:14:54 -07:00
bunnei
0defac2f2a
core: hle: kernel: k_process: Remove handle table finalize, reset page table.
2022-03-14 18:14:54 -07:00
bunnei
813b2ef253
core: hle: kernel: k_process: Implement thread local storage accurately.
2022-03-14 18:14:54 -07:00
bunnei
3210bc2767
core: hle: kernel: k_page_table: Add implementations of MapPages, UnmapPages, and FindFreeArea for TLS.
2022-03-14 18:14:54 -07:00
bunnei
15d9b0418f
core: hle: kernel: k_slab_heap: Refresh to use guest allocations.
2022-03-14 18:14:54 -07:00
bunnei
a25cd4bb4b
core: hle: kernel: Update init_slab_heap, use device memory, and add KThreadLocalPage and KPageBuffer.
...
- Refreshes our slab initialization code to latest known behavior.
- Moves all guest kernel slabs into emulated device memory.
- Adds KThreadLocalPage and KPageBuffer, which we will use for accurate TLS management.
2022-03-14 18:14:54 -07:00
bunnei
91819726b1
core: hle: kernel: k_page_buffer: Add KThreadLocalPage primitive.
2022-03-14 18:14:53 -07:00
bunnei
08434842b3
core: hle: kernel: k_page_buffer: Add KPageBuffer primitive.
2022-03-14 18:14:53 -07:00
bunnei
4a28d8cebb
core: hle: kernel: k_thread: Ensure host Fiber is freed.
2022-03-14 18:14:53 -07:00
bunnei
ed67e1dd10
core: hle: kernel: k_server_session: Ensure SessionRequestManager is freed.
2022-03-14 18:14:53 -07:00
bunnei
25c0acc388
core: hle: kernel: k_thread: Update to reflect tree changes.
2022-03-14 18:14:53 -07:00
bunnei
07c9d9bdbd
core: hle: kernel: Use weak_ptr where possible for SessionRequestHandler and SessionRequestManager.
2022-03-14 18:14:53 -07:00
bunnei
ce33503adf
core: hle: kernel: k_memory_layout: Update kernel slab memory sizes.
2022-03-14 18:14:53 -07:00
bunnei
0f0e1c25bc
core: hle: kernel: svc_types: Add ThreadLocalRegionSize.
2022-03-14 18:14:53 -07:00
bunnei
944d9186ca
core: hle: kernel: k_condition_variable: Update to reflect tree changes.
2022-03-14 18:14:53 -07:00
bunnei
158c5845ab
core: hle: kernel: k_address_arbiter: Update to reflect tree changes.
2022-03-14 18:14:53 -07:00
bunnei
853e58e593
hle: service: ldr: Use deterministic addresses when mapping NROs.
...
- Instead of randomization, choose in-order addresses for where to map NROs into memory.
- This results in predictable behavior when debugging and consistent behavior when reproducing issues.
2022-03-08 17:38:20 -08:00
bunnei
749f76e6fe
hle: kernel: KPageTable: Improve implementations of MapCodeMemory and UnmapCodeMemory.
...
- This makes these functions more accurate to the real HOS implementations.
- Fixes memory access issues in Super Smash Bros. Ultimate that occur when un/mapping NROs.
2022-03-07 17:18:20 -08:00
bunnei
3ab82e7582
Merge pull request #7956 from bunnei/improve-mem-manager
...
Kernel Memory Updates (Part 4): Revamp KMemoryManager & other fixes
2022-03-02 17:55:51 -08:00
bunnei
14d28a043d
hle: kernel: Re-create memory layout at initialization.
...
- As this can only be derived once.
2022-02-27 18:00:09 -08:00
bunnei
16e5954fcb
hle: kernel: Remove unused pool locals.
2022-02-27 18:00:09 -08:00
bunnei
f87f076162
hle: kernel: k_memory_manager: Rework for latest kernel behavior.
...
- Updates the KMemoryManager implementation against latest documentation.
- Reworks KMemoryLayout to be accessed throughout the kernel.
- Fixes an issue with pool sizes being incorrectly reported.
2022-02-27 18:00:09 -08:00
merry
16784e5bb3
dynarmic: Inline exclusive memory accesses
...
Inlines implementation of exclusive instructions into JITted code,
improving performance of applications relying heavily on these
instructions.
We also fastmem these instructions for additional speed, with
support for appropriate recompilation on fastmem failure.
An unsafe optimization to disable the intercore global_monitor is also
provided, should one wish to rely solely on cmpxchg semantics for
safety.
See also: merryhime/dynarmic#664
2022-02-27 19:40:05 +00:00
bunnei
adbb9c2b00
hle: kernel: k_page_heap: GetPhysicalAddr can be const.
2022-02-27 10:34:02 -08:00
bunnei
f7e65eb971
hle: kernel: k_page_heap: Remove superfluous consexpr.
2022-02-27 10:34:02 -08:00
bunnei
06e2b76c75
hle: kernel: k_page_heap: Various updates and improvements.
...
- KPageHeap tracks physical addresses, not virtual addresses.
- Various updates and improvements to match latest documentation for this type.
2022-02-27 10:34:02 -08:00
bunnei
5d1a81520c
hle: kernel: Add initial_process.h header.
2022-02-27 10:34:02 -08:00
bunnei
a6496deeed
hle: kernel: board: nx: Add k_memory_layout.h header.
2022-02-27 10:34:02 -08:00
bunnei
9b5e7971dc
hle: kernel: k_system_control: Add GetRealMemorySize and update GetKernelPhysicalBaseAddress.
2022-02-27 10:34:02 -08:00
bunnei
18e77a54c3
hle: kernel: k_memory_layout: Add GetPhysicalLinearRegion.
2022-02-27 10:34:02 -08:00
bunnei
06a21ac229
hle: kernel: k_memory_region_types: Update for new regions.
2022-02-27 10:34:02 -08:00
bunnei
71f62a346d
hle: kernel: KSystemControl: Use 6GB memory layout when "use_extended_memory_layout" setting is enabled.
...
- This uses a larger 6GB DRAM memory layout, which is useful for some mods that require more memory.
2022-02-21 13:07:19 -08:00
bunnei
ca5e843bf6
core: hle: kernel: Remove resource limit hack for PhysicalMemory.
...
- With prior changes, we now report the correct amount of physical memory available to the emulated process.
2022-02-21 12:41:31 -08:00
bunnei
a74fddc98f
core: hle: kernel: KProcess: Pass in KResourceLimit on process creation.
...
- This allows us to have a resource limit per process, rather than use the global system resource limit.
2022-02-21 12:41:31 -08:00
bunnei
57ebcbf2c4
core: hle: kernel: KEvent: Pass in owner KProcess on event creation.
...
- This is necessary to ensure resource limits are freed from the right process.
2022-02-21 12:41:06 -08:00
bunnei
c7019db6f4
core: hle: kernel: KResourceLimit: Add a helper function for creating a KResourceLimit for a process.
2022-02-21 12:40:09 -08:00
bunnei
21f5912ec9
Merge pull request #7919 from bunnei/phys-mem-updates
...
core: hle: kernel: KPageTable: Improve Un/MapPhysicalMemory.
2022-02-21 13:39:05 -07:00
bunnei
92b2e92620
fixup! core: hle: kernel: KPageTable: Improve Un/MapPhysicalMemory.
2022-02-19 00:14:27 -08:00
bunnei
c9260a75f6
core: hle: kernel: KPageTable: Fix UnmapPages.
...
- Fixes a logic bug in KPageTable::UnmapPages.
2022-02-18 23:48:16 -08:00
bunnei
1a16d055df
core: hle: kernel: KPageTable: Improve Un/MapPhysicalMemory.
...
- Improves the implementations of MapPhysicalMemory and UnmapPhysicalMemory to more closely reflect latest HOS.
2022-02-18 23:42:27 -08:00
Sergi Granell
c3242abe95
kernel: svc: Add OutputDebugString32, CreateCodeMemory32, ControlCodeMemory32
...
Very straightforward, they are just wrappers to the 64-bit version of
the SVC.
2022-02-15 00:45:19 +01:00
bunnei
d81cdd9114
Merge pull request #7871 from german77/svc2
...
svc: Set unique names for function tables
2022-02-14 16:32:54 -07:00
Narr the Reg
d0c7c3f64f
svc: Set unique names for function tables
2022-02-08 21:03:31 -06:00
bunnei
862dddf8c9
hle: kernel: KCodeMemory: Remove unused QueryMemory.
2022-02-08 18:49:41 -08:00
bunnei
d134ca68c6
hle: kernel: KCodeMemory: Correct m_page_group number of pages.
...
Credits to @xerpi for finding this issue and pointing it out on #7519 .
2022-02-08 18:47:11 -08:00
tech-ticks
16bf50e610
service: pm: Implement AtmosphereGetProcessInfo
2022-02-04 01:41:36 +01:00
bunnei
03186af6a1
Merge pull request #7835 from bunnei/page-table-lock
...
hle: kernel: KPageTable: Migrate locks to KScopedLightLock.
2022-02-02 17:58:55 -07:00
Lioncash
f785f73e92
general: Replace NonCopyable struct with equivalents
2022-02-02 13:17:12 -05:00
Lioncash
76d83ffbec
general: Move deleted copy/move constructor/assignment operators to public 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-02 12:17:08 -05:00
bunnei
995e27e9b7
hle: kernel: KPageTable: Migrate locks to KScopedLightLock.
...
- More accurately reflects real kernel behavior by using guest locks.
2022-02-01 19:34:24 -08:00
Narr the Reg
1ed22b4613
svc: Add 32 bit SynchronizePreemptionState
...
Used by Espgaluda II
2022-01-31 19:02:41 -06:00
bunnei
3a1a3dd0db
hle: kernel: KScheduler: Fix deadlock with core waiting for a thread lock 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-27 12:17:14 -08:00
bunnei
adcac857f8
Merge pull request #7762 from bunnei/un-map-improve
...
Kernel Memory Updates (Part 4): Improve Un/MapPages, and more.
2022-01-26 17:54:20 -08:00
Morph
8dbad556ec
Merge pull request #7771 from lioncash/assert
...
kernel/k_affinity_mask: Remove duplicated assert
2022-01-25 16:15:18 -05:00
Lioncash
2f12caccf9
kernel/k_affinity_mask: Remove duplicated assert
...
This is already checked inside GetCoreBit()
2022-01-24 10:35:22 -05:00
bunnei
59add00d4a
hle: kernel: KThread: Improve Increment/Decrement RunningThreadCount.
...
- Previously implementation was incorrect, and would occasionally underflow.
2022-01-22 21:09:45 -08:00
bunnei
e791da9791
core: hle: kernel: KPageTable: Various improvements to MapPages and UnmapPages.
2022-01-22 20:51:34 -08:00
bunnei
07add23251
core: hle: kernel: KPageTable: MapProcessCode: Various cleanup.
2022-01-22 20:51:34 -08:00
bunnei
ee25e0a40b
core: hle: kernel: KPageTable: ReserveTransferMemory: Various cleanup.
2022-01-22 20:51:34 -08:00
bunnei
0cee5e1af8
core: hle: kernel: KPageTable: ResetTransferMemory: Various cleanup.
2022-01-22 20:51:34 -08:00
bunnei
ffcaf5af90
core: hle: kernel: KPageTable: SetMemoryAttribute: Various cleanup.
2022-01-22 20:51:34 -08:00
bunnei
2935c9d8de
core: hle: kernel: KPageTable: Assert valid address on GetPhysicalAddr.
2022-01-22 01:33:26 -08:00
bunnei
264bb5abf7
core: hle: kernel: KPageTable: Operate: Assert lock ownership.
2022-01-22 01:33:26 -08:00
bunnei
0137f2e6e1
core: hle: kernel: KPageTable: SetHeapSize: Cleanup & take physical memory lock.
2022-01-22 01:33:26 -08:00
bunnei
6d8e498f76
core: hle: kernel: Refactor Un/MapPhysicalMemory to remove unnecessary methods.
2022-01-22 01:33:26 -08:00
bunnei
b8b1b58f36
core: hle: kernel: Rename Un/Map to Un/MapMeory.
2022-01-22 01:33:26 -08:00
bunnei
615fb40416
hle: kernel: KThread: Ensure host (dummy) threads block on locking.
...
- But do not enter the priority queue, as otherwise they will be scheduled.
- Allows dummy threads to use guest synchronization primitives.
2022-01-21 17:12:06 -08:00
bunnei
f6815086a1
hle: kernel: Remove redundant tracking of dummy threads.
...
- These are already tracked by kernel's registered_objects member.
2022-01-20 17:08:00 -08:00
bunnei
91ff6d4cb3
hle: kernel: KThread: DummyThread can be waited, ensure wait_queue is not nullptr.
2022-01-20 17:08:00 -08:00
bunnei
46a620f9d7
hle: kernel: KThread: Decrease DummyThread priority to ensure it is never scheduled.
2022-01-20 17:08:00 -08:00
bunnei
0b37e7cb39
hle: kernel: service_thread: Ensure dummy thread is closed & destroyed on thread exit.
2022-01-20 17:08:00 -08:00
bunnei
384e24d3e9
hle: kernel: KServerSession: Remove hack for CompleteSyncRequest.
...
- This does not appear to be necessary anymore.
2022-01-20 17:08:00 -08:00
bunnei
ad53dc22fd
hle: kernel: KServerSession: Simplify CompleteSyncRequest EndWait.
...
- 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 17:08:00 -08:00
bunnei
5ffec69dc7
hle: kernel: KThread: Ensure dummy threads never call EndWait.
...
- These are only used by host threads for locking and will never have a wait_queue.
2022-01-20 17:08:00 -08:00
bunnei
11a380c3da
hle: kernel: KScheduler: Ensure dummy threads are never scheduled.
...
- These are only used by host threads for locking.
2022-01-20 17:08:00 -08:00
bunnei
f6cbb14dce
hle: kernel: KThread: Rename thread_type_for_debugging -> thread_type.
...
- This will be used to ensure that we do not schedule dummy threads.
2022-01-20 17:08:00 -08:00
bunnei
b5e83bcc7b
Merge pull request #7701 from bunnei/clear-mem-pages
...
Kernel Memory Updates (Part 3): Clear KMemoryManager pages & other fixes
2022-01-18 21:20:42 -08:00
bunnei
101d86897b
Merge pull request #7712 from bunnei/fix-thread-exit
...
Accurately implement thread exit
2022-01-17 18:08:24 -08:00
Valeri
84786dde00
hle: remove no-op code
...
Found by static analysis with PVS-Studio. Nobody seems to really know what was it doing there.
2022-01-17 13:51:12 +03:00
bunnei
b54cbc985e
hle: kernel: k_memory_manager: Clear pages on allocation & free.
...
- Heap pages should be zero'd.
- Also explicitly passed along heap allocation option.
2022-01-14 21:16:33 -08:00
bunnei
f499c8177e
core: hle: kernel: KThread: Integrate with KWorkerTask and implement 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 16:44:14 -08:00
bunnei
d8b3f665db
core: hle: kernel: KProcess: Integrate with KWorkerTask and add unimplemented DoWorkerTaskImpl.
2022-01-14 16:44:14 -08:00
bunnei
03884b7ea6
core: hle: kernel: KThread: Replace Suspend with UpdateState & various updates.
...
- This makes our implementations of these more closely match HOS.
2022-01-14 16:44:14 -08:00
bunnei
c905044e1b
core: hle: kernel: Instantiate a kernel instance of KWorkerTaskManager.
2022-01-14 16:44:14 -08:00
bunnei
bf32fcc817
core: hle: kernel: Add KWorkerTask and KWorkerTaskManager.
...
- These primitives are used to dispatch asynchronous kernel tasks from KThread and KProcess.
2022-01-14 16:43:59 -08:00
bunnei
cc112f971e
hle: kernel: Fix service_threads access to be thread safe V2.
...
- 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 16:02:57 -08:00
Mai M
b2d45a4072
Merge pull request #7699 from bunnei/fix-service-thread-race
...
hle: kernel: Fix service_threads access to be thread safe.
2022-01-14 00:46:16 -05:00
bunnei
2147240e47
hle: kernel: Fix service_threads access to be thread safe.
...
- 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-13 21:26:10 -08:00
bunnei
49a0e4330e
hle: kernel: k_page_table: Update SetProcessMemoryPermission.
2022-01-11 16:28:11 -08:00
bunnei
6123b6ea45
hle: kernel: k_page_table: ReadAndWrite -> UserReadWrite.
2022-01-11 16:28:11 -08:00
bunnei
081669c334
hle: kernel: k_page_table: Rename *ProcessCodeMemory -> *CodeMemory.
2022-01-11 16:28:11 -08:00
bunnei
af4696657c
core: hle: kernel: svc: Updates to SetMemoryAttribute and SetMemoryPermission.
2022-01-08 12:18:14 -08:00
bunnei
b9a313057e
core: hle: kernel: k_page_table: Update CheckMemoryState.
2022-01-08 03:20:57 -08:00
bunnei
3a89723d97
core: hle: kernel: Implement thread pinning.
...
- 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-30 15:50:45 -08:00
bunnei
091463a429
core: hle: kernel: Updated implementation of svcSetHeapSize.
...
- 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-28 01:25:20 -08:00
bunnei
9a0648ff0a
Merge pull request #7621 from bunnei/set-mem-perm
...
core: hle: kernel: Implement SetMemoryPermission.
2021-12-27 23:33:11 -08:00
bunnei
4e7a6639d2
core: hle: kernel: Implement SetMemoryPermission.
...
- Not seen in any games yet, but validated with kernel tests.
2021-12-23 01:10:36 -08:00
bunnei
a0c7d93b84
core: hle: kernel: KThread: X18 should be a cryptographically random number.
...
- 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-23 00:03:39 -08:00
bunnei
49e3c073a5
hle: kernel: svc: GetInfo: Fix error checking with IdleTickCount.
...
- Enforce tha the supplied handle is invalid, not valid.
- This gets Witcher 3 booting.
2021-12-21 22:41:23 -08:00
bunnei
ee6d40d414
Merge pull request #7597 from bunnei/remove-global-lock
...
core: hle: Remove global HLE lock.
2021-12-20 14:24:50 -08:00