Kernel: Allow mapping dma regions as not uncached
This commit is contained in:
@@ -8,7 +8,7 @@ namespace Kernel
|
||||
class DMARegion
|
||||
{
|
||||
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();
|
||||
|
||||
size_t size() const { return m_size; }
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
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);
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Kernel
|
||||
vaddr_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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user