Skip to content

Commit ac42206

Browse files
fix: defer creation of IoctlHelperXe
create IoctlHelperXe within Drm::setupIoctlHelper Related-To: NEO-13527 Signed-off-by: Mateusz Jablonski <[email protected]>
1 parent b0b2f2f commit ac42206

File tree

3 files changed

+5
-11
lines changed

3 files changed

+5
-11
lines changed

shared/source/os_interface/linux/drm_neo.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -1091,9 +1091,12 @@ bool Drm::completionFenceSupport() {
10911091

10921092
void Drm::setupIoctlHelper(const PRODUCT_FAMILY productFamily) {
10931093
if (!this->ioctlHelper) {
1094+
auto drmVersion = Drm::getDrmVersion(getFileDescriptor());
10941095
auto productSpecificIoctlHelperCreator = ioctlHelperFactory[productFamily];
10951096
if (productSpecificIoctlHelperCreator && !debugManager.flags.IgnoreProductSpecificIoctlHelper.get()) {
10961097
this->ioctlHelper = productSpecificIoctlHelperCreator.value()(*this);
1098+
} else if ("xe" == drmVersion) {
1099+
this->ioctlHelper = IoctlHelperXe::create(*this);
10971100
} else {
10981101
std::string prelimVersion = "";
10991102
getPrelimVersion(prelimVersion);
@@ -1726,10 +1729,8 @@ bool Drm::isDrmSupported(int fileDescriptor) {
17261729
bool Drm::queryDeviceIdAndRevision() {
17271730
auto drmVersion = Drm::getDrmVersion(getFileDescriptor());
17281731
if ("xe" == drmVersion) {
1729-
this->ioctlHelper = IoctlHelperXe::create(*this);
1730-
auto xeIoctlHelperPtr = static_cast<IoctlHelperXe *>(this->ioctlHelper.get());
17311732
this->setPerContextVMRequired(false);
1732-
return xeIoctlHelperPtr->initialize();
1733+
return IoctlHelperXe::queryDeviceIdAndRevision(*this);
17331734
}
17341735
return IoctlHelperI915::queryDeviceIdAndRevision(*this);
17351736
}

shared/source/os_interface/linux/xe/ioctl_helper_xe.cpp

-4
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,6 @@ bool IoctlHelperXe::initialize() {
161161

162162
euDebugInterface = EuDebugInterface::create(drm.getSysFsPciPath());
163163

164-
if (!IoctlHelperXe::queryDeviceIdAndRevision(this->drm)) {
165-
return false;
166-
}
167-
168164
drm_xe_device_query queryConfig = {};
169165
queryConfig.query = DRM_XE_DEVICE_QUERY_CONFIG;
170166

shared/test/unit_test/os_interface/linux/xe/ioctl_helper_xe_tests.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -1959,13 +1959,10 @@ TEST_F(IoctlHelperXeTest, whenInitializeThenProperHwInfoIsSet) {
19591959

19601960
auto hwInfo = executionEnvironment->rootDeviceEnvironments[0]->getMutableHardwareInfo();
19611961

1962-
hwInfo->platform.usDeviceID = defaultHwInfo->platform.usDeviceID + 1;
1963-
hwInfo->platform.usRevId = defaultHwInfo->platform.usRevId + 1;
19641962
hwInfo->capabilityTable.gpuAddressSpace = 0;
19651963

19661964
ioctlHelper->initialize();
1967-
EXPECT_EQ(defaultHwInfo->platform.usRevId, hwInfo->platform.usRevId);
1968-
EXPECT_EQ(defaultHwInfo->platform.usDeviceID, hwInfo->platform.usDeviceID);
1965+
19691966
EXPECT_EQ((1ull << 48) - 1, hwInfo->capabilityTable.gpuAddressSpace);
19701967
EXPECT_EQ(static_cast<uint32_t>(DrmMockXe::mockDefaultCxlType), hwInfo->capabilityTable.cxlType);
19711968

0 commit comments

Comments
 (0)