Skip to content

Commit 7ac97fd

Browse files
Use independent Elf UUID generation
Signed-off-by: Matias Cabral <[email protected]>
1 parent ed1e3de commit 7ac97fd

File tree

7 files changed

+62
-32
lines changed

7 files changed

+62
-32
lines changed

opencl/test/unit_test/os_interface/linux/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ set(IGDRCL_SRCS_tests_os_interface_linux
2727
${CMAKE_CURRENT_SOURCE_DIR}/drm_residency_handler_tests.cpp
2828
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_system_info_tests.cpp
2929
${CMAKE_CURRENT_SOURCE_DIR}/drm_tests.cpp
30+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/drm_uuid_tests.cpp
3031
${CMAKE_CURRENT_SOURCE_DIR}/file_logger_linux_tests.cpp
3132
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_linux_tests.cpp
3233
${CMAKE_CURRENT_SOURCE_DIR}/hw_info_config_linux_tests.h

opencl/test/unit_test/os_interface/linux/drm_mock.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class DrmMock : public Drm {
3333
using Drm::checkQueueSliceSupport;
3434
using Drm::classHandles;
3535
using Drm::engineInfo;
36+
using Drm::generateElfUUID;
3637
using Drm::generateUUID;
3738
using Drm::getQueueSliceCount;
3839
using Drm::memoryInfo;

opencl/test/unit_test/os_interface/linux/drm_tests.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -390,23 +390,6 @@ TEST(DrmTest, givenPlatformWithSupportToChangeSliceCountWhenCallSetQueueSliceCou
390390
EXPECT_EQ(drm->getSliceMask(newSliceCount), sseu.slice_mask);
391391
}
392392

393-
TEST(DrmTest, GivenDrmWhenGeneratingUUIDThenCorrectStringsAreReturned) {
394-
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
395-
executionEnvironment->prepareRootDeviceEnvironments(1);
396-
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
397-
auto uuid1 = drm.generateUUID();
398-
auto uuid2 = drm.generateUUID();
399-
400-
std::string uuidff;
401-
for (int i = 0; i < 0xff - 2; i++) {
402-
uuidff = drm.generateUUID();
403-
}
404-
405-
EXPECT_STREQ("00000000-0000-0000-0000-000000000001", uuid1.c_str());
406-
EXPECT_STREQ("00000000-0000-0000-0000-000000000002", uuid2.c_str());
407-
EXPECT_STREQ("00000000-0000-0000-0000-0000000000ff", uuidff.c_str());
408-
}
409-
410393
namespace NEO {
411394
namespace SysCalls {
412395
extern uint32_t closeFuncCalled;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* Copyright (C) 2020 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "opencl/test/unit_test/os_interface/linux/drm_mock.h"
9+
10+
#include "gtest/gtest.h"
11+
12+
using namespace NEO;
13+
14+
TEST(DrmUuidTest, GivenDrmWhenGeneratingUUIDThenCorrectStringsAreReturned) {
15+
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
16+
executionEnvironment->prepareRootDeviceEnvironments(1);
17+
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
18+
auto uuid1 = drm.generateUUID();
19+
auto uuid2 = drm.generateUUID();
20+
21+
std::string uuidff;
22+
for (int i = 0; i < 0xff - 2; i++) {
23+
uuidff = drm.generateUUID();
24+
}
25+
26+
EXPECT_STREQ("00000000-0000-0000-0000-000000000001", uuid1.c_str());
27+
EXPECT_STREQ("00000000-0000-0000-0000-000000000002", uuid2.c_str());
28+
EXPECT_STREQ("00000000-0000-0000-0000-0000000000ff", uuidff.c_str());
29+
}
30+
31+
TEST(DrmUuidTest, GivenDrmWhenGeneratingElfUUIDThenCorrectStringsAreReturned) {
32+
auto executionEnvironment = std::make_unique<ExecutionEnvironment>();
33+
executionEnvironment->prepareRootDeviceEnvironments(1);
34+
DrmMock drm{*executionEnvironment->rootDeviceEnvironments[0]};
35+
char data[] = "abc";
36+
auto uuid1 = drm.generateElfUUID(static_cast<const void *>(data));
37+
38+
EXPECT_STREQ("00000000-0000-0000-0000-000000000001", uuid1.c_str());
39+
}

shared/source/os_interface/linux/drm_debug.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,24 @@ uint32_t Drm::registerIsaCookie(uint32_t isaHandle) {
2323

2424
void Drm::unregisterResource(uint32_t handle) {
2525
}
26+
27+
std::string Drm::generateUUID() {
28+
const char uuidString[] = "00000000-0000-0000-%04" SCNx64 "-%012" SCNx64;
29+
char buffer[36 + 1] = "00000000-0000-0000-0000-000000000000";
30+
uuid++;
31+
32+
UNRECOVERABLE_IF(uuid == 0xFFFFFFFFFFFFFFFF);
33+
34+
uint64_t parts[2] = {0, 0};
35+
parts[0] = uuid & 0xFFFFFFFFFFFF;
36+
parts[1] = (uuid & 0xFFFF000000000000) >> 48;
37+
snprintf(buffer, sizeof(buffer), uuidString, parts[1], parts[0]);
38+
39+
return std::string(buffer, 36);
40+
}
41+
42+
std::string Drm::generateElfUUID(const void *data) {
43+
return generateUUID();
44+
}
45+
2646
} // namespace NEO

shared/source/os_interface/linux/drm_neo.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -503,21 +503,6 @@ uint32_t Drm::getVirtualMemoryAddressSpace(uint32_t vmId) {
503503
return 0;
504504
}
505505

506-
std::string Drm::generateUUID() {
507-
const char uuidString[] = "00000000-0000-0000-%04" SCNx64 "-%012" SCNx64;
508-
char buffer[36 + 1] = "00000000-0000-0000-0000-000000000000";
509-
uuid++;
510-
511-
UNRECOVERABLE_IF(uuid == 0xFFFFFFFFFFFFFFFF);
512-
513-
uint64_t parts[2] = {0, 0};
514-
parts[0] = uuid & 0xFFFFFFFFFFFF;
515-
parts[1] = (uuid & 0xFFFF000000000000) >> 48;
516-
snprintf(buffer, sizeof(buffer), uuidString, parts[1], parts[0]);
517-
518-
return std::string(buffer, 36);
519-
}
520-
521506
Drm::~Drm() {
522507
destroyVirtualMemoryAddressSpace();
523508
}

shared/source/os_interface/linux/drm_neo.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ class Drm {
162162
protected:
163163
int getQueueSliceCount(drm_i915_gem_context_param_sseu *sseu);
164164
std::string generateUUID();
165+
std::string generateElfUUID(const void *data);
165166
bool sliceCountChangeSupported = false;
166167
drm_i915_gem_context_param_sseu sseu{};
167168
bool preemptionSupported = false;

0 commit comments

Comments
 (0)