mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
feature: Add EU stall support for xe2/xe3 core
Related-To: NEO-13777 Signed-off-by: shubham kumar <shubham.kumar@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
798fd9e600
commit
e287174211
@@ -47,6 +47,7 @@ MetricIpSamplingLinuxImp::MetricIpSamplingLinuxImp(Device &device) : device(devi
|
||||
ze_result_t MetricIpSamplingLinuxImp::startMeasurement(uint32_t ¬ifyEveryNReports, uint32_t &samplingPeriodNs) {
|
||||
|
||||
const auto drm = device.getOsInterface()->getDriverModel()->as<NEO::Drm>();
|
||||
// gpuTimeStampfrequency will be in Hertz
|
||||
uint64_t gpuTimeStampfrequency = 0;
|
||||
ze_result_t ret = getMetricsTimerResolution(gpuTimeStampfrequency);
|
||||
if (ret != ZE_RESULT_SUCCESS) {
|
||||
@@ -66,7 +67,7 @@ ze_result_t MetricIpSamplingLinuxImp::startMeasurement(uint32_t ¬ifyEveryNRep
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
notifyEveryNReports = std::max(notifyEveryNReports, 1u);
|
||||
notifyEveryNReports = std::clamp(notifyEveryNReports, 1u, getRequiredBufferSize(notifyEveryNReports));
|
||||
if (!ioctlHelper->perfOpenEuStallStream(euStallFdParameter, samplingPeriodNs, classInstance->engineInstance, notifyEveryNReports, gpuTimeStampfrequency, &stream)) {
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
}
|
||||
@@ -99,6 +100,9 @@ ze_result_t MetricIpSamplingLinuxImp::readData(uint8_t *pRawData, size_t *pRawDa
|
||||
// If read needs to try again, do not return error
|
||||
if (errno == EINTR || errno == EAGAIN || errno == EBUSY) {
|
||||
return ZE_RESULT_SUCCESS;
|
||||
} else if (errno == EIO) {
|
||||
// on i915 EIO is not returned by KMD for any error conditions. Hence we can use this safetly for both xe and i915.
|
||||
return ZE_RESULT_WARNING_DROPPED_DATA;
|
||||
}
|
||||
|
||||
return ZE_RESULT_ERROR_UNKNOWN;
|
||||
|
||||
@@ -255,6 +255,8 @@ HWTEST2_F(MetricIpSamplingLinuxTestPrelim, givenReadFailsWithRetryErrorNumberWhe
|
||||
EXPECT_EQ(metricIpSamplingOsInterface->readData(&pRawData, &pRawDataSize), ZE_RESULT_SUCCESS);
|
||||
errno = EAGAIN;
|
||||
EXPECT_EQ(metricIpSamplingOsInterface->readData(&pRawData, &pRawDataSize), ZE_RESULT_SUCCESS);
|
||||
errno = EIO;
|
||||
EXPECT_EQ(metricIpSamplingOsInterface->readData(&pRawData, &pRawDataSize), ZE_RESULT_WARNING_DROPPED_DATA);
|
||||
}
|
||||
|
||||
HWTEST2_F(MetricIpSamplingLinuxTestPrelim, WhenGetRequiredBufferSizeIsCalledThenCorrectSizeIsReturned, IsPVC) {
|
||||
|
||||
Reference in New Issue
Block a user