fix: get timestamp frequency from default engine in xe path

Related-To: NEO-11111
Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2024-04-12 13:38:19 +00:00
committed by Compute-Runtime-Automation
parent d60d57b994
commit 27398c2b6f
4 changed files with 7 additions and 51 deletions

View File

@@ -532,6 +532,7 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
auto mockXeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
mockXeIoctlHelper->initialize();
drm.reset();
{
@@ -674,10 +675,9 @@ TEST(IoctlHelperXeTest, whenCallingIoctlThenProperValueIsReturned) {
ret = mockXeIoctlHelper->ioctl(DrmIoctl::getparam, &test);
EXPECT_EQ(-1, ret);
test.param = static_cast<int>(DrmParam::paramCsTimestampFrequency);
mockXeIoctlHelper->xeTimestampFrequency = 1;
ret = mockXeIoctlHelper->ioctl(DrmIoctl::getparam, &test);
EXPECT_EQ(0, ret);
EXPECT_EQ(dstvalue, 1);
EXPECT_EQ(static_cast<uint32_t>(dstvalue), DrmMockXe::mockTimestampFrequency);
}
EXPECT_THROW(mockXeIoctlHelper->ioctl(DrmIoctl::gemContextCreateExt, NULL), std::runtime_error);
drm.reset();
@@ -1599,37 +1599,6 @@ TEST(IoctlHelperXeTest, whenFillBindInfoForIpcHandleIsCalledThenBindInfoIsCorrec
EXPECT_EQ(bindInfo.size, size);
}
TEST(IoctlHelperXeTest, givenIoctlFailureWhenGetTimestampFrequencyIsCalledThenFalseIsReturned) {
DebugManagerStateRestore restorer;
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
ASSERT_NE(nullptr, engineInfo);
drm.testMode(1, -1);
uint64_t frequency;
auto ret = xeIoctlHelper->getTimestampFrequency(frequency);
EXPECT_EQ(false, ret);
}
TEST(IoctlHelperXeTest, whenGetTimestampFrequencyIsCalledThenProperFrequencyIsSet) {
DebugManagerStateRestore restorer;
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();
DrmMockXe drm{*executionEnvironment->rootDeviceEnvironments[0]};
auto xeIoctlHelper = std::make_unique<MockIoctlHelperXe>(drm);
auto engineInfo = xeIoctlHelper->createEngineInfo(false);
ASSERT_NE(nullptr, engineInfo);
uint32_t expectedFrequency = 100;
xeIoctlHelper->xeTimestampFrequency = expectedFrequency;
uint64_t frequency = 0;
auto ret = xeIoctlHelper->getTimestampFrequency(frequency);
EXPECT_EQ(true, ret);
EXPECT_EQ(expectedFrequency, frequency);
}
TEST(IoctlHelperXeTest, givenIoctlFailureWhenSetGpuCpuTimesIsCalledThenFalseIsReturned) {
DebugManagerStateRestore restorer;
auto executionEnvironment = std::make_unique<MockExecutionEnvironment>();

View File

@@ -45,7 +45,6 @@ struct MockIoctlHelperXe : IoctlHelperXe {
using IoctlHelperXe::xeGetengineClassName;
using IoctlHelperXe::xeGtListData;
using IoctlHelperXe::xeShowBindTable;
using IoctlHelperXe::xeTimestampFrequency;
};
inline constexpr int testValueVmId = 0x5764;
@@ -108,7 +107,7 @@ class DrmMockXe : public DrmMockCustom {
0, // tile_id
0, // gt_id
{0}, // padding
12500000, // reference_clock
mockTimestampFrequency, // reference_clock
0b100, // native mem regions
0x011, // slow mem regions
};
@@ -117,7 +116,7 @@ class DrmMockXe : public DrmMockCustom {
1, // tile_id
1, // gt_id
{0}, // padding
12500000, // reference_clock
mockTimestampFrequency, // reference_clock
0b001, // native mem regions
0x110, // slow mem regions
};
@@ -126,7 +125,7 @@ class DrmMockXe : public DrmMockCustom {
0, // tile_id
0, // gt_id
{0}, // padding
12500000, // reference_clock
mockTimestampFrequency, // reference_clock
0b010, // native mem regions
0x101, // slow mem regions
};
@@ -320,7 +319,7 @@ class DrmMockXe : public DrmMockCustom {
uint64_t queryConfig[6]{}; // 1 qword for num params and 1 qwords per param
static constexpr uint32_t mockExecQueueId = 1234;
static constexpr int32_t mockMaxExecQueuePriority = 3;
static constexpr uint32_t mockTimestampFrequency = 12500000;
static_assert(sizeof(drm_xe_engine) == 4 * sizeof(uint64_t), "");
uint64_t queryEngines[45]{}; // 1 qword for num engines and 4 qwords per engine
static_assert(sizeof(drm_xe_mem_region) == 11 * sizeof(uint64_t), "");