mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 01:04:57 +08:00
fix: ensure system info is queried before querying topology
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
06457b942e
commit
85df385582
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Intel Corporation
|
||||
* Copyright (C) 2023-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -31,6 +31,7 @@ void DebugApiLinuxFixture::setUp(NEO::HardwareInfo *hwInfo) {
|
||||
mockDrm->storedEUVal = hwInfo->gtSystemInfo.EUCount;
|
||||
}
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
auto &rootDeviceEnvironment = *neoDevice->executionEnvironment->rootDeviceEnvironments[0];
|
||||
auto gtSystemInfo = &rootDeviceEnvironment.getMutableHardwareInfo()->gtSystemInfo;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2022-2023 Intel Corporation
|
||||
* Copyright (C) 2022-2024 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -32,6 +32,7 @@ void DebugApiLinuxPrelimFixture::setUp(NEO::HardwareInfo *hwInfo) {
|
||||
mockDrm->storedEUVal = hwInfo->gtSystemInfo.EUCount;
|
||||
}
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
auto &rootDeviceEnvironment = *neoDevice->executionEnvironment->rootDeviceEnvironments[0];
|
||||
auto gtSystemInfo = &rootDeviceEnvironment.getMutableHardwareInfo()->gtSystemInfo;
|
||||
@@ -63,6 +64,7 @@ void DebugApiLinuxMultiDeviceFixture::setUp() {
|
||||
ASSERT_NE(nullptr, engineInfo->getEngineInstance(1, hwInfo.capabilityTable.defaultEngineType));
|
||||
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
auto &rootDeviceEnvironment = *neoDevice->getExecutionEnvironment()->rootDeviceEnvironments[0];
|
||||
auto gtSystemInfo = &rootDeviceEnvironment.getMutableHardwareInfo()->gtSystemInfo;
|
||||
|
||||
@@ -146,6 +146,7 @@ TEST(DebugSessionLinuxi915Test, WhenConvertingThreadIDsForDeviceWithSingleSliceT
|
||||
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->engineInfoQueried = true;
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
|
||||
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new NEO::OSInterface);
|
||||
@@ -192,6 +193,7 @@ TEST(DebugSessionLinuxi915Test, WhenConvertingThreadIDsForDeviceWithMultipleSlic
|
||||
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->engineInfoQueried = true;
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
|
||||
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new NEO::OSInterface);
|
||||
@@ -236,6 +238,7 @@ TEST(DebugSessionLinuxi915Test, GivenDeviceWithSingleSliceWhenCallingAreRequeste
|
||||
|
||||
NEO::DrmQueryTopologyData topologyData = {};
|
||||
mockDrm->engineInfoQueried = true;
|
||||
mockDrm->systemInfoQueried = true;
|
||||
mockDrm->queryTopology(neoDevice->getHardwareInfo(), topologyData);
|
||||
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new NEO::OSInterface);
|
||||
neoDevice->executionEnvironment->rootDeviceEnvironments[0]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mockDrm));
|
||||
|
||||
@@ -1071,6 +1071,7 @@ void Drm::setupIoctlHelper(const PRODUCT_FAMILY productFamily) {
|
||||
}
|
||||
|
||||
bool Drm::queryTopology(const HardwareInfo &hwInfo, DrmQueryTopologyData &topologyData) {
|
||||
UNRECOVERABLE_IF(!systemInfoQueried);
|
||||
UNRECOVERABLE_IF(!engineInfoQueried);
|
||||
UNRECOVERABLE_IF(topologyQueried);
|
||||
topologyQueried = true;
|
||||
|
||||
@@ -54,6 +54,7 @@ class DrmMock : public Drm {
|
||||
using Drm::setupIoctlHelper;
|
||||
using Drm::sliceCountChangeSupported;
|
||||
using Drm::systemInfo;
|
||||
using Drm::systemInfoQueried;
|
||||
using Drm::topologyQueried;
|
||||
using Drm::virtualMemoryIds;
|
||||
using Drm::vmBindPatIndexProgrammingSupported;
|
||||
|
||||
@@ -27,6 +27,7 @@ TEST(DrmQueryTopologyTest, givenDrmWhenQueryTopologyCalledThenPassNoFlags) {
|
||||
|
||||
DrmQueryTopologyData topologyData = {};
|
||||
drm.engineInfoQueried = true;
|
||||
drm.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drm.queryTopology(*drm.context.hwInfo, topologyData));
|
||||
|
||||
constexpr uint32_t expectedFlag = 0;
|
||||
@@ -111,6 +112,7 @@ struct QueryTopologyTests : ::testing::Test {
|
||||
drmMock->memoryInfoQueried = false;
|
||||
EXPECT_TRUE(drmMock->queryMemoryInfo());
|
||||
EXPECT_TRUE(drmMock->queryEngineInfo());
|
||||
drmMock->systemInfoQueried = true;
|
||||
}
|
||||
|
||||
DebugManagerStateRestore stateRestorer;
|
||||
|
||||
@@ -17,6 +17,7 @@ TEST(DrmQueryTopologyTest, GivenDrmWhenQueryingTopologyInfoCorrectMaxValuesAreSe
|
||||
|
||||
DrmQueryTopologyData topologyData = {};
|
||||
drm.engineInfoQueried = true;
|
||||
drm.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drm.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
EXPECT_EQ(drm.storedSVal, topologyData.sliceCount);
|
||||
@@ -34,6 +35,7 @@ TEST(DrmQueryTopologyTest, givenDrmWhenGettingSliceMappingsThenCorrectMappingRet
|
||||
|
||||
DrmQueryTopologyData topologyData = {};
|
||||
drmMock.engineInfoQueried = true;
|
||||
drmMock.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drmMock.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
auto device0SliceMapping = drmMock.getSliceMappings(0);
|
||||
|
||||
@@ -48,12 +48,15 @@ TEST(DrmSystemInfoTest, givenSystemInfoCreatedWhenQueryingSpecificAtrributesThen
|
||||
EXPECT_EQ(0u, systemInfo.getCsrSizeInMb());
|
||||
}
|
||||
|
||||
struct DrmMockToQuerySystemInfo : public DrmMock {
|
||||
DrmMockToQuerySystemInfo(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMock(rootDeviceEnvironment) {}
|
||||
bool querySystemInfo() override {
|
||||
systemInfoQueried = true;
|
||||
return false;
|
||||
}
|
||||
};
|
||||
TEST(DrmSystemInfoTest, givenSetupHardwareInfoWhenQuerySystemInfoFalseThenSystemInfoIsNotCreated) {
|
||||
struct DrmMockToQuerySystemInfo : public DrmMock {
|
||||
DrmMockToQuerySystemInfo(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMock(rootDeviceEnvironment) {}
|
||||
bool querySystemInfo() override { return false; }
|
||||
};
|
||||
|
||||
class MyMockIoctlHelper : public IoctlHelperPrelim20 {
|
||||
public:
|
||||
@@ -88,11 +91,6 @@ TEST(DrmSystemInfoTest, givenSetupHardwareInfoWhenQuerySystemInfoFalseThenSystem
|
||||
}
|
||||
|
||||
TEST(DrmSystemInfoTest, whenSetupHardwareInfoThenReleaseHelperContainsCorrectIpVersion) {
|
||||
struct DrmMockToQuerySystemInfo : public DrmMock {
|
||||
DrmMockToQuerySystemInfo(RootDeviceEnvironment &rootDeviceEnvironment)
|
||||
: DrmMock(rootDeviceEnvironment) {}
|
||||
bool querySystemInfo() override { return false; }
|
||||
};
|
||||
|
||||
class MyMockIoctlHelper : public IoctlHelperPrelim20 {
|
||||
public:
|
||||
|
||||
@@ -983,6 +983,7 @@ TEST(DrmQueryTest, GivenLessAvailableSubSlicesThanMaxSubSlicesWhenQueryingTopolo
|
||||
drm.storedEUVal = drm.storedSSVal * 4;
|
||||
|
||||
drm.engineInfoQueried = true;
|
||||
drm.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drm.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
EXPECT_EQ(2, topologyData.sliceCount);
|
||||
@@ -1002,6 +1003,7 @@ TEST(DrmQueryTest, givenDrmWhenGettingTopologyMapThenCorrectMapIsReturned) {
|
||||
DrmQueryTopologyData topologyData = {};
|
||||
|
||||
drmMock.engineInfoQueried = true;
|
||||
drmMock.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drmMock.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
auto topologyMap = drmMock.getTopologyMap();
|
||||
@@ -1025,6 +1027,7 @@ TEST(DrmQueryTest, GivenSingleSliceConfigWhenQueryingTopologyInfoThenSubsliceInd
|
||||
drm.storedEUVal = drm.storedSSVal * 4;
|
||||
|
||||
drm.engineInfoQueried = true;
|
||||
drm.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drm.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
EXPECT_EQ(1, topologyData.sliceCount);
|
||||
@@ -1058,6 +1061,7 @@ TEST(DrmQueryTest, GivenMultiSliceConfigWhenQueryingTopologyInfoThenSubsliceIndi
|
||||
drm.storedEUVal = drm.storedSSVal * 4;
|
||||
|
||||
drm.engineInfoQueried = true;
|
||||
drm.systemInfoQueried = true;
|
||||
EXPECT_TRUE(drm.queryTopology(*executionEnvironment->rootDeviceEnvironments[0]->getHardwareInfo(), topologyData));
|
||||
|
||||
EXPECT_EQ(2, topologyData.sliceCount);
|
||||
|
||||
@@ -96,6 +96,7 @@ TEST_F(MockProductHelperTestLinux, givenInvalidTopologyDataWhenConfiguringThenRe
|
||||
auto storedSSVal = drm->storedSSVal;
|
||||
auto storedEUVal = drm->storedEUVal;
|
||||
drm->engineInfoQueried = true;
|
||||
drm->systemInfoQueried = true;
|
||||
{
|
||||
// 0 euCount
|
||||
drm->storedSVal = storedSVal;
|
||||
|
||||
Reference in New Issue
Block a user