mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-25 05:24:02 +08:00
fix: Correctly set UUID for non-multi-tile archs
Use getSubDevicesCount() from hwInfo to determine whether device is root or not, instead of isSubDevice(), since the former does not change with the affinity mask. Signed-off-by: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
017d66a469
commit
401344137c
@@ -125,6 +125,38 @@ HWTEST2_F(MultipleDeviceBdfUuidTest, GivenDefaultAffinityMaskWhenRetrievingDevic
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST2_F(MultipleDeviceBdfUuidTest, GivenDefaultAffinityMaskWhenRetrievingDeviceUuidFromBdfFromOneDeviceThenCorrectUuidIsRetrieved, MatchAny) {
|
||||
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
auto mockExecutionEnvironment = std::make_unique<MockExecutionEnvironment>(defaultHwInfo.get(), false, 1);
|
||||
RAIIProductHelperFactory<MockProductHelperHw<productFamily>> raii(*mockExecutionEnvironment->rootDeviceEnvironments[0]);
|
||||
std::array<uint8_t, 16> uuid;
|
||||
const uint32_t numSubDevices = 1;
|
||||
uint8_t expectedUuid[NEO::ProductHelper::uuidSize] = {};
|
||||
DebugManager.flags.ZE_AFFINITY_MASK.set("default");
|
||||
PhysicalDevicePciBusInfo pciBusInfo(0x54ad, 0x34, 0xab, 0xcd);
|
||||
deviceFactory = createDevices(pciBusInfo, numSubDevices, mockExecutionEnvironment.release());
|
||||
|
||||
uint16_t vendorId = 0x8086; // Intel
|
||||
uint16_t deviceId = static_cast<uint16_t>(deviceFactory->rootDevices[0]->getHardwareInfo().platform.usDeviceID);
|
||||
uint16_t revisionId = static_cast<uint16_t>(deviceFactory->rootDevices[0]->getHardwareInfo().platform.usRevId);
|
||||
uint16_t pciDomain = static_cast<uint16_t>(pciBusInfo.pciDomain);
|
||||
uint8_t pciBus = static_cast<uint8_t>(pciBusInfo.pciBus);
|
||||
uint8_t pciDevice = static_cast<uint8_t>(pciBusInfo.pciDevice);
|
||||
uint8_t pciFunction = static_cast<uint8_t>(pciBusInfo.pciFunction);
|
||||
|
||||
memcpy_s(&expectedUuid[0], sizeof(uint16_t), &vendorId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[2], sizeof(uint16_t), &deviceId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[4], sizeof(uint16_t), &revisionId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[6], sizeof(uint16_t), &pciDomain, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[8], sizeof(uint8_t), &pciBus, sizeof(uint8_t));
|
||||
memcpy_s(&expectedUuid[9], sizeof(uint8_t), &pciDevice, sizeof(uint8_t));
|
||||
memcpy_s(&expectedUuid[10], sizeof(uint8_t), &pciFunction, sizeof(uint8_t));
|
||||
|
||||
EXPECT_EQ(true, deviceFactory->rootDevices[0]->getUuid(uuid));
|
||||
EXPECT_TRUE(0 == std::memcmp(uuid.data(), expectedUuid, sizeof(expectedUuid)));
|
||||
}
|
||||
|
||||
HWTEST2_F(MultipleDeviceBdfUuidTest, GivenIncorrectBdfWhenRetrievingDeviceUuidFromBdfThenUuidIsNotRetrieved, MatchAny) {
|
||||
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
@@ -172,12 +204,12 @@ HWTEST2_F(MultipleDeviceBdfUuidTest, GivenNoSubDevicesInAffinityMaskwhenRetrievi
|
||||
EXPECT_TRUE(0 == std::memcmp(uuid.data(), expectedUuid, sizeof(expectedUuid)));
|
||||
}
|
||||
|
||||
HWTEST2_F(MultipleDeviceBdfUuidTest, GivenValidBdfWithOneBitEnabledInAffinityMaskThenUuidOfRootDeviceIsBasedOnAffinityMask, MatchAny) {
|
||||
HWTEST2_F(MultipleDeviceBdfUuidTest, GivenValidBdfWithOneBitEnabledInAffinityMaskSetToRootDeviceThenUuidOfRootDeviceIsBasedOnAffinityMask, MatchAny) {
|
||||
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
auto mockExecutionEnvironment = std::make_unique<MockExecutionEnvironment>(defaultHwInfo.get(), false, 1);
|
||||
RAIIProductHelperFactory<MockProductHelperHw<productFamily>> raii(*mockExecutionEnvironment->rootDeviceEnvironments[0]);
|
||||
DebugManager.flags.ZE_AFFINITY_MASK.set("0.3");
|
||||
DebugManager.flags.ZE_AFFINITY_MASK.set("0");
|
||||
PhysicalDevicePciBusInfo pciBusInfo(0x00, 0x34, 0xab, 0xcd);
|
||||
deviceFactory = createDevices(pciBusInfo, 4, mockExecutionEnvironment.release());
|
||||
|
||||
@@ -201,7 +233,40 @@ HWTEST2_F(MultipleDeviceBdfUuidTest, GivenValidBdfWithOneBitEnabledInAffinityMas
|
||||
memcpy_s(&expectedUuid[10], sizeof(uint8_t), &pciFunction, sizeof(uint8_t));
|
||||
|
||||
EXPECT_EQ(true, deviceFactory->rootDevices[0]->getUuid(uuid));
|
||||
expectedUuid[15] = 4;
|
||||
EXPECT_TRUE(0 == std::memcmp(uuid.data(), expectedUuid, sizeof(expectedUuid)));
|
||||
}
|
||||
|
||||
HWTEST2_F(MultipleDeviceBdfUuidTest, GivenValidBdfWithOneBitEnabledInAffinityMaskSetToSubDeviceThenUuidOfRootDeviceIsBasedOnAffinityMask, MatchAny) {
|
||||
|
||||
std::unique_ptr<UltDeviceFactory> deviceFactory;
|
||||
auto mockExecutionEnvironment = std::make_unique<MockExecutionEnvironment>(defaultHwInfo.get(), false, 1);
|
||||
RAIIProductHelperFactory<MockProductHelperHw<productFamily>> raii(*mockExecutionEnvironment->rootDeviceEnvironments[0]);
|
||||
DebugManager.flags.ZE_AFFINITY_MASK.set("0.3");
|
||||
uint32_t subDeviceIndex = 3;
|
||||
PhysicalDevicePciBusInfo pciBusInfo(0x00, 0x34, 0xab, 0xcd);
|
||||
deviceFactory = createDevices(pciBusInfo, 4, mockExecutionEnvironment.release());
|
||||
|
||||
std::array<uint8_t, NEO::ProductHelper::uuidSize> uuid;
|
||||
uint8_t expectedUuid[NEO::ProductHelper::uuidSize] = {};
|
||||
|
||||
uint16_t vendorId = 0x8086; // Intel
|
||||
uint16_t deviceId = static_cast<uint16_t>(deviceFactory->rootDevices[0]->getHardwareInfo().platform.usDeviceID);
|
||||
uint16_t revisionId = static_cast<uint16_t>(deviceFactory->rootDevices[0]->getHardwareInfo().platform.usRevId);
|
||||
uint16_t pciDomain = static_cast<uint16_t>(pciBusInfo.pciDomain);
|
||||
uint8_t pciBus = static_cast<uint8_t>(pciBusInfo.pciBus);
|
||||
uint8_t pciDevice = static_cast<uint8_t>(pciBusInfo.pciDevice);
|
||||
uint8_t pciFunction = static_cast<uint8_t>(pciBusInfo.pciFunction);
|
||||
|
||||
memcpy_s(&expectedUuid[0], sizeof(uint16_t), &vendorId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[2], sizeof(uint16_t), &deviceId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[4], sizeof(uint16_t), &revisionId, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[6], sizeof(uint16_t), &pciDomain, sizeof(uint16_t));
|
||||
memcpy_s(&expectedUuid[8], sizeof(uint8_t), &pciBus, sizeof(uint8_t));
|
||||
memcpy_s(&expectedUuid[9], sizeof(uint8_t), &pciDevice, sizeof(uint8_t));
|
||||
memcpy_s(&expectedUuid[10], sizeof(uint8_t), &pciFunction, sizeof(uint8_t));
|
||||
|
||||
EXPECT_EQ(true, deviceFactory->rootDevices[0]->getUuid(uuid));
|
||||
expectedUuid[15] = subDeviceIndex + 1;
|
||||
EXPECT_TRUE(0 == std::memcmp(uuid.data(), expectedUuid, sizeof(expectedUuid)));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user