From 56eced2faa92210e61b663c90026ffdab934c8b6 Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Mon, 31 Dec 2018 10:40:11 +0100 Subject: [PATCH] Don't allow 32bit allocation for SVM allocation type Change-Id: I2fbae4ce3be956a386bdc22c9b129f37d75c8e8f Signed-off-by: Mateusz Jablonski --- runtime/memory_manager/memory_manager.cpp | 9 ++++++++- .../memory_manager_allocate_in_preferred_pool_tests.inl | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/runtime/memory_manager/memory_manager.cpp b/runtime/memory_manager/memory_manager.cpp index 3b0f81964f..5351470e7a 100644 --- a/runtime/memory_manager/memory_manager.cpp +++ b/runtime/memory_manager/memory_manager.cpp @@ -205,7 +205,6 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo case GraphicsAllocation::AllocationType::PRINTF_SURFACE: case GraphicsAllocation::AllocationType::CONSTANT_SURFACE: case GraphicsAllocation::AllocationType::GLOBAL_SURFACE: - case GraphicsAllocation::AllocationType::SVM: allow64KbPages = true; allow32Bit = true; break; @@ -213,6 +212,14 @@ bool MemoryManager::getAllocationData(AllocationData &allocationData, const Allo break; } + switch (properties.allocationType) { + case GraphicsAllocation::AllocationType::SVM: + allow64KbPages = true; + break; + default: + break; + } + switch (properties.allocationType) { case GraphicsAllocation::AllocationType::BUFFER: case GraphicsAllocation::AllocationType::BUFFER_HOST_MEMORY: diff --git a/unit_tests/memory_manager/memory_manager_allocate_in_preferred_pool_tests.inl b/unit_tests/memory_manager/memory_manager_allocate_in_preferred_pool_tests.inl index 66f5fc27d8..0842420ac7 100644 --- a/unit_tests/memory_manager/memory_manager_allocate_in_preferred_pool_tests.inl +++ b/unit_tests/memory_manager/memory_manager_allocate_in_preferred_pool_tests.inl @@ -354,6 +354,13 @@ TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThenZ EXPECT_TRUE(allocData.flags.allocateMemory); } +TEST(MemoryManagerTest, givenSvmAllocationTypeWhenGetAllocationDataIsCalledThen64kbPagesAreAllowedAnd32BitAllocationIsDisallowed) { + AllocationData allocData; + MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::SVM}, 0, nullptr); + EXPECT_TRUE(allocData.flags.allow64kbPages); + EXPECT_FALSE(allocData.flags.allow32Bit); +} + TEST(MemoryManagerTest, givenUndecidedTypeWhenGetAllocationDataIsCalledThenSystemMemoryIsRequested) { AllocationData allocData; MockMemoryManager::getAllocationData(allocData, {1, GraphicsAllocation::AllocationType::UNDECIDED}, 0, nullptr);