Set UUID in driver properties
Change-Id: If0ce1e426f7021374a7ae8779f47d531f031be5b Signed-off: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
parent
57e462d8ee
commit
a28e883691
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/helpers/string.h"
|
||||
#include "shared/source/memory_manager/memory_manager.h"
|
||||
#include "shared/source/os_interface/os_library.h"
|
||||
|
||||
|
@ -21,6 +22,7 @@
|
|||
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <vector>
|
||||
|
||||
namespace L0 {
|
||||
|
@ -65,6 +67,9 @@ ze_result_t DriverHandleImp::getProperties(ze_driver_properties_t *properties) {
|
|||
((versionMinor << 16) & 0x00FF0000) |
|
||||
(versionBuild & 0x0000FFFF);
|
||||
|
||||
uint64_t uniqueId = (properties->driverVersion) | (uuidTimestamp & 0xFFFFFFFF00000000);
|
||||
memcpy_s(properties->uuid.id, sizeof(uniqueId), &uniqueId, sizeof(uniqueId));
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -240,6 +245,8 @@ ze_result_t DriverHandleImp::initialize(std::vector<std::unique_ptr<NEO::Device>
|
|||
|
||||
extensionFunctionsLookupMap = getExtensionFunctionsLookupMap();
|
||||
|
||||
uuidTimestamp = static_cast<uint64_t>(std::chrono::system_clock::now().time_since_epoch().count());
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@ struct DriverHandleImp : public DriverHandle {
|
|||
std::vector<Device *> devices;
|
||||
NEO::MemoryManager *memoryManager = nullptr;
|
||||
NEO::SVMAllocsManager *svmAllocsManager = nullptr;
|
||||
uint64_t uuidTimestamp = 0u;
|
||||
|
||||
// Environment Variables
|
||||
std::string affinityMaskString = "";
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/helpers/string.h"
|
||||
#include "shared/source/os_interface/device_factory.h"
|
||||
#include "shared/source/os_interface/hw_info_config.h"
|
||||
#include "shared/test/unit_test/helpers/debug_manager_state_restore.h"
|
||||
|
@ -54,6 +55,52 @@ TEST_F(DriverVersionTest, returnsExpectedDriverVersion) {
|
|||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
}
|
||||
|
||||
TEST_F(DriverVersionTest, givenCallToGetDriverPropertiesThenUuidIsSet) {
|
||||
ze_driver_properties_t properties;
|
||||
ze_result_t res = driverHandle->getProperties(&properties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
uint64_t uuid = 0u;
|
||||
memcpy_s(&uuid, sizeof(uuid), properties.uuid.id, sizeof(uuid));
|
||||
|
||||
uint32_t uniqueId = static_cast<uint32_t>((uuid & 0xFFFFFFFF00000000) >> 32);
|
||||
uint32_t versionMajor = static_cast<uint32_t>((uuid & 0xFF000000) >> 24);
|
||||
uint32_t versionMinor = static_cast<uint32_t>((uuid & 0x00FF0000) >> 16);
|
||||
uint32_t versionBuild = static_cast<uint32_t>(uuid & 0x0000FFFF);
|
||||
|
||||
EXPECT_NE(0u, uniqueId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10)), versionMajor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10)), versionMinor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
}
|
||||
|
||||
TEST_F(DriverVersionTest, whenCallingGetDriverPropertiesRepeatedlyThenTheSameUuidIsReturned) {
|
||||
ze_driver_properties_t properties;
|
||||
ze_result_t res = driverHandle->getProperties(&properties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
uint64_t uuid = 0u;
|
||||
memcpy_s(&uuid, sizeof(uuid), properties.uuid.id, sizeof(uuid));
|
||||
|
||||
uint32_t uniqueId = static_cast<uint32_t>((uuid & 0xFFFFFFFF00000000) >> 32);
|
||||
uint32_t versionMajor = static_cast<uint32_t>((uuid & 0xFF000000) >> 24);
|
||||
uint32_t versionMinor = static_cast<uint32_t>((uuid & 0x00FF0000) >> 16);
|
||||
uint32_t versionBuild = static_cast<uint32_t>(uuid & 0x0000FFFF);
|
||||
|
||||
EXPECT_NE(0u, uniqueId);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MAJOR, NULL, 10)), versionMajor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(L0_PROJECT_VERSION_MINOR, NULL, 10)), versionMinor);
|
||||
EXPECT_EQ(static_cast<uint32_t>(strtoul(NEO_VERSION_BUILD, NULL, 10)), versionBuild);
|
||||
|
||||
for (uint32_t i = 0; i < 32; i++) {
|
||||
ze_driver_properties_t newProperties;
|
||||
res = driverHandle->getProperties(&newProperties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
|
||||
|
||||
EXPECT_EQ(0, memcmp(properties.uuid.id, newProperties.uuid.id, sizeof(uint64_t)));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(DriverTestFamilySupport, whenInitializingDriverOnSupportedFamilyThenDriverIsCreated) {
|
||||
NEO::HardwareInfo hwInfo = *NEO::defaultHwInfo.get();
|
||||
hwInfo.capabilityTable.levelZeroSupported = true;
|
||||
|
|
Loading…
Reference in New Issue