Allow overlapping direct memory mappings (#3648)

Real hardware allows this, and it worked fine in the past, so allow it here.
This commit is contained in:
Stephen Miller
2025-09-24 11:22:48 -05:00
committed by GitHub
parent eeee6ad0ee
commit 98ceb6e43e

View File

@@ -350,7 +350,7 @@ s32 MemoryManager::MapMemory(void** out_addr, VAddr virtual_addr, u64 size, Memo
do {
auto dmem_area = FindDmemArea(phys_addr + validated_size)->second;
// If any requested dmem area is not allocated, return an error.
if (dmem_area.dma_type != DMAType::Allocated) {
if (dmem_area.dma_type != DMAType::Allocated && dmem_area.dma_type != DMAType::Mapped) {
LOG_ERROR(Kernel_Vmm, "Unable to map {:#x} bytes at physical address {:#x}", size,
phys_addr);
return ORBIS_KERNEL_ERROR_ENOMEM;