From 5ec8c004ce935e045cb3a1af510d614fd05614f6 Mon Sep 17 00:00:00 2001 From: Compute-Runtime-Validation Date: Sun, 13 Feb 2022 04:04:31 +0100 Subject: [PATCH] Revert "Set cooperative flag for debuggable contexts during creation" This reverts commit 5e0732f57e8567f6d0e0c9da5f7a6ef9eb2302fa. Signed-off-by: Compute-Runtime-Validation --- .../os_interface/linux/drm_tests.cpp | 56 ------------------- shared/source/os_interface/linux/drm_neo.h | 2 +- .../os_interface/linux/os_context_linux.cpp | 11 ++-- shared/test/common/libult/linux/drm_mock.h | 13 ----- 4 files changed, 5 insertions(+), 77 deletions(-) diff --git a/opencl/test/unit_test/os_interface/linux/drm_tests.cpp b/opencl/test/unit_test/os_interface/linux/drm_tests.cpp index 008a60834b..cfd3b668cb 100644 --- a/opencl/test/unit_test/os_interface/linux/drm_tests.cpp +++ b/opencl/test/unit_test/os_interface/linux/drm_tests.cpp @@ -632,62 +632,6 @@ TEST(DrmTest, givenProgramDebuggingAndContextDebugAvailableWhenCreatingContextFo EXPECT_EQ(static_cast(-1), drmMock.passedContextDebugId); } -TEST(DrmTest, givenProgramDebuggingAndContextDebugSupportedWhenCreatingContextThenCooperativeFlagIsPassedToCreateDrmContext) { - auto executionEnvironment = std::make_unique(); - executionEnvironment->setDebuggingEnabled(); - executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get()); - executionEnvironment->calculateMaxOsContextCount(); - executionEnvironment->rootDeviceEnvironments[0]->osInterface = std::make_unique(); - - DrmMockNonFailing drmMock(*executionEnvironment->rootDeviceEnvironments[0]); - drmMock.contextDebugSupported = true; - drmMock.callBaseCreateDrmContext = false; - - OsContextLinux osContext(drmMock, 5u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular})); - osContext.ensureContextInitialized(); - - EXPECT_NE(static_cast(-1), drmMock.passedContextDebugId); - EXPECT_TRUE(drmMock.capturedCooperativeContextRequest); - - OsContextLinux osContext2(drmMock, 5u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Cooperative})); - osContext2.ensureContextInitialized(); - - EXPECT_NE(static_cast(-1), drmMock.passedContextDebugId); - EXPECT_TRUE(drmMock.capturedCooperativeContextRequest); -} - -TEST(DrmTest, givenNotEnabledDebuggingOrContextDebugUnsupportedWhenCreatingContextThenCooperativeFlagIsNotPassedToCreateDrmContext) { - auto executionEnvironment = std::make_unique(); - executionEnvironment->prepareRootDeviceEnvironments(1); - executionEnvironment->rootDeviceEnvironments[0]->setHwInfo(defaultHwInfo.get()); - executionEnvironment->calculateMaxOsContextCount(); - executionEnvironment->rootDeviceEnvironments[0]->osInterface = std::make_unique(); - - DrmMockNonFailing drmMock(*executionEnvironment->rootDeviceEnvironments[0]); - - drmMock.contextDebugSupported = true; - drmMock.callBaseCreateDrmContext = false; - drmMock.capturedCooperativeContextRequest = true; - - EXPECT_FALSE(executionEnvironment->isDebuggingEnabled()); - - OsContextLinux osContext(drmMock, 5u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular})); - osContext.ensureContextInitialized(); - - EXPECT_FALSE(drmMock.capturedCooperativeContextRequest); - - executionEnvironment->setDebuggingEnabled(); - drmMock.contextDebugSupported = false; - drmMock.callBaseCreateDrmContext = false; - drmMock.capturedCooperativeContextRequest = true; - - OsContextLinux osContext2(drmMock, 5u, EngineDescriptorHelper::getDefaultDescriptor({aub_stream::ENGINE_RCS, EngineUsage::Regular})); - osContext2.ensureContextInitialized(); - - EXPECT_FALSE(drmMock.capturedCooperativeContextRequest); -} - TEST(DrmTest, givenPrintIoctlDebugFlagSetWhenGettingTimestampFrequencyThenCaptureExpectedOutput) { DebugManagerStateRestore restore; DebugManager.flags.PrintIoctlEntries.set(true); diff --git a/shared/source/os_interface/linux/drm_neo.h b/shared/source/os_interface/linux/drm_neo.h index 9ee61dd853..37e26bb405 100644 --- a/shared/source/os_interface/linux/drm_neo.h +++ b/shared/source/os_interface/linux/drm_neo.h @@ -119,7 +119,7 @@ class Drm : public DriverModel { int queryAdapterBDF(); int createDrmVirtualMemory(uint32_t &drmVmId); void destroyDrmVirtualMemory(uint32_t drmVmId); - MOCKABLE_VIRTUAL uint32_t createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequested, bool isCooperativeContextRequested); + uint32_t createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequested, bool isCooperativeContextRequested); void appendDrmContextFlags(drm_i915_gem_context_create_ext &gcc, bool isDirectSubmissionRequested); void destroyDrmContext(uint32_t drmContextId); int queryVmId(uint32_t drmContextId, uint32_t &vmId); diff --git a/shared/source/os_interface/linux/os_context_linux.cpp b/shared/source/os_interface/linux/os_context_linux.cpp index 06033ebd88..50b8dad340 100644 --- a/shared/source/os_interface/linux/os_context_linux.cpp +++ b/shared/source/os_interface/linux/os_context_linux.cpp @@ -45,22 +45,19 @@ void OsContextLinux::initializeContext() { this->drmVmIds.resize(deviceBitfield.size(), 0); } - const bool debuggableContext = drm.isContextDebugSupported() && drm.getRootDeviceEnvironment().executionEnvironment.isDebuggingEnabled() && !isInternalEngine(); - for (auto deviceIndex = 0u; deviceIndex < deviceBitfield.size(); deviceIndex++) { if (deviceBitfield.test(deviceIndex)) { auto drmVmId = drm.getVirtualMemoryAddressSpace(deviceIndex); - auto drmContextId = drm.createDrmContext(drmVmId, drm.isVmBindAvailable(), isCooperativeEngine() || debuggableContext); + auto drmContextId = drm.createDrmContext(drmVmId, drm.isVmBindAvailable(), isCooperativeEngine()); if (drm.areNonPersistentContextsSupported()) { drm.setNonPersistentContext(drmContextId); } if (drm.getRootDeviceEnvironment().executionEnvironment.isDebuggingEnabled()) { drm.setUnrecoverableContext(drmContextId); - } - - if (debuggableContext) { - drm.setContextDebugFlag(drmContextId); + if (!isInternalEngine()) { + drm.setContextDebugFlag(drmContextId); + } } if (drm.isPreemptionSupported() && isLowPriority()) { diff --git a/shared/test/common/libult/linux/drm_mock.h b/shared/test/common/libult/linux/drm_mock.h index fd2e8a446e..ed5b917633 100644 --- a/shared/test/common/libult/linux/drm_mock.h +++ b/shared/test/common/libult/linux/drm_mock.h @@ -122,15 +122,6 @@ class DrmMock : public Drm { queryPageFaultSupportCalled = true; } - uint32_t createDrmContext(uint32_t drmVmId, bool isDirectSubmissionRequested, bool isCooperativeContextRequested) override { - capturedCooperativeContextRequest = isCooperativeContextRequested; - if (callBaseCreateDrmContext) { - return Drm::createDrmContext(drmVmId, isDirectSubmissionRequested, isCooperativeContextRequested); - } - - return 0; - } - static const int mockFd = 33; bool failRetTopology = false; @@ -165,10 +156,6 @@ class DrmMock : public Drm { bool disableSomeTopology = false; bool allowDebugAttach = false; bool allowDebugAttachCallBase = false; - bool callBaseCreateDrmContext = true; - - bool capturedCooperativeContextRequest = false; - uint32_t passedContextDebugId = std::numeric_limits::max(); std::vector resetStatsToReturn{};