Kernel: Allow mapping dma regions as not uncached

This commit is contained in:
2026-04-27 19:36:32 +03:00
parent 0e00b72df6
commit ab8bcbec3e
2 changed files with 3 additions and 3 deletions

View File

@@ -8,7 +8,7 @@ namespace Kernel
class DMARegion class DMARegion
{ {
public: public:
static BAN::ErrorOr<BAN::UniqPtr<DMARegion>> create(size_t size); static BAN::ErrorOr<BAN::UniqPtr<DMARegion>> create(size_t size, PageTable::MemoryType type = PageTable::MemoryType::Uncached);
~DMARegion(); ~DMARegion();
size_t size() const { return m_size; } size_t size() const { return m_size; }

View File

@@ -5,7 +5,7 @@
namespace Kernel namespace Kernel
{ {
BAN::ErrorOr<BAN::UniqPtr<DMARegion>> DMARegion::create(size_t size) BAN::ErrorOr<BAN::UniqPtr<DMARegion>> DMARegion::create(size_t size, PageTable::MemoryType type)
{ {
size_t needed_pages = BAN::Math::div_round_up<size_t>(size, PAGE_SIZE); size_t needed_pages = BAN::Math::div_round_up<size_t>(size, PAGE_SIZE);
@@ -26,7 +26,7 @@ namespace Kernel
vaddr_guard.disable(); vaddr_guard.disable();
paddr_guard.disable(); paddr_guard.disable();
PageTable::kernel().map_range_at(paddr, vaddr, size, PageTable::Flags::ReadWrite | PageTable::Flags::Present, PageTable::MemoryType::Uncached); PageTable::kernel().map_range_at(paddr, vaddr, size, PageTable::Flags::ReadWrite | PageTable::Flags::Present, type);
return BAN::UniqPtr<DMARegion>::adopt(region_ptr); return BAN::UniqPtr<DMARegion>::adopt(region_ptr);
} }