Add unit test for query page fault support

Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
This commit is contained in:
Milczarek, Slawomir
2021-11-11 22:11:38 +00:00
committed by Compute-Runtime-Automation
parent c0dc88db33
commit bc4c64b095
5 changed files with 20 additions and 5 deletions

View File

@@ -4755,6 +4755,14 @@ TEST(DrmMemoryManagerSimpleTest, givenDrmMemoryManagerWhenFreeGraphicsMemoryIsCa
memoryManager.freeGraphicsMemoryImpl(drmAllocation);
}
TEST(DrmMemoryManagerSimpleTest, WhenDrmIsCreatedThenQueryPageFaultSupportIsCalled) {
MockExecutionEnvironment executionEnvironment(defaultHwInfo.get());
executionEnvironment.rootDeviceEnvironments[0]->osInterface = std::make_unique<OSInterface>();
auto drm = std::unique_ptr<Drm>(Drm::create(nullptr, *executionEnvironment.rootDeviceEnvironments[0]));
EXPECT_TRUE(static_cast<DrmMock *>(drm.get())->queryPageFaultSupportCalled);
}
using DrmMemoryManagerWithLocalMemoryTest = Test<DrmMemoryManagerWithLocalMemoryFixture>;
TEST_F(DrmMemoryManagerWithLocalMemoryTest, givenDrmMemoryManagerWithLocalMemoryWhenLockResourceIsCalledOnAllocationInLocalMemoryThenReturnNullPtr) {

View File

@@ -110,6 +110,8 @@ Drm *Drm::create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironm
drmObject->checkContextDebugSupport();
drmObject->queryPageFaultSupport();
if (rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled()) {
if (drmObject->isVmBindAvailable()) {
drmObject->setPerContextVMRequired(true);
@@ -126,8 +128,6 @@ Drm *Drm::create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironm
drmObject->queryAdapterBDF();
drmObject->queryPageFaultSupport();
return drmObject.release();
}

View File

@@ -172,7 +172,7 @@ class Drm : public DriverModel {
MOCKABLE_VIRTUAL bool isVmBindAvailable();
MOCKABLE_VIRTUAL bool registerResourceClasses();
void queryPageFaultSupport();
MOCKABLE_VIRTUAL void queryPageFaultSupport();
bool hasPageFaultSupport() const;
MOCKABLE_VIRTUAL uint32_t registerResource(ResourceClass classType, const void *data, size_t size);

View File

@@ -107,6 +107,11 @@ class DrmMock : public Drm {
return allowDebugAttach;
}
void queryPageFaultSupport() override {
Drm::queryPageFaultSupport();
queryPageFaultSupportCalled = true;
}
static const int mockFd = 33;
bool failRetTopology = false;
@@ -154,6 +159,8 @@ class DrmMock : public Drm {
drm_i915_gem_context_param receivedContextParamRequest = {};
uint64_t receivedRecoverableContextValue = std::numeric_limits<uint64_t>::max();
bool queryPageFaultSupportCalled = false;
//DRM_IOCTL_I915_GEM_EXECBUFFER2
drm_i915_gem_execbuffer2 execBuffer = {0};
uint64_t bbFlags;

View File

@@ -45,6 +45,8 @@ Drm *Drm::create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironm
drm->queryMemoryInfo();
drm->queryPageFaultSupport();
if (drm->isVmBindAvailable() && rootDeviceEnvironment.executionEnvironment.isDebuggingEnabled()) {
drm->setPerContextVMRequired(true);
}
@@ -53,8 +55,6 @@ Drm *Drm::create(std::unique_ptr<HwDeviceIdDrm> &&hwDeviceId, RootDeviceEnvironm
drm->createVirtualMemoryAddressSpace(HwHelper::getSubDevicesCount(hwInfo));
}
drm->queryPageFaultSupport();
return drm;
}