diff --git a/runtime/os_interface/linux/drm_memory_manager.cpp b/runtime/os_interface/linux/drm_memory_manager.cpp index 94921282d4..f978a91a61 100644 --- a/runtime/os_interface/linux/drm_memory_manager.cpp +++ b/runtime/os_interface/linux/drm_memory_manager.cpp @@ -60,6 +60,7 @@ DrmMemoryManager::DrmMemoryManager(Drm *drm, gemCloseWorkerMode mode, bool force pinBB->isAllocated = true; } } + internal32bitAllocator.reset(new Allocator32bit); } DrmMemoryManager::~DrmMemoryManager() { diff --git a/runtime/os_interface/linux/drm_memory_manager.h b/runtime/os_interface/linux/drm_memory_manager.h index 2b94fa9689..dcbae7a128 100644 --- a/runtime/os_interface/linux/drm_memory_manager.h +++ b/runtime/os_interface/linux/drm_memory_manager.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Intel Corporation + * Copyright (c) 2017 - 2018, Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -90,5 +90,6 @@ class DrmMemoryManager : public MemoryManager { decltype(&close) closeFunction = close; std::vector sharingBufferObjects; std::recursive_mutex mtx; + std::unique_ptr internal32bitAllocator; }; } // namespace OCLRT diff --git a/unit_tests/os_interface/linux/drm_memory_manager_tests.cpp b/unit_tests/os_interface/linux/drm_memory_manager_tests.cpp index 31af273d5a..5e29a93e29 100644 --- a/unit_tests/os_interface/linux/drm_memory_manager_tests.cpp +++ b/unit_tests/os_interface/linux/drm_memory_manager_tests.cpp @@ -107,6 +107,7 @@ class TestedDrmMemoryManager : public DrmMemoryManager { return DrmMemoryManager::allocUserptr(address, size, flags, softpin); } DrmGemCloseWorker *getgemCloseWorker() { return this->gemCloseWorker.get(); } + Allocator32bit *getDrmInternal32BitAllocator() { return internal32bitAllocator.get(); } }; class DrmMemoryManagerFixture : public MemoryManagementFixture { @@ -142,6 +143,11 @@ class DrmMemoryManagerFixture : public MemoryManagementFixture { typedef Test DrmMemoryManagerTest; +TEST_F(DrmMemoryManagerTest, givenDefaultDrmMemoryMangerWhenItIsCreatedThenItContainsInternal32BitAllocator) { + mock->ioctl_expected = 0; + EXPECT_NE(nullptr, memoryManager->getDrmInternal32BitAllocator()); +} + TEST_F(DrmMemoryManagerTest, pinBBnotCreated) { mock->ioctl_expected = 0; EXPECT_EQ(nullptr, memoryManager->getPinBB());