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:
parent
d60d57b994
commit
27398c2b6f
|
@ -291,7 +291,6 @@ std::unique_ptr<MemoryInfo> IoctlHelperXe::createMemoryInfo() {
|
|||
auto regionIndex = Math::log2(nearMemRegions);
|
||||
UNRECOVERABLE_IF(!memoryRegionInstances[regionIndex]);
|
||||
regionsContainer.push_back(createMemoryRegionFromXeMemRegion(*memoryRegionInstances[regionIndex]));
|
||||
xeTimestampFrequency = xeGtListData->gt_list[i].reference_clock;
|
||||
}
|
||||
}
|
||||
return std::make_unique<MemoryInfo>(regionsContainer, drm);
|
||||
|
@ -335,11 +334,6 @@ bool IoctlHelperXe::setGpuCpuTimes(TimeStampData *pGpuCpuTime, OSTime *osTime) {
|
|||
return ret == 0;
|
||||
}
|
||||
|
||||
bool IoctlHelperXe::getTimestampFrequency(uint64_t &frequency) {
|
||||
frequency = xeTimestampFrequency;
|
||||
return frequency != 0;
|
||||
}
|
||||
|
||||
void IoctlHelperXe::getTopologyData(size_t nTiles, std::vector<std::bitset<8>> *geomDss, std::vector<std::bitset<8>> *computeDss,
|
||||
std::vector<std::bitset<8>> *euDss, DrmQueryTopologyData &topologyData, bool &isComputeDssEmpty) {
|
||||
int subSliceCount = 0;
|
||||
|
@ -899,10 +893,7 @@ int IoctlHelperXe::ioctl(DrmIoctl request, void *arg) {
|
|||
ret = 0;
|
||||
switch (getParam->param) {
|
||||
case static_cast<int>(DrmParam::paramCsTimestampFrequency): {
|
||||
uint64_t frequency = 0;
|
||||
if (getTimestampFrequency(frequency)) {
|
||||
*getParam->value = static_cast<int>(frequency);
|
||||
}
|
||||
*getParam->value = xeGtListData->gt_list[defaultEngine->gt_id].reference_clock;
|
||||
} break;
|
||||
default:
|
||||
ret = -1;
|
||||
|
|
|
@ -109,8 +109,6 @@ class IoctlHelperXe : public IoctlHelper {
|
|||
void getTopologyMap(size_t nTiles, std::vector<std::bitset<8>> *dssInfo, TopologyMap &topologyMap);
|
||||
|
||||
bool setGpuCpuTimes(TimeStampData *pGpuCpuTime, OSTime *osTime) override;
|
||||
bool getTimestampFrequency(uint64_t &frequency);
|
||||
|
||||
void fillBindInfoForIpcHandle(uint32_t handle, size_t size) override;
|
||||
bool getFdFromVmExport(uint32_t vmId, uint32_t flags, int32_t *fd) override;
|
||||
bool isImmediateVmBindRequired() const override;
|
||||
|
@ -164,7 +162,6 @@ class IoctlHelperXe : public IoctlHelper {
|
|||
int maxExecQueuePriority = 0;
|
||||
std::mutex xeLock;
|
||||
std::vector<BindInfo> bindInfo;
|
||||
uint32_t xeTimestampFrequency = 0;
|
||||
std::vector<uint32_t> hwconfig;
|
||||
std::vector<drm_xe_engine_class_instance> contextParamEngine;
|
||||
|
||||
|
|
|
@ -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>();
|
||||
|
|
|
@ -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), "");
|
||||
|
|
Loading…
Reference in New Issue