Set UUID in driver properties

Change-Id: If0ce1e426f7021374a7ae8779f47d531f031be5b
Signed-off: Jaime Arteaga <jaime.a.arteaga.molina@intel.com>
This commit is contained in:
Jaime Arteaga 2020-09-12 00:23:29 -07:00 committed by sys_ocldev
parent 57e462d8ee
commit a28e883691
3 changed files with 55 additions and 0 deletions

View File

@ -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;
}

View File

@ -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 = "";

View File

@ -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;