From cd2be90c232fad06434b166e0f496a688d3c0348 Mon Sep 17 00:00:00 2001 From: Exverge Date: Sun, 21 Jun 2026 20:13:38 -0400 Subject: [PATCH 1/8] hypervisor: increase ipa limit to 39 bits --- src/core/hw/tegra_x1/cpu/hypervisor/const.hpp | 7 +++---- src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp | 14 ++++++++++++-- src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp | 2 ++ src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp index bc292fe5..e2310060 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp @@ -60,11 +60,10 @@ enum class AllocateVmMemoryError { inline uptr AllocateVmMemory(u64 size) { ASSERT_ALIGNMENT(size, APPLE_PAGE_SIZE, Hypervisor, "size") - void* ptr; - const auto res = posix_memalign(&ptr, APPLE_PAGE_SIZE, size); - ASSERT_THROWING(res == 0, Hypervisor, + void* ptr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + ASSERT_THROWING(ptr != MAP_FAILED, Hypervisor, AllocateVmMemoryError::AllocationFailed, - "Failed to allocate memory: {:#x}", res); + "Failed to allocate memory: {:#x}", errno); return reinterpret_cast(ptr); } diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp index 33ec6c6b..45d761e5 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp @@ -35,9 +35,19 @@ const u32 exception_trampoline[] = { } // namespace -VirtualMachine::VirtualMachine() { HV_ASSERT_SUCCESS(hv_vm_create(nullptr)); } +VirtualMachine::VirtualMachine() { + // HACK: since we're mapping our address space to the HV's "physical" + // space 1:1, we have to extend their space to include all of ours + // (or as close as possible as we can, which is 39 bits) + config = hv_vm_config_create(); + HV_ASSERT_SUCCESS(hv_vm_config_set_ipa_size(config, 39)); + HV_ASSERT_SUCCESS(hv_vm_create(config)); +} -VirtualMachine::~VirtualMachine() { HV_ASSERT_SUCCESS(hv_vm_destroy()); } +VirtualMachine::~VirtualMachine() { + HV_ASSERT_SUCCESS(hv_vm_destroy()); + os_release(&config); +} Cpu::Cpu() : kernel_mem(align(KERNEL_MEM_SIZE, APPLE_PAGE_SIZE)), diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp index 8c7c2172..a228a04d 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp @@ -21,6 +21,8 @@ class VirtualMachine { public: VirtualMachine(); ~VirtualMachine(); + private: + hv_vm_config_t config; }; class Cpu : public ICpu { diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp index dc44b2df..8c26bd1b 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp @@ -29,7 +29,7 @@ class Memory : public IMemory { ptr = AllocateVmMemory(size); // Map - // TODO: Why does this fail occasionally? + // TODO: if AllocateVmMemory passes a pointer greater than 0x8000000000, this will fail HV_ASSERT_SUCCESS( hv_vm_map(reinterpret_cast(ptr), ptr, size, HV_MEMORY_READ | HV_MEMORY_WRITE | HV_MEMORY_EXEC)); @@ -40,7 +40,7 @@ class Memory : public IMemory { HV_ASSERT_SUCCESS( hv_vm_unmap(ptr, align(GetSizeAligned(), APPLE_PAGE_SIZE))); - free(reinterpret_cast(ptr)); + munmap(reinterpret_cast(ptr), GetSizeAligned()); } }; From 973c3391165470e75917dea613da38ebb20c7c22 Mon Sep 17 00:00:00 2001 From: Exverge Date: Mon, 22 Jun 2026 12:28:09 -0400 Subject: [PATCH 2/8] hypervisor: properly release config --- src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp | 8 +++----- src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp | 2 -- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp index 45d761e5..91d629af 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp @@ -39,15 +39,13 @@ VirtualMachine::VirtualMachine() { // HACK: since we're mapping our address space to the HV's "physical" // space 1:1, we have to extend their space to include all of ours // (or as close as possible as we can, which is 39 bits) - config = hv_vm_config_create(); + auto config = hv_vm_config_create(); HV_ASSERT_SUCCESS(hv_vm_config_set_ipa_size(config, 39)); HV_ASSERT_SUCCESS(hv_vm_create(config)); + os_release(config); } -VirtualMachine::~VirtualMachine() { - HV_ASSERT_SUCCESS(hv_vm_destroy()); - os_release(&config); -} +VirtualMachine::~VirtualMachine() { HV_ASSERT_SUCCESS(hv_vm_destroy()); } Cpu::Cpu() : kernel_mem(align(KERNEL_MEM_SIZE, APPLE_PAGE_SIZE)), diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp index a228a04d..8c7c2172 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.hpp @@ -21,8 +21,6 @@ class VirtualMachine { public: VirtualMachine(); ~VirtualMachine(); - private: - hv_vm_config_t config; }; class Cpu : public ICpu { From f90ba2c4659d2b0d46331b890f459859804547db Mon Sep 17 00:00:00 2001 From: Exverge Date: Sat, 27 Jun 2026 14:50:51 -0400 Subject: [PATCH 3/8] kernel: more debug info in GetInfo --- src/core/horizon/kernel/kernel.cpp | 53 +++++++++++++++--------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/core/horizon/kernel/kernel.cpp b/src/core/horizon/kernel/kernel.cpp index b6b93d2b..705c9276 100644 --- a/src/core/horizon/kernel/kernel.cpp +++ b/src/core/horizon/kernel/kernel.cpp @@ -968,32 +968,28 @@ result_t Kernel::GetInfo(Process* crnt_process, InfoType info_type, AutoObject* obj, u64 info_sub_type, u64& out_info) { (void)obj; - LOG_DEBUG(Kernel, "GetInfo called (type: {}, object: {}, subtype: {})", - info_type, (obj != nullptr ? obj->GetDebugName() : "null"), - info_sub_type); - switch (info_type) { case InfoType::CoreMask: LOG_NOT_IMPLEMENTED(Kernel, "CoreMask"); // HACK out_info = 0xf; - return RESULT_SUCCESS; + break; case InfoType::AliasRegionAddress: out_info = ALIAS_REGION.GetBegin(); - return RESULT_SUCCESS; + break; case InfoType::AliasRegionSize: out_info = ALIAS_REGION.GetSize(); - return RESULT_SUCCESS; + break; case InfoType::HeapRegionAddress: out_info = HEAP_REGION.GetBegin(); - return RESULT_SUCCESS; + break; case InfoType::HeapRegionSize: out_info = HEAP_REGION.GetSize(); - return RESULT_SUCCESS; + break; case InfoType::TotalMemorySize: // TODO: what should this be? out_info = 3u * 1024u * 1024u * 1024u; - return RESULT_SUCCESS; + break; case InfoType::UsedMemorySize: { // TODO: correct? /* @@ -1004,69 +1000,74 @@ result_t Kernel::GetInfo(Process* crnt_process, InfoType info_type, out_info = size; */ out_info = 4u * 1024u * 1024u; - return RESULT_SUCCESS; + break; } case InfoType::DebuggerAttached: // TODO: make this configurable out_info = true; - return RESULT_SUCCESS; + break; case InfoType::RandomEntropy: ASSERT_DEBUG(info_sub_type < crnt_process->GetRandomEntropy().size(), Kernel, "Invalid random entropy index {}", info_sub_type); out_info = crnt_process->GetRandomEntropy()[info_sub_type]; - return RESULT_SUCCESS; + break; case InfoType::AslrRegionAddress: out_info = ADDRESS_SPACE.GetBegin(); - return RESULT_SUCCESS; + break; case InfoType::AslrRegionSize: out_info = ADDRESS_SPACE.GetSize(); - return RESULT_SUCCESS; + break; case InfoType::StackRegionAddress: out_info = STACK_REGION.GetBegin(); - return RESULT_SUCCESS; + break; case InfoType::StackRegionSize: out_info = STACK_REGION.GetSize(); - return RESULT_SUCCESS; + break; case InfoType::TotalSystemResourceSize: { out_info = crnt_process->GetSystemResourceSize(); - return RESULT_SUCCESS; + break; } case InfoType::UsedSystemResourceSize: LOG_NOT_IMPLEMENTED(Kernel, "UsedSystemResourceSize"); // HACK out_info = 64 * 1024; - return RESULT_SUCCESS; + break; case InfoType::ProgramId: out_info = crnt_process->GetTitleID(); - return RESULT_SUCCESS; + break; case InfoType::UserExceptionContextAddress: LOG_NOT_IMPLEMENTED(Kernel, "UserExceptionContextAddress"); // HACK out_info = 0; - return RESULT_SUCCESS; + break; case InfoType::TotalNonSystemMemorySize: LOG_NOT_IMPLEMENTED(Kernel, "TotalNonSystemMemorySize"); // HACK out_info = 2u * 1024u * 1024u * 1024u; - return RESULT_SUCCESS; + break; case InfoType::UsedNonSystemMemorySize: LOG_NOT_IMPLEMENTED(Kernel, "UsedNonSystemMemorySize"); // HACK out_info = 1; - return RESULT_SUCCESS; + break; case InfoType::IsApplication: // TODO: don't always return true out_info = true; - return RESULT_SUCCESS; + break; case InfoType::AliasRegionExtraSize: LOG_NOT_IMPLEMENTED(Kernel, "AliasRegionExtraSize"); // HACK out_info = 0; - return RESULT_SUCCESS; + break; default: - LOG_WARN(Kernel, "Unknown info type {}", info_type); + LOG_WARN(Kernel, "GetInfo called with unknown info type {} (object: {}, subtype: {})", static_cast(info_type), (obj != nullptr ? obj->GetDebugName() : "null"), info_sub_type); return MAKE_RESULT(Svc, 0x78); } + + LOG_DEBUG(Kernel, "GetInfo called (type: {}, object: {}, subtype: {}, out: 0x{:08x})", + info_type, (obj != nullptr ? obj->GetDebugName() : "null"), + info_sub_type, out_info); + return RESULT_SUCCESS; } result_t Kernel::MapPhysicalMemory(Process* crnt_process, vaddr_t addr, From 3aab1529c03f2699c533d87dfa699656ffbb971b Mon Sep 17 00:00:00 2001 From: Exverge Date: Sat, 27 Jun 2026 15:52:24 -0400 Subject: [PATCH 4/8] hypervisor: use munmap for page allocator --- src/core/hw/tegra_x1/cpu/hypervisor/const.hpp | 13 ++++++++++++- src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp | 2 +- .../hw/tegra_x1/cpu/hypervisor/page_allocator.cpp | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp index e2310060..a6e6ee0c 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/const.hpp @@ -55,9 +55,10 @@ constexpr u64 AP_FLAGS_MASK = enum class AllocateVmMemoryError { AllocationFailed, + DeallocationFailed, }; -inline uptr AllocateVmMemory(u64 size) { +inline paddr_t AllocateVmMemory(u64 size) { ASSERT_ALIGNMENT(size, APPLE_PAGE_SIZE, Hypervisor, "size") void* ptr = mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); @@ -68,4 +69,14 @@ inline uptr AllocateVmMemory(u64 size) { return reinterpret_cast(ptr); } +inline void FreeVmMemory(paddr_t addr, u64 size) { + ASSERT_ALIGNMENT(size, APPLE_PAGE_SIZE, Hypervisor, "size") + + auto res = munmap(reinterpret_cast(addr), size); + + ASSERT_THROWING(res == 0, Hypervisor, + AllocateVmMemoryError::DeallocationFailed, + "Failed to deallocate memory: {:#x}", res); +} + } // namespace hydra::hw::tegra_x1::cpu::hypervisor diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp b/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp index 8c26bd1b..02b4591b 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/memory.hpp @@ -40,7 +40,7 @@ class Memory : public IMemory { HV_ASSERT_SUCCESS( hv_vm_unmap(ptr, align(GetSizeAligned(), APPLE_PAGE_SIZE))); - munmap(reinterpret_cast(ptr), GetSizeAligned()); + FreeVmMemory(ptr, GetSizeAligned()); } }; diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/page_allocator.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/page_allocator.cpp index 1a781fbc..53860331 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/page_allocator.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/page_allocator.cpp @@ -9,7 +9,7 @@ PageAllocator::PageAllocator(paddr_t base_pa_, usize page_count) PageAllocator::~PageAllocator() { for (const auto allocation : allocations) { - free(reinterpret_cast(allocation.ptr)); + FreeVmMemory(allocation.ptr, GUEST_PAGE_SIZE * allocation.page_count); } } From 9e3b28aeb6f774e2b5b133193b084a1fe0251afa Mon Sep 17 00:00:00 2001 From: Exverge Date: Sat, 27 Jun 2026 21:10:40 -0400 Subject: [PATCH 5/8] hypervisor: update TCR_EL1 to allow for 40-bit IPA values --- src/core/hw/tegra_x1/cpu/hypervisor/thread.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/thread.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/thread.cpp index 3826cc43..501e73e1 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/thread.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/thread.cpp @@ -108,8 +108,8 @@ Thread::Thread(WallClock& wall_clock, Cpu& cpu_, IMmu* mmu, SetReg(HV_REG_CPSR, 0x3c0); SetSysReg(HV_SYS_REG_MAIR_EL1, 0xfful); - SetSysReg(HV_SYS_REG_TCR_EL1, 0x00000011B5193519ul); - SetSysReg(HV_SYS_REG_SCTLR_EL1, 0x0000000034D5D925ul); + SetSysReg(HV_SYS_REG_TCR_EL1, 0x12B5193519ul); + SetSysReg(HV_SYS_REG_SCTLR_EL1, 0x34D5D925ul); // Enable FP and SIMD instructions SetSysReg(HV_SYS_REG_CPACR_EL1, 0b11 << 20); From 0889defb2381ad38b2490b76f4966f9b7421c597 Mon Sep 17 00:00:00 2001 From: Exverge Date: Tue, 30 Jun 2026 11:33:05 -0400 Subject: [PATCH 6/8] hypervisor: Use max ipa size supported by system --- src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp index 91d629af..c25c3453 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp @@ -38,9 +38,12 @@ const u32 exception_trampoline[] = { VirtualMachine::VirtualMachine() { // HACK: since we're mapping our address space to the HV's "physical" // space 1:1, we have to extend their space to include all of ours - // (or as close as possible as we can, which is 39 bits) + // (or as close as possible as we can) auto config = hv_vm_config_create(); + uint32_t max_bits; + HV_ASSERT_SUCCESS(hv_vm_config_get_max_ipa_size(&max_bits)); HV_ASSERT_SUCCESS(hv_vm_config_set_ipa_size(config, 39)); + HV_ASSERT_SUCCESS(hv_vm_create(config)); os_release(config); } From 6ebea275b0e73b4192e6a4a11bc505920bdc6766 Mon Sep 17 00:00:00 2001 From: Exverge Date: Tue, 30 Jun 2026 11:39:24 -0400 Subject: [PATCH 7/8] actually use the new value --- src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp index c25c3453..34e11552 100644 --- a/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp +++ b/src/core/hw/tegra_x1/cpu/hypervisor/cpu.cpp @@ -42,7 +42,7 @@ VirtualMachine::VirtualMachine() { auto config = hv_vm_config_create(); uint32_t max_bits; HV_ASSERT_SUCCESS(hv_vm_config_get_max_ipa_size(&max_bits)); - HV_ASSERT_SUCCESS(hv_vm_config_set_ipa_size(config, 39)); + HV_ASSERT_SUCCESS(hv_vm_config_set_ipa_size(config, max_bits)); HV_ASSERT_SUCCESS(hv_vm_create(config)); os_release(config); From 922ac4dadc22628438f916f4507f9d6d168a6528 Mon Sep 17 00:00:00 2001 From: Exverge Date: Thu, 2 Jul 2026 14:11:30 -0400 Subject: [PATCH 8/8] Revert "kernel: more debug info in GetInfo" This reverts commit f90ba2c4659d2b0d46331b890f459859804547db. --- src/core/horizon/kernel/kernel.cpp | 53 +++++++++++++++--------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/src/core/horizon/kernel/kernel.cpp b/src/core/horizon/kernel/kernel.cpp index 705c9276..b6b93d2b 100644 --- a/src/core/horizon/kernel/kernel.cpp +++ b/src/core/horizon/kernel/kernel.cpp @@ -968,28 +968,32 @@ result_t Kernel::GetInfo(Process* crnt_process, InfoType info_type, AutoObject* obj, u64 info_sub_type, u64& out_info) { (void)obj; + LOG_DEBUG(Kernel, "GetInfo called (type: {}, object: {}, subtype: {})", + info_type, (obj != nullptr ? obj->GetDebugName() : "null"), + info_sub_type); + switch (info_type) { case InfoType::CoreMask: LOG_NOT_IMPLEMENTED(Kernel, "CoreMask"); // HACK out_info = 0xf; - break; + return RESULT_SUCCESS; case InfoType::AliasRegionAddress: out_info = ALIAS_REGION.GetBegin(); - break; + return RESULT_SUCCESS; case InfoType::AliasRegionSize: out_info = ALIAS_REGION.GetSize(); - break; + return RESULT_SUCCESS; case InfoType::HeapRegionAddress: out_info = HEAP_REGION.GetBegin(); - break; + return RESULT_SUCCESS; case InfoType::HeapRegionSize: out_info = HEAP_REGION.GetSize(); - break; + return RESULT_SUCCESS; case InfoType::TotalMemorySize: // TODO: what should this be? out_info = 3u * 1024u * 1024u * 1024u; - break; + return RESULT_SUCCESS; case InfoType::UsedMemorySize: { // TODO: correct? /* @@ -1000,74 +1004,69 @@ result_t Kernel::GetInfo(Process* crnt_process, InfoType info_type, out_info = size; */ out_info = 4u * 1024u * 1024u; - break; + return RESULT_SUCCESS; } case InfoType::DebuggerAttached: // TODO: make this configurable out_info = true; - break; + return RESULT_SUCCESS; case InfoType::RandomEntropy: ASSERT_DEBUG(info_sub_type < crnt_process->GetRandomEntropy().size(), Kernel, "Invalid random entropy index {}", info_sub_type); out_info = crnt_process->GetRandomEntropy()[info_sub_type]; - break; + return RESULT_SUCCESS; case InfoType::AslrRegionAddress: out_info = ADDRESS_SPACE.GetBegin(); - break; + return RESULT_SUCCESS; case InfoType::AslrRegionSize: out_info = ADDRESS_SPACE.GetSize(); - break; + return RESULT_SUCCESS; case InfoType::StackRegionAddress: out_info = STACK_REGION.GetBegin(); - break; + return RESULT_SUCCESS; case InfoType::StackRegionSize: out_info = STACK_REGION.GetSize(); - break; + return RESULT_SUCCESS; case InfoType::TotalSystemResourceSize: { out_info = crnt_process->GetSystemResourceSize(); - break; + return RESULT_SUCCESS; } case InfoType::UsedSystemResourceSize: LOG_NOT_IMPLEMENTED(Kernel, "UsedSystemResourceSize"); // HACK out_info = 64 * 1024; - break; + return RESULT_SUCCESS; case InfoType::ProgramId: out_info = crnt_process->GetTitleID(); - break; + return RESULT_SUCCESS; case InfoType::UserExceptionContextAddress: LOG_NOT_IMPLEMENTED(Kernel, "UserExceptionContextAddress"); // HACK out_info = 0; - break; + return RESULT_SUCCESS; case InfoType::TotalNonSystemMemorySize: LOG_NOT_IMPLEMENTED(Kernel, "TotalNonSystemMemorySize"); // HACK out_info = 2u * 1024u * 1024u * 1024u; - break; + return RESULT_SUCCESS; case InfoType::UsedNonSystemMemorySize: LOG_NOT_IMPLEMENTED(Kernel, "UsedNonSystemMemorySize"); // HACK out_info = 1; - break; + return RESULT_SUCCESS; case InfoType::IsApplication: // TODO: don't always return true out_info = true; - break; + return RESULT_SUCCESS; case InfoType::AliasRegionExtraSize: LOG_NOT_IMPLEMENTED(Kernel, "AliasRegionExtraSize"); // HACK out_info = 0; - break; + return RESULT_SUCCESS; default: - LOG_WARN(Kernel, "GetInfo called with unknown info type {} (object: {}, subtype: {})", static_cast(info_type), (obj != nullptr ? obj->GetDebugName() : "null"), info_sub_type); + LOG_WARN(Kernel, "Unknown info type {}", info_type); return MAKE_RESULT(Svc, 0x78); } - - LOG_DEBUG(Kernel, "GetInfo called (type: {}, object: {}, subtype: {}, out: 0x{:08x})", - info_type, (obj != nullptr ? obj->GetDebugName() : "null"), - info_sub_type, out_info); - return RESULT_SUCCESS; } result_t Kernel::MapPhysicalMemory(Process* crnt_process, vaddr_t addr,