mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-09 22:43:00 +08:00
fix(sysman): supports return of correct temperature domains on igfx
Related-To: LOCI-4741 Signed-off-by: Kulkarni, Ashwin Kumar <ashwin.kumar.kulkarni@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
63fa05e776
commit
5cd39dd155
@@ -115,10 +115,37 @@ ze_result_t WddmTemperatureImp::getSensorTemperature(double *pTemperature) {
|
||||
return status;
|
||||
}
|
||||
|
||||
uint32_t WddmTemperatureImp::getNumTempDomainsSupported() {
|
||||
ze_result_t status = ZE_RESULT_SUCCESS;
|
||||
KmdSysman::RequestProperty request;
|
||||
KmdSysman::ResponseProperty response = {};
|
||||
uint32_t value = 0;
|
||||
|
||||
request.paramInfo = static_cast<uint32_t>(type);
|
||||
request.commandId = KmdSysman::Command::Get;
|
||||
request.componentId = KmdSysman::Component::TemperatureComponent;
|
||||
request.requestId = KmdSysman::Requests::Temperature::NumTemperatureDomains;
|
||||
|
||||
status = pKmdSysManager->requestSingle(request, response);
|
||||
|
||||
if (status == ZE_RESULT_SUCCESS) {
|
||||
if (response.returnCode == KmdSysman::KmdSysmanSuccess) {
|
||||
memcpy_s(&value, sizeof(uint32_t), response.dataBuffer, sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
bool WddmTemperatureImp::isTempModuleSupported() {
|
||||
if ((type == ZES_TEMP_SENSORS_GLOBAL_MIN) || (type == ZES_TEMP_SENSORS_GPU_MIN)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getNumTempDomainsSupported() == 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
KmdSysman::RequestProperty request;
|
||||
KmdSysman::ResponseProperty response;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class WddmTemperatureImp : public OsTemperature, NEO::NonCopyableOrMovableClass
|
||||
ze_result_t getProperties(zes_temp_properties_t *pProperties) override;
|
||||
ze_result_t getSensorTemperature(double *pTemperature) override;
|
||||
bool isTempModuleSupported() override;
|
||||
|
||||
uint32_t getNumTempDomainsSupported();
|
||||
void setSensorType(zes_temp_sensors_t sensorType);
|
||||
WddmTemperatureImp(OsSysman *pOsSysman);
|
||||
WddmTemperatureImp() = default;
|
||||
|
||||
@@ -23,6 +23,7 @@ struct Mock<TemperatureKmdSysManager> : public TemperatureKmdSysManager {
|
||||
uint32_t mockTempGPU = 25;
|
||||
uint32_t mockTempMemory = 23;
|
||||
uint32_t mockMaxTemperature = 100;
|
||||
bool isIntegrated = false;
|
||||
zes_temp_sensors_t mockSensorTypes[3] = {ZES_TEMP_SENSORS_GLOBAL, ZES_TEMP_SENSORS_GPU, ZES_TEMP_SENSORS_MEMORY};
|
||||
|
||||
void getTemperatureProperty(KmdSysman::GfxSysmanReqHeaderIn *pRequest, KmdSysman::GfxSysmanReqHeaderOut *pResponse) override {
|
||||
@@ -40,7 +41,11 @@ struct Mock<TemperatureKmdSysManager> : public TemperatureKmdSysManager {
|
||||
switch (pRequest->inRequestId) {
|
||||
case KmdSysman::Requests::Temperature::NumTemperatureDomains: {
|
||||
uint32_t *pValue = reinterpret_cast<uint32_t *>(pBuffer);
|
||||
*pValue = mockTempDomainCount;
|
||||
if (isIntegrated == true) {
|
||||
*pValue = 0;
|
||||
} else {
|
||||
*pValue = mockTempDomainCount;
|
||||
}
|
||||
pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess;
|
||||
pResponse->outDataSize = sizeof(uint32_t);
|
||||
} break;
|
||||
|
||||
@@ -87,6 +87,13 @@ TEST_F(SysmanDeviceTemperatureFixture, GivenComponentCountZeroWhenEnumeratingTem
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(SysmanDeviceTemperatureFixture, GivenValidDeviceHandleWhenEnumeratingTemperatureSensorsOnIntegratedDeviceThenZeroCountIsReturned) {
|
||||
uint32_t count = 0;
|
||||
pKmdSysManager->isIntegrated = true;
|
||||
EXPECT_EQ(zesDeviceEnumTemperatureSensors(device->toHandle(), &count, nullptr), ZE_RESULT_SUCCESS);
|
||||
EXPECT_EQ(count, 0);
|
||||
}
|
||||
|
||||
TEST_F(SysmanDeviceTemperatureFixture, GivenValidPowerHandleWhenGettingTemperaturePropertiesAllowSetToTrueThenCallSucceeds) {
|
||||
auto handles = getTempHandles(temperatureHandleComponentCount);
|
||||
uint32_t sensorTypeIndex = 0;
|
||||
|
||||
Reference in New Issue
Block a user