mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 14:55:24 +08:00
fix: Decouple power handle creation from power limit support available
Related-To: NEO-13185 Signed-off-by: shubham kumar <shubham.kumar@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
41a6815d06
commit
316389782d
@@ -244,10 +244,19 @@ ze_result_t WddmPowerImp::setEnergyThreshold(double threshold) {
|
||||
return pKmdSysManager->requestSingle(request, response);
|
||||
}
|
||||
|
||||
bool WddmPowerImp::isPowerModuleSupported() {
|
||||
void WddmPowerImp::initPowerLimits() {
|
||||
if (supportsEnergyCounterOnly) {
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
auto paramInfo = powerGroupToDomainTypeMap.find(this->powerDomain);
|
||||
if (paramInfo == powerGroupToDomainTypeMap.end()) {
|
||||
NEO::printDebugString(NEO::debugManager.flags.PrintDebugMessages.get(), stderr,
|
||||
"Power Domain %u is not supported for KMD calls.\n", this->powerDomain);
|
||||
DEBUG_BREAK_IF(true);
|
||||
return;
|
||||
}
|
||||
|
||||
powerLimitCount = 0;
|
||||
std::vector<KmdSysman::RequestProperty> vRequests(3);
|
||||
std::vector<KmdSysman::ResponseProperty> vResponses = {};
|
||||
@@ -255,7 +264,7 @@ bool WddmPowerImp::isPowerModuleSupported() {
|
||||
|
||||
request.commandId = KmdSysman::Command::Get;
|
||||
request.componentId = KmdSysman::Component::PowerComponent;
|
||||
request.paramInfo = static_cast<uint32_t>(powerGroupToDomainTypeMap.at(this->powerDomain));
|
||||
request.paramInfo = static_cast<uint32_t>(paramInfo->second);
|
||||
request.requestId = KmdSysman::Requests::Power::PowerLimit1Enabled;
|
||||
vRequests[0] = request;
|
||||
|
||||
@@ -268,7 +277,7 @@ bool WddmPowerImp::isPowerModuleSupported() {
|
||||
ze_result_t status = pKmdSysManager->requestMultiple(vRequests, vResponses);
|
||||
|
||||
if ((status != ZE_RESULT_SUCCESS) || (vResponses.size() != vRequests.size())) {
|
||||
return status;
|
||||
return;
|
||||
}
|
||||
|
||||
ze_bool_t enabled;
|
||||
@@ -290,12 +299,10 @@ bool WddmPowerImp::isPowerModuleSupported() {
|
||||
powerLimitCount += 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (powerLimitCount > 0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
bool WddmPowerImp::isPowerModuleSupported() {
|
||||
return true;
|
||||
}
|
||||
|
||||
ze_result_t WddmPowerImp::getLimitsExt(uint32_t *pCount, zes_power_limit_ext_desc_t *pSustained) {
|
||||
@@ -521,6 +528,7 @@ WddmPowerImp::WddmPowerImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t
|
||||
pWddmSysmanImp = static_cast<WddmSysmanImp *>(pOsSysman);
|
||||
pKmdSysManager = &pWddmSysmanImp->getKmdSysManager();
|
||||
isPowerHandleEnergyCounterOnly();
|
||||
initPowerLimits();
|
||||
}
|
||||
|
||||
std::vector<zes_power_domain_t> OsPower::getNumberOfPowerDomainsSupported(OsSysman *pOsSysman) {
|
||||
|
||||
@@ -28,6 +28,7 @@ class WddmPowerImp : public OsPower, NEO::NonCopyableOrMovableClass {
|
||||
|
||||
bool isPowerModuleSupported() override;
|
||||
void isPowerHandleEnergyCounterOnly();
|
||||
void initPowerLimits();
|
||||
WddmPowerImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId, zes_power_domain_t powerDomain);
|
||||
WddmPowerImp() = default;
|
||||
~WddmPowerImp() override = default;
|
||||
|
||||
Reference in New Issue
Block a user