From 6a933f9d904da5c6a6933fa36963473f1e06082c Mon Sep 17 00:00:00 2001 From: Exverge Date: Thu, 6 Aug 2026 22:34:14 -0400 Subject: [PATCH] [hle] memory_manager: keep allocating on non-4KiB --- src/core/hle/kernel/k_memory_manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/hle/kernel/k_memory_manager.cpp b/src/core/hle/kernel/k_memory_manager.cpp index 687ab48109..c14cf6daf2 100644 --- a/src/core/hle/kernel/k_memory_manager.cpp +++ b/src/core/hle/kernel/k_memory_manager.cpp @@ -289,7 +289,7 @@ Result KMemoryManager::AllocatePageGroupImpl(KPageGroup* out, size_t num_pages, const size_t pages_per_alloc = KPageHeap::GetBlockNumPages(index); for (Impl* cur_manager = this->GetFirstManager(pool, dir); cur_manager != nullptr; cur_manager = this->GetNextManager(cur_manager, dir)) { - while (num_pages >= pages_per_alloc) { + while (num_pages > 0 && (num_pages >= pages_per_alloc || index == min_index)) { // Allocate a block. KPhysicalAddress allocated_block = cur_manager->AllocateBlock(index, random); if (allocated_block == 0) { @@ -342,7 +342,7 @@ Result KMemoryManager::AllocatePageGroupImpl(KPageGroup* out, size_t num_pages, } } - // Only succeed if we allocated as many pages as we wanted. + // Only succeed if we allocated as many pages as we wanted. (this should never happen?) R_UNLESS(num_pages == 0, ResultOutOfMemory); // We succeeded!