From 6c277d7c6c5fda2b6cd4b4bd3570ebb8d4c98d28 Mon Sep 17 00:00:00 2001 From: Stephen Miller Date: Thu, 17 Apr 2025 21:46:34 -0500 Subject: [PATCH] Fix phys_addr_out phys_addr_out should be equal to search_start in cases where search_start is greater than the dmem_area base. --- src/core/memory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/memory.cpp b/src/core/memory.cpp index 4a50207f8..c8ca8eb6a 100644 --- a/src/core/memory.cpp +++ b/src/core/memory.cpp @@ -639,7 +639,7 @@ int MemoryManager::DirectQueryAvailable(PAddr search_start, PAddr search_end, si continue; } - const auto aligned_base = alignment > 0 ? Common::AlignUp(dmem_area->second.base, alignment) + auto aligned_base = alignment > 0 ? Common::AlignUp(dmem_area->second.base, alignment) : dmem_area->second.base; const auto alignment_size = aligned_base - dmem_area->second.base; auto remaining_size = @@ -650,6 +650,7 @@ int MemoryManager::DirectQueryAvailable(PAddr search_start, PAddr search_end, si remaining_size = remaining_size > (search_start - dmem_area->second.base) ? remaining_size - (search_start - dmem_area->second.base) : 0; + aligned_base = Common::AlignUp(search_start, alignment); } if (dmem_area->second.GetEnd() > search_end) {