diff --git a/shared/source/os_interface/linux/ioctl_helper.cpp b/shared/source/os_interface/linux/ioctl_helper.cpp index d5e2b64b49..3201a751a7 100644 --- a/shared/source/os_interface/linux/ioctl_helper.cpp +++ b/shared/source/os_interface/linux/ioctl_helper.cpp @@ -29,7 +29,7 @@ void IoctlHelper::fillExecObject(ExecObject &execObject, uint32_t handle, uint64 auto &drmExecObject = *reinterpret_cast(execObject.data); drmExecObject.handle = handle; - drmExecObject.relocation_count = 0; // No relocations, we are SoftPinning + drmExecObject.relocation_count = 0; //No relocations, we are SoftPinning drmExecObject.relocs_ptr = 0ul; drmExecObject.alignment = 0; drmExecObject.offset = gpuAddress; @@ -91,7 +91,9 @@ uint32_t IoctlHelper::createDrmContext(Drm &drm, OsContextLinux &osContext, uint drm.setNonPersistentContext(drmContextId); } - drm.setUnrecoverableContext(drmContextId); + if (drm.getRootDeviceEnvironment().executionEnvironment.isDebuggingEnabled()) { + drm.setUnrecoverableContext(drmContextId); + } if (debuggableContext) { drm.setContextDebugFlag(drmContextId); diff --git a/shared/test/common/libult/linux/drm_mock.cpp b/shared/test/common/libult/linux/drm_mock.cpp index 12413342c9..ad52038adc 100644 --- a/shared/test/common/libult/linux/drm_mock.cpp +++ b/shared/test/common/libult/linux/drm_mock.cpp @@ -106,8 +106,6 @@ int DrmMock::ioctl(DrmIoctl request, void *arg) { receivedContextParamRequestCount++; receivedContextParamRequest = *reinterpret_cast(&receivedContextCreateSetParam.param); if (receivedContextCreateSetParam.param.param == I915_CONTEXT_PARAM_VM) { - this->requestSetVmId = receivedContextParamRequest.value; - return this->storedRetVal; } } @@ -154,12 +152,10 @@ int DrmMock::ioctl(DrmIoctl request, void *arg) { return this->storedRetValForPersistant; } if (receivedContextParamRequest.param == I915_CONTEXT_PARAM_VM) { - this->requestSetVmId = receivedContextParamRequest.value; return this->storedRetVal; } if (receivedContextParamRequest.param == I915_CONTEXT_PARAM_RECOVERABLE) { receivedRecoverableContextValue = receivedContextParamRequest.value; - unrecoverableContextSet = true; return this->storedRetVal; } } @@ -230,7 +226,7 @@ int DrmMock::ioctl(DrmIoctl request, void *arg) { if (request == DrmIoctl::PrimeFdToHandle) { ioctlCount.primeFdToHandle++; auto primeToHandleParams = static_cast(arg); - // return BO + //return BO primeToHandleParams->handle = outputHandle; inputFd = primeToHandleParams->fileDescriptor; return fdToHandleRetVal; diff --git a/shared/test/common/libult/linux/drm_mock.h b/shared/test/common/libult/linux/drm_mock.h index 7ad7dbce15..4ffe472740 100644 --- a/shared/test/common/libult/linux/drm_mock.h +++ b/shared/test/common/libult/linux/drm_mock.h @@ -192,7 +192,6 @@ class DrmMock : public Drm { bool callBaseIsVmBindAvailable = false; bool callBaseIsSetPairAvailable = false; bool callBaseGetSetPairAvailable = false; - bool unrecoverableContextSet = false; bool capturedCooperativeContextRequest = false; bool incrementVmId = false; @@ -208,7 +207,6 @@ class DrmMock : public Drm { uint32_t receivedContextParamRequestCount = 0; GemContextParam receivedContextParamRequest = {}; uint64_t receivedRecoverableContextValue = std::numeric_limits::max(); - uint64_t requestSetVmId = std::numeric_limits::max(); bool queryPageFaultSupportCalled = false; diff --git a/shared/test/unit_test/os_interface/linux/drm_tests.cpp b/shared/test/unit_test/os_interface/linux/drm_tests.cpp index 431e22f352..5e084b4f2c 100644 --- a/shared/test/unit_test/os_interface/linux/drm_tests.cpp +++ b/shared/test/unit_test/os_interface/linux/drm_tests.cpp @@ -364,7 +364,7 @@ TEST(DrmTest, givenDrmWhenOsContextIsCreatedThenCreateAndDestroyNewDrmOsContext) } } - EXPECT_EQ(4u, drmMock.receivedContextParamRequestCount); + EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); } TEST(DrmTest, whenCreatingDrmContextWithVirtualMemoryAddressSpaceThenProperVmIdIsSet) { @@ -379,9 +379,7 @@ TEST(DrmTest, whenCreatingDrmContextWithVirtualMemoryAddressSpaceThenProperVmIdI OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext.ensureContextInitialized(); - EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); - - EXPECT_EQ(drmMock.requestSetVmId, static_cast(drmMock.getVirtualMemoryAddressSpace(0u))); + EXPECT_EQ(drmMock.receivedContextParamRequest.value, drmMock.getVirtualMemoryAddressSpace(0u)); } TEST(DrmTest, whenCreatingDrmContextWithNoVirtualMemoryAddressSpaceThenProperContextIdIsSet) { @@ -397,7 +395,7 @@ TEST(DrmTest, whenCreatingDrmContextWithNoVirtualMemoryAddressSpaceThenProperCon OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext.ensureContextInitialized(); - EXPECT_EQ(1u, drmMock.receivedContextParamRequestCount); // unrecoverable context + EXPECT_EQ(0u, drmMock.receivedContextParamRequestCount); } TEST(DrmTest, givenDrmAndNegativeCheckNonPersistentContextsSupportWhenOsContextIsCreatedThenReceivedContextParamRequestCountReturnsCorrectValue) { @@ -406,7 +404,7 @@ TEST(DrmTest, givenDrmAndNegativeCheckNonPersistentContextsSupportWhenOsContextI executionEnvironment->rootDeviceEnvironments[0]->initGmm(); DrmMock drmMock(*executionEnvironment->rootDeviceEnvironments[0]); - auto expectedCount = 1u; // unrecoverable context + auto expectedCount = 0u; { drmMock.storedRetValForPersistant = -1; @@ -422,7 +420,7 @@ TEST(DrmTest, givenDrmAndNegativeCheckNonPersistentContextsSupportWhenOsContextI ++expectedCount; OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext.ensureContextInitialized(); - expectedCount += 3; + expectedCount += 2; EXPECT_EQ(expectedCount, drmMock.receivedContextParamRequestCount); } } @@ -440,17 +438,17 @@ TEST(DrmTest, givenDrmPreemptionEnabledAndLowPriorityEngineWhenCreatingOsContext OsContextLinux osContext2(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority})); osContext2.ensureContextInitialized(); - EXPECT_EQ(4u, drmMock.receivedContextParamRequestCount); + EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); drmMock.preemptionSupported = true; OsContextLinux osContext3(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext3.ensureContextInitialized(); - EXPECT_EQ(6u, drmMock.receivedContextParamRequestCount); + EXPECT_EQ(3u, drmMock.receivedContextParamRequestCount); OsContextLinux osContext4(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::LowPriority})); osContext4.ensureContextInitialized(); - EXPECT_EQ(9u, drmMock.receivedContextParamRequestCount); + EXPECT_EQ(5u, drmMock.receivedContextParamRequestCount); EXPECT_EQ(drmMock.storedDrmContextId, drmMock.receivedContextParamRequest.contextId); EXPECT_EQ(static_cast(I915_CONTEXT_PARAM_PRIORITY), drmMock.receivedContextParamRequest.param); EXPECT_EQ(static_cast(-1023), drmMock.receivedContextParamRequest.value); @@ -741,7 +739,7 @@ TEST(DrmTest, givenNoPerContextVmsDrmWhenCreatingOsContextsThenVmIdIsNotQueriedA OsContextLinux osContext(drmMock, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext.ensureContextInitialized(); - EXPECT_EQ(2u, drmMock.receivedContextParamRequestCount); + EXPECT_EQ(1u, drmMock.receivedContextParamRequestCount); auto &drmVmIds = osContext.getDrmVmIds(); EXPECT_EQ(0u, drmVmIds.size()); @@ -873,7 +871,6 @@ TEST(DrmTest, givenProgramDebuggingWhenCreatingContextThenUnrecoverableContextIs OsContextLinux osContext(drm, 0u, EngineDescriptorHelper::getDefaultDescriptor()); osContext.ensureContextInitialized(); - EXPECT_TRUE(drm.unrecoverableContextSet); EXPECT_EQ(0u, drm.receivedRecoverableContextValue); EXPECT_EQ(2u, drm.receivedContextParamRequestCount); }