mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-19 06:24:51 +08:00
fix: Get Pci and Memory timestamp from PMT telemetry with correct unit
Related-To: NEO-13237 Signed-off-by: shubham kumar <shubham.kumar@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
1809afeb96
commit
ee9af40a27
@@ -713,7 +713,21 @@ ze_result_t SysmanProductHelperHw<gfxProduct>::getPciStats(zes_pci_stats_t *pSta
|
||||
}
|
||||
|
||||
pStats->packetCounter = packInto64Bit(txPacketCounterH, txPacketCounterL) + packInto64Bit(rxPacketCounterH, rxPacketCounterL);
|
||||
pStats->timestamp = SysmanDevice::getSysmanTimestamp();
|
||||
|
||||
// timestamp calculation
|
||||
uint32_t timeStampL = 0;
|
||||
uint32_t timeStampH = 0;
|
||||
|
||||
status = pPmt->readValue("GDDR_TELEM_CAPTURE_TIMESTAMP_UPPER", timeStampH);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
status = pPmt->readValue("GDDR_TELEM_CAPTURE_TIMESTAMP_LOWER", timeStampL);
|
||||
if (status != ZE_RESULT_SUCCESS) {
|
||||
return status;
|
||||
}
|
||||
// timestamp from PMT is in milli seconds
|
||||
pStats->timestamp = packInto64Bit(timeStampH, timeStampL) * milliSecsToMicroSecs;
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -842,7 +856,8 @@ ze_result_t SysmanProductHelperHw<gfxProduct>::getMemoryBandWidth(zes_mem_bandwi
|
||||
return status;
|
||||
}
|
||||
|
||||
pBandwidth->timestamp = packInto64Bit(timeStampH, timeStampL);
|
||||
// timestamp from PMT is in milli seconds
|
||||
pBandwidth->timestamp = packInto64Bit(timeStampH, timeStampL) * milliSecsToMicroSecs;
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ constexpr uint64_t mockRxCounter = 24200000u;
|
||||
constexpr uint64_t mockTxCounter = 231000000u;
|
||||
constexpr uint64_t mockRxPacketCounter = 300000u;
|
||||
constexpr uint64_t mockTxPacketCounter = 200000u;
|
||||
constexpr uint64_t mockTimestamp = 120000u;
|
||||
|
||||
struct PciKmdSysManager : public MockKmdSysManager {
|
||||
// PciCurrentDevice, PciParentDevice, PciRootPort
|
||||
|
||||
@@ -27,7 +27,9 @@ const std::map<std::string, std::pair<uint32_t, uint32_t>> dummyKeyOffsetMap = {
|
||||
{"rx_pkt_count_lsb", {74, 1}},
|
||||
{"rx_pkt_count_msb", {73, 1}},
|
||||
{"tx_pkt_count_lsb", {76, 1}},
|
||||
{"tx_pkt_count_msb", {75, 1}}}};
|
||||
{"tx_pkt_count_msb", {75, 1}},
|
||||
{"GDDR_TELEM_CAPTURE_TIMESTAMP_UPPER", {92, 1}},
|
||||
{"GDDR_TELEM_CAPTURE_TIMESTAMP_LOWER", {93, 1}}}};
|
||||
|
||||
const std::wstring pmtInterfaceName = L"TEST\0";
|
||||
std::vector<wchar_t> deviceInterfacePci(pmtInterfaceName.begin(), pmtInterfaceName.end());
|
||||
@@ -351,6 +353,10 @@ HWTEST2_F(SysmanDevicePciFixture, GivenValidDeviceHandleWhenGettingZesDevicePciG
|
||||
*lpBytesReturned = 4;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = mockTxPacketCounter;
|
||||
return true;
|
||||
case 93:
|
||||
*lpBytesReturned = 8;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = mockTimestamp;
|
||||
return true;
|
||||
default:
|
||||
*lpBytesReturned = 4;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = 0;
|
||||
@@ -364,6 +370,7 @@ HWTEST2_F(SysmanDevicePciFixture, GivenValidDeviceHandleWhenGettingZesDevicePciG
|
||||
EXPECT_EQ(stats.rxCounter, mockRxCounter);
|
||||
EXPECT_EQ(stats.txCounter, mockTxCounter);
|
||||
EXPECT_EQ(stats.packetCounter, mockRxPacketCounter + mockTxPacketCounter);
|
||||
EXPECT_EQ(stats.timestamp, mockTimestamp * milliSecsToMicroSecs);
|
||||
}
|
||||
|
||||
HWTEST2_F(SysmanDevicePciFixture, GivenNullPmtHandleWhenGettingZesDevicePciGetStatsThenCallFails, IsBMG) {
|
||||
@@ -374,7 +381,7 @@ HWTEST2_F(SysmanDevicePciFixture, GivenNullPmtHandleWhenGettingZesDevicePciGetSt
|
||||
}
|
||||
|
||||
HWTEST2_F(SysmanDevicePciFixture, GivenValidPmtHandleWhenCallingZesDevicePciGetStatsAndIoctlFailsThenCallsFails, IsBMG) {
|
||||
static int count = 8;
|
||||
static int count = 10;
|
||||
VariableBackup<decltype(NEO::SysCalls::sysCallsCreateFile)> psysCallsCreateFile(&NEO::SysCalls::sysCallsCreateFile, [](LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) -> HANDLE {
|
||||
return reinterpret_cast<HANDLE>(static_cast<uintptr_t>(0x7));
|
||||
});
|
||||
@@ -413,6 +420,14 @@ HWTEST2_F(SysmanDevicePciFixture, GivenValidPmtHandleWhenCallingZesDevicePciGetS
|
||||
*lpBytesReturned = 4;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = mockTxPacketCounter;
|
||||
return count == 8 ? false : true;
|
||||
case 92:
|
||||
*lpBytesReturned = 4;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = 0;
|
||||
return count == 9 ? false : true;
|
||||
case 93:
|
||||
*lpBytesReturned = 4;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = mockTimestamp;
|
||||
return count == 10 ? false : true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
@@ -124,7 +124,7 @@ HWTEST2_F(SysmanDeviceMemoryHelperFixture, GivenValidMemoryHandleWhenGettingBand
|
||||
return true;
|
||||
case 93:
|
||||
*lpBytesReturned = 8;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = 1230000;
|
||||
*static_cast<uint32_t *>(lpOutBuffer) = mockMemoryBandwidthTimestamp;
|
||||
return true;
|
||||
default:
|
||||
*lpBytesReturned = 8;
|
||||
@@ -147,7 +147,7 @@ HWTEST2_F(SysmanDeviceMemoryHelperFixture, GivenValidMemoryHandleWhenGettingBand
|
||||
EXPECT_EQ(bandwidth.maxBandwidth, static_cast<uint64_t>(mockMemoryMaxBandwidth * megaBytesToBytes * 100));
|
||||
EXPECT_EQ(bandwidth.readCounter, (6 * mockPmtBandWidthVariableBackupValue * 32) + (6 * mockPmtBandWidthVariableBackupValue * 64));
|
||||
EXPECT_EQ(bandwidth.writeCounter, (4 * mockPmtBandWidthVariableBackupValue * 32) + (4 * mockPmtBandWidthVariableBackupValue * 64));
|
||||
EXPECT_EQ(bandwidth.timestamp, mockMemoryBandwidthTimestamp);
|
||||
EXPECT_EQ(bandwidth.timestamp, mockMemoryBandwidthTimestamp * milliSecsToMicroSecs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user