Commit graph eden-nx2-old/src/core/hle/kernel/svc.cpp
Author SHA1 Message Date
Takoroka
e69090383e Performance diagnostics and small wins for title 1
- eden-cli: SDL called SDL_AppIterate back to back, keeping a host core at
  100% polling input; run the main callbacks at 240 Hz.
- EDEN_NX2_IDLE_SPIN_US: optional spin before an idle core blocks (measured:
  no gain on title 1, so off by default).
- EDEN_NX2_SVC_TRACE=<first>:<last>: trace SVCs (with thread ids) for a range
  of presents only.
- MME DMA reads flush GPU-written memory first (never triggered on title 1,
  kept for correctness); render-enable override histogram instead of the
  first-400 log.

Measured on title 1's title screen (RTX 4070 Laptop): GPU ~20% busy, the six
emulated cores ~0.9 host cores in total, Eden's GPU thread 45-70% busy and
largely waiting: on host fences for semaphore acquires (GPU accuracy High
delays every release to host completion), on ASTC upload Finish(), and in a
1 ms poll sleep. gpu_accuracy=Low: ~12.5 -> ~16 fps.
2026-10-28 16:44:24 -04:00
Takoroka
f7c3638d6e Switch 2: native memory/images, GPU-accessible attribute, TSG subcontexts, syncpoint shim
- gsv 111/112/114/423/429/430/314/315/435 track native memory and images with
  real ids (meanings from changes.patch); 1510/435 use its block-linear layout.
- svc 0x80 sets a real GpuAccessible (0x20) memory attribute (from changes.patch).
- Characteristics report TSG subcontexts (flag 22, 64 per TSG at 0xb4); NvRm
  otherwise allows one subcontext and a second NVN queue fails its setup.
- Syncpoint shim: flag 26, address-space ioctl 0xB, and GPU reads of the shim
  page return guest syncpoint values (scheme from changes.patch).
- EDEN_NX2_IPC_TRACE also logs TIPC commands; gdbrsp.py watch/mem improvements.
2026-10-27 19:30:20 -04:00
Takoroka
f756fe05f7 Switch 2: aud:u audio, REv revision tag, job-slot events, open-file limit
- aud:u (nn::audio::CreateUserClientSessionByHipc) command 2 returns Eden's
  IAudioRendererManager; the renderer accepts Switch 2's 'REv?' update tag by
  comparing revision numbers.
- nx2:gpu sub 211 signals the job slot in request word 17, not word 2; mapping
  jobs no longer stall once the SDK rotates slots.
- eden-cli raises the CRT open-file limit (_setmaxstdio(8192)) like the Qt
  frontend, so loose RomFS folders don't run out of handles.
- Per-mapping GPU logs moved to Debug.
2026-10-27 17:21:19 -04:00
Takoroka
7cb5831340 Switch 2 GPU memory: svc 0x80, gpu sub-session jobs, VM range, SM 0x808
- svc 0x80 (address, size, mask 0x20, attr 0x20) marks memory GPU
  accessible for nn::gpu::sdk::CreateGpuAccessibleMemory; accept it.
- gpu 22's sub-session is served by the gpu object; sub 101 registers
  memory, sub 211 submits a job whose id event is signalled at once.
- gpu 203 reports [0x8000000, 0xC000000000) as the in-process
  VirtualMachine range that serves AllocSpace (NVN reserves fixed VA at
  0x8000000 up to 512 GiB).
- Report SM 0x808: NVN2's engine class table is only returned for it.
With this NVN device init allocates its GPU memory and opens
/dev/nvhost-tsg-gpu.
2026-10-27 15:17:39 -04:00
Takoroka
a9bd43b9d1 kernel: optional SVC trace (EDEN_NX2_SVC_TRACE=1) 2026-10-27 12:52:40 -04:00
lizzie
6f6a8f6d67
[svc] don't truncate 64-bit SVC args on trace logs (#4374)
Small inconvenience with args

Signed-off-by: lizzie <lizzie@eden-emu.dev>

- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md)
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.

-------------------

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4374
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
2026-09-09 11:14:22 +02:00
lizzie
09f03f5640
[hle/kernel] mark invalid SVC paths as unreachable (#3023)
Should improve performance of SVC by a very, very tiny margin. Codegen seems to be better from the exclusion of all domains beyond >=0x92

Signed-off-by: lizzie lizzie@eden-emu.dev

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3023
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-12-04 07:31:30 +01:00
lizzie
2e1af92852
[hle/kernel] allow primitive tracing of svcs on debug builds (#3005)
Signed-off-by: lizzie lizzie@eden-emu.dev
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3005
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-11-18 00:17:15 +01:00
lizzie
8f6e0aa2cb
[tools, hle/kernel] generate condensed version of svc.cpp; move svc_generator.py and generate_converters.py to tools (#2791)
Eventually we'd want cmake to do the build for us (as a build step) instead of having git be polluted with commits to update the autogenerated file...

Signed-off-by: lizzie <lizzie@eden-emu.dev>

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2791
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-11-07 17:00:53 +01:00
JPikachu
ead5978b34
[kernel] Implement code address offset for Skyline compatibility (#2858)
- Add debug logging for 32-bit syscall argument tracking.

- Add CodeStartOffset constant (0x500000) applied to only 32-bit code address space
  types in KProcess::LoadFromMetadata.

- Replace CheckMemoryStateContiguous with two-stage CheckMemoryState
  in KPageTableBase::UnmapCodeMemory to discover and verify memory
  state more accurately.

Based on similar fixes in Ryujinx (commit 5e9678c8fe)
Fixes compatibility with:
- Skyline 32-bit modding framework
- CTGP-DX (Mario Kart 8 Deluxe mod)
- Other homebrew using 32bit Skyline

Co-authored-by: JPikachu <jpikachu.eden@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2858
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Co-authored-by: JPikachu <jpikachu@eden-emu.dev>
Co-committed-by: JPikachu <jpikachu@eden-emu.dev>
2025-10-31 19:49:37 +01:00
crueter
f1e74f6855
[meta] remove MicroProfile (#185)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/185
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-06 07:48:11 +02:00
Gamer64
1f34d836b4
Add cmake option to enable microprofile (#179)
Backported from dd9c743041.

Co-authored-by: PabloMK7 <hackyglitch2@gmail.com>

Co-authored-by: Shinmegumi <shinmegumi@eden-emu.dev>
Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/179
Co-authored-by: Gamer64 <gamer64@eden-emu.dev>
Co-committed-by: Gamer64 <gamer64@eden-emu.dev>
2025-08-02 17:22:38 +02:00
Liam
3d5c6a73cb core: refactor emulated cpu core activation 2023-12-04 10:37:16 -05:00
Liam
62e106dbe8 kernel: update KProcess 2023-10-21 20:03:41 -04:00
Liam
d0e11c27d9 kernel: prefer std::addressof 2023-03-12 22:09:09 -04:00
Merry
38f528134f svc: Fix type consistency (exposed on macOS) 2023-02-21 21:39:17 +00:00
Liam
832e1e2ca4 kernel: use GetCurrentProcess 2023-02-13 11:05:14 -05:00
Liam
b91913334e kernel/svc: switch to generated wrappers 2023-02-06 23:57:44 -05:00
Liam
2d0892da7f kernel/svc: Split implementations into separate files 2023-02-04 22:37:43 -05:00
Liam
3b4c6e5425 kernel: KPageTable: update 2023-01-22 13:17:29 -05:00
bunnei
1bd2034592 Revert "Revert "k_page_group: synchronize"" 2023-01-07 15:32:10 -08:00
gidoly
118d57a8f0 Revert "k_page_group: synchronize" 2022-12-29 17:39:42 +09:00
Liam
4b9df26091 k_page_group: synchronize 2022-12-25 12:55:21 -05:00
Narr the Reg
dfe49436c8 kernel: svc: Fix duplicated InfoType enum 2022-12-15 14:18:30 -06:00
Narr the Reg
464b7a9ee2 kernel: process: Implement GetFreeThreadCount
Used by Just Dance® 2023 Edition
2022-12-15 13:44:21 -06:00
Liam
e313e4f1ae kernel: implement FlushProcessDataCache 2022-11-12 11:27:04 -05:00
Liam
affd5c32f9 kernel/svc_types: refresh 2022-11-09 19:05:08 -05:00
liamwhite
c14f27ee5f Merge pull request #9173 from bunnei/kern-update-15
Kernel: Various updates for FW 15.0.x
2022-11-05 13:25:29 -04:00
bunnei
019e425377 core: hle: kernel: Add KEventInfo. 2022-11-03 21:17:06 -07:00
Liam
8f65df7619 kernel: fix port tracking 2022-10-31 17:45:46 -04:00
Liam
2e56a382a9 kernel: invert session request handling flow 2022-10-31 17:44:06 -04:00
Morph
9fba74d245 general: Enforce C4800 everywhere except in video_core 2022-10-22 15:02:04 -04:00
bunnei
55ed04af34 core: hle: kernel: k_process: Improve management of page table & cleanup. 2022-10-18 19:13:35 -07:00
bunnei
5a37569052 core: hle: kernel: k_process: Change Status -> State. 2022-10-18 19:13:34 -07:00
liamwhite
f57b352e93 Merge pull request #9061 from liamwhite/writable-event
kernel: remove KWritableEvent
2022-10-14 17:30:38 -04:00
Liam
09777eea76 kernel: remove KWritableEvent 2022-10-12 20:29:29 -04:00
Liam
545875eaa1 k_server_session: preliminary support for userspace server sessions 2022-10-11 18:40:40 -04:00
Liam
a048c5ca0f Add implementation of svcCreateSession 2022-10-11 18:15:45 -04:00
Liam
e47bced65d kernel: use KScheduler from mesosphere 2022-07-14 22:47:18 -04:00
Morph
d3da378c46 Merge pull request #8512 from german77/nnResult
Replace multiple names with a better name
2022-06-28 16:59:33 -07:00
bunnei
74ebab21ce Merge pull request #8504 from comex/mesosphere-current-process
Support `InfoType_MesosphereCurrentProcess`
2022-06-27 13:05:07 -07:00
german77
093680269b core: kernel: Replace instances of KPageLinkedList with KPageGroup 2022-06-26 20:21:45 -05:00
german77
c7890ebccc core: Replace all instances of ResultCode with Result 2022-06-26 20:21:37 -05:00
comex
0c3a934b6e Re-add missing case and braces, and trim whitespace 2022-06-25 18:01:56 -07:00
comex
593f978ad2 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
9decdbabab Support InfoType_MesosphereCurrentProcess 2022-06-25 16:23:23 -07:00
Liam
83f1ecb73b kernel: make current thread pointer thread local 2022-06-23 00:28:00 -04:00
Nikita Strygin
5f5739ea2c 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
Fernando S
1d8e860c47 Merge pull request #8457 from liamwhite/kprocess-suspend
kernel: implement KProcess suspension
2022-06-16 02:41:12 +02:00
Mai
8894ac44d2 Merge pull request #8464 from liamwhite/break-debug
kernel: notify debugger on break SVC
2022-06-15 11:55:54 -04:00