Skip to content

Commit ba83701

Browse files
feature(sysman): Add support for card and package domains in Power module
Related-To: NEO-10484 Signed-off-by: Anvesh Bakwad <[email protected]> Signed-off-by: Pratik Bari <[email protected]>
1 parent afb96a6 commit ba83701

33 files changed

+2312
-876
lines changed

level_zero/sysman/source/api/power/linux/sysman_os_power_imp.cpp

Lines changed: 273 additions & 168 deletions
Large diffs are not rendered by default.

level_zero/sysman/source/api/power/linux/sysman_os_power_imp.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,14 @@ class LinuxPowerImp : public OsPower, NEO::NonCopyableOrMovableClass {
4545
SysFsAccessInterface *pSysfsAccess = nullptr;
4646
SysmanKmdInterface *pSysmanKmdInterface = nullptr;
4747
SysmanProductHelper *pSysmanProductHelper = nullptr;
48-
bool isTelemetrySupportAvailable = false;
48+
void getPowerLimitFiles();
4949

5050
private:
5151
std::string intelGraphicsHwmonDir = {};
52-
std::string criticalPowerLimit = {};
53-
std::string sustainedPowerLimit = {};
54-
std::string sustainedPowerLimitInterval = {};
52+
std::string criticalPowerLimitFile = {};
53+
std::string sustainedPowerLimitFile = {};
54+
std::string sustainedPowerLimitIntervalFile = {};
55+
std::string energyCounterNodeFile = {};
5556
bool canControl = false;
5657
bool isSubdevice = false;
5758
uint32_t subdeviceId = 0;

level_zero/sysman/source/api/power/sysman_os_power.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ class OsPower {
2929

3030
virtual bool isPowerModuleSupported() = 0;
3131
static OsPower *create(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId, zes_power_domain_t powerDomain);
32-
static std::vector<zes_power_domain_t> getNumberOfPowerDomainsSupported(OsSysman *pOsSysman);
33-
32+
static std::vector<zes_power_domain_t> getPowerDomains(OsSysman *pOsSysman);
3433
virtual ~OsPower() = default;
3534
};
3635

level_zero/sysman/source/api/power/sysman_power.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,16 @@ void PowerHandleContext::createHandle(ze_bool_t isSubDevice, uint32_t subDeviceI
3535
delete pPower;
3636
}
3737
}
38-
ze_result_t PowerHandleContext::init(uint32_t subDeviceCount) {
3938

40-
auto totalDomains = OsPower::getNumberOfPowerDomainsSupported(pOsSysman);
39+
void PowerHandleContext::init(uint32_t subDeviceCount) {
40+
auto totalDomains = OsPower::getPowerDomains(pOsSysman);
4141

42-
for (auto &powerDomain : totalDomains) {
42+
for (const auto &powerDomain : totalDomains) {
4343
createHandle(false, 0, powerDomain);
44-
}
45-
46-
for (uint32_t subDeviceId = 0; subDeviceId < subDeviceCount; subDeviceId++) {
47-
for (auto &powerDomain : totalDomains) {
44+
for (uint32_t subDeviceId = 0; subDeviceId < subDeviceCount; subDeviceId++) {
4845
createHandle(true, subDeviceId, powerDomain);
4946
}
5047
}
51-
52-
return ZE_RESULT_SUCCESS;
5348
}
5449

5550
void PowerHandleContext::initPower() {
@@ -71,6 +66,7 @@ ze_result_t PowerHandleContext::powerGet(uint32_t *pCount, zes_pwr_handle_t *phP
7166
phPower[i] = handleList[i]->toHandle();
7267
}
7368
}
69+
7470
return ZE_RESULT_SUCCESS;
7571
}
7672

level_zero/sysman/source/api/power/sysman_power.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ struct PowerHandleContext {
3838
PowerHandleContext(OsSysman *pOsSysman) : pOsSysman(pOsSysman){};
3939
~PowerHandleContext();
4040

41-
ze_result_t init(uint32_t subDeviceCount);
41+
void init(uint32_t subDeviceCount);
4242
ze_result_t powerGet(uint32_t *pCount, zes_pwr_handle_t *phPower);
4343
ze_result_t powerGetCardDomain(zes_pwr_handle_t *phPower);
4444

level_zero/sysman/source/api/power/sysman_power_imp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ PowerImp::PowerImp(OsSysman *pOsSysman, ze_bool_t isSubDevice, uint32_t subDevic
6868

6969
pOsPower = OsPower::create(pOsSysman, isSubDevice, subDeviceId, powerDomain);
7070
UNRECOVERABLE_IF(nullptr == pOsPower);
71-
this->isCardPower = isSubDevice ? false : true;
71+
this->isCardPower = powerDomain == ZES_POWER_DOMAIN_CARD;
7272
init();
7373
}
7474

level_zero/sysman/source/api/power/windows/sysman_os_power_imp.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ WddmPowerImp::WddmPowerImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t
611611
isPowerHandleEnergyCounterOnly();
612612
}
613613

614-
std::vector<zes_power_domain_t> OsPower::getNumberOfPowerDomainsSupported(OsSysman *pOsSysman) {
614+
std::vector<zes_power_domain_t> OsPower::getPowerDomains(OsSysman *pOsSysman) {
615615
WddmSysmanImp *pWddmSysmanImp = static_cast<WddmSysmanImp *>(pOsSysman);
616616
KmdSysManager *pKmdSysManager = &pWddmSysmanImp->getKmdSysManager();
617617
KmdSysman::RequestProperty request;

level_zero/sysman/source/shared/linux/kmd_interface/sysman_kmd_interface.h

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ enum class SysfsName {
7575
sysfsNameThrottleReasonPL2,
7676
sysfsNameThrottleReasonPL4,
7777
sysfsNameThrottleReasonThermal,
78-
sysfsNameSustainedPowerLimit,
79-
sysfsNameSustainedPowerLimitInterval,
80-
sysfsNameEnergyCounterNode,
81-
sysfsNameDefaultPowerLimit,
82-
sysfsNameCriticalPowerLimit,
78+
sysfsNameCardSustainedPowerLimit,
79+
sysfsNameCardSustainedPowerLimitInterval,
80+
sysfsNameCardEnergyCounterNode,
81+
sysfsNameCardDefaultPowerLimit,
82+
sysfsNameCardCriticalPowerLimit,
8383
sysfsNameStandbyModeControl,
8484
sysfsNameMemoryAddressRange,
8585
sysfsNameMaxMemoryFrequency,
@@ -93,6 +93,11 @@ enum class SysfsName {
9393
sysfsNamePerformanceBaseFrequencyFactorScale,
9494
sysfsNamePerformanceMediaFrequencyFactorScale,
9595
sysfsNamePerformanceSystemPowerBalance,
96+
sysfsNamePackageSustainedPowerLimit,
97+
sysfsNamePackageSustainedPowerLimitInterval,
98+
sysfsNamePackageDefaultPowerLimit,
99+
sysfsNamePackageCriticalPowerLimit,
100+
sysfsNamePackageEnergyCounterNode,
96101
};
97102

98103
enum class SysfsValueUnit {
@@ -111,6 +116,8 @@ class SysmanKmdInterface {
111116
virtual std::string getBasePath(uint32_t subDeviceId) const = 0;
112117
virtual std::string getSysfsFilePath(SysfsName sysfsName, uint32_t subDeviceId, bool baseDirectoryExists) = 0;
113118
virtual std::string getSysfsFilePathForPhysicalMemorySize(uint32_t subDeviceId) = 0;
119+
virtual std::string getSysfsFilePathForPower(SysfsName sysfsName) = 0;
120+
virtual std::string getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) = 0;
114121
virtual int64_t getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pmuInterface) = 0;
115122
virtual std::string getHwmonName(uint32_t subDeviceId, bool isSubdevice) const = 0;
116123
virtual bool isStandbyModeControlAvailable() const = 0;
@@ -151,6 +158,7 @@ class SysmanKmdInterface {
151158
virtual ze_result_t getBusyAndTotalTicksConfigs(uint64_t fnNumber, uint64_t engineInstance, uint64_t engineClass, std::pair<uint64_t, uint64_t> &configPair) = 0;
152159
virtual std::string getGpuBindEntry() const = 0;
153160
virtual std::string getGpuUnBindEntry() const = 0;
161+
virtual bool isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const = 0;
154162

155163
protected:
156164
std::unique_ptr<FsAccessInterface> pFsAccess;
@@ -181,6 +189,8 @@ class SysmanKmdInterfaceI915Upstream : public SysmanKmdInterface, SysmanKmdInter
181189
std::string getBasePath(uint32_t subDeviceId) const override;
182190
std::string getSysfsFilePath(SysfsName sysfsName, uint32_t subDeviceId, bool baseDirectoryExists) override;
183191
std::string getSysfsFilePathForPhysicalMemorySize(uint32_t subDeviceId) override;
192+
std::string getSysfsFilePathForPower(SysfsName sysfsName) override;
193+
std::string getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) override;
184194
int64_t getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pmuInterface) override;
185195
std::string getHwmonName(uint32_t subDeviceId, bool isSubdevice) const override;
186196
bool isStandbyModeControlAvailable() const override { return true; }
@@ -209,6 +219,7 @@ class SysmanKmdInterfaceI915Upstream : public SysmanKmdInterface, SysmanKmdInter
209219
ze_result_t getBusyAndTotalTicksConfigs(uint64_t fnNumber, uint64_t engineInstance, uint64_t engineClass, std::pair<uint64_t, uint64_t> &configPair) override;
210220
std::string getGpuBindEntry() const override;
211221
std::string getGpuUnBindEntry() const override;
222+
bool isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const override;
212223

213224
protected:
214225
std::map<SysfsName, valuePair> sysfsNameToFileMap;
@@ -228,6 +239,8 @@ class SysmanKmdInterfaceI915Prelim : public SysmanKmdInterface, SysmanKmdInterfa
228239
std::string getBasePath(uint32_t subDeviceId) const override;
229240
std::string getSysfsFilePath(SysfsName sysfsName, uint32_t subDeviceId, bool baseDirectoryExists) override;
230241
std::string getSysfsFilePathForPhysicalMemorySize(uint32_t subDeviceId) override;
242+
std::string getSysfsFilePathForPower(SysfsName sysfsName) override;
243+
std::string getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) override;
231244
int64_t getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pmuInterface) override;
232245
std::string getHwmonName(uint32_t subDeviceId, bool isSubdevice) const override;
233246
bool isStandbyModeControlAvailable() const override { return true; }
@@ -256,6 +269,7 @@ class SysmanKmdInterfaceI915Prelim : public SysmanKmdInterface, SysmanKmdInterfa
256269
ze_result_t getBusyAndTotalTicksConfigs(uint64_t fnNumber, uint64_t engineInstance, uint64_t engineClass, std::pair<uint64_t, uint64_t> &configPair) override;
257270
std::string getGpuBindEntry() const override;
258271
std::string getGpuUnBindEntry() const override;
272+
bool isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const override;
259273

260274
protected:
261275
std::map<SysfsName, valuePair> sysfsNameToFileMap;
@@ -275,6 +289,8 @@ class SysmanKmdInterfaceXe : public SysmanKmdInterface {
275289
std::string getBasePath(uint32_t subDeviceId) const override;
276290
std::string getSysfsFilePath(SysfsName sysfsName, uint32_t subDeviceId, bool baseDirectoryExists) override;
277291
std::string getSysfsFilePathForPhysicalMemorySize(uint32_t subDeviceId) override;
292+
std::string getSysfsFilePathForPower(SysfsName sysfsName) override;
293+
std::string getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) override;
278294
std::string getEngineBasePath(uint32_t subDeviceId) const override;
279295
int64_t getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pmuInterface) override;
280296
std::string getHwmonName(uint32_t subDeviceId, bool isSubdevice) const override;
@@ -305,6 +321,7 @@ class SysmanKmdInterfaceXe : public SysmanKmdInterface {
305321
ze_result_t getBusyAndTotalTicksConfigs(uint64_t fnNumber, uint64_t engineInstance, uint64_t engineClass, std::pair<uint64_t, uint64_t> &configPair) override;
306322
std::string getGpuBindEntry() const override;
307323
std::string getGpuUnBindEntry() const override;
324+
bool isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const override { return false; }
308325

309326
protected:
310327
std::map<SysfsName, valuePair> sysfsNameToFileMap;

level_zero/sysman/source/shared/linux/kmd_interface/sysman_kmd_interface_i915_prelim.cpp

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ void SysmanKmdInterfaceI915Prelim::initSysfsNameToFileMap(SysmanProductHelper *p
4848
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonPL2] = std::make_pair("throttle_reason_pl2", "gt_throttle_reason_status_pl2");
4949
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonPL4] = std::make_pair("throttle_reason_pl4", "gt_throttle_reason_status_pl4");
5050
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonThermal] = std::make_pair("throttle_reason_thermal", "gt_throttle_reason_status_thermal");
51-
sysfsNameToFileMap[SysfsName::sysfsNameSustainedPowerLimit] = std::make_pair("", "power1_max");
52-
sysfsNameToFileMap[SysfsName::sysfsNameSustainedPowerLimitInterval] = std::make_pair("", "power1_max_interval");
53-
sysfsNameToFileMap[SysfsName::sysfsNameEnergyCounterNode] = std::make_pair("", "energy1_input");
54-
sysfsNameToFileMap[SysfsName::sysfsNameDefaultPowerLimit] = std::make_pair("", "power1_rated_max");
55-
sysfsNameToFileMap[SysfsName::sysfsNameCriticalPowerLimit] = std::make_pair("", pSysmanProductHelper->getCardCriticalPowerLimitFile());
51+
sysfsNameToFileMap[SysfsName::sysfsNamePackageSustainedPowerLimit] = std::make_pair("", "power1_max");
52+
sysfsNameToFileMap[SysfsName::sysfsNamePackageSustainedPowerLimitInterval] = std::make_pair("", "power1_max_interval");
53+
sysfsNameToFileMap[SysfsName::sysfsNamePackageEnergyCounterNode] = std::make_pair("", "energy1_input");
54+
sysfsNameToFileMap[SysfsName::sysfsNamePackageDefaultPowerLimit] = std::make_pair("", "power1_rated_max");
55+
sysfsNameToFileMap[SysfsName::sysfsNamePackageCriticalPowerLimit] = std::make_pair("", pSysmanProductHelper->getI915PackageCriticalPowerLimitFile());
5656
sysfsNameToFileMap[SysfsName::sysfsNameStandbyModeControl] = std::make_pair("rc6_enable", "power/rc6_enable");
5757
sysfsNameToFileMap[SysfsName::sysfsNameMemoryAddressRange] = std::make_pair("addr_range", "");
5858
sysfsNameToFileMap[SysfsName::sysfsNameMaxMemoryFrequency] = std::make_pair("mem_RP0_freq_mhz", "");
@@ -71,9 +71,9 @@ void SysmanKmdInterfaceI915Prelim::initSysfsNameToNativeUnitMap(SysmanProductHel
7171
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerTimeout] = SysfsValueUnit::milli;
7272
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerTimeslice] = SysfsValueUnit::milli;
7373
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerWatchDogTimeout] = SysfsValueUnit::milli;
74-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSustainedPowerLimit] = SysfsValueUnit::micro;
75-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameDefaultPowerLimit] = SysfsValueUnit::micro;
76-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameCriticalPowerLimit] = pSysmanProductHelper->getCardCriticalPowerLimitNativeUnit();
74+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageSustainedPowerLimit] = SysfsValueUnit::micro;
75+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageDefaultPowerLimit] = SysfsValueUnit::micro;
76+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageCriticalPowerLimit] = pSysmanProductHelper->getPackageCriticalPowerLimitNativeUnit();
7777
}
7878

7979
std::string SysmanKmdInterfaceI915Prelim::getBasePath(uint32_t subDeviceId) const {
@@ -96,6 +96,25 @@ std::string SysmanKmdInterfaceI915Prelim::getSysfsFilePathForPhysicalMemorySize(
9696
return filePathPhysicalMemorySize;
9797
}
9898

99+
std::string SysmanKmdInterfaceI915Prelim::getSysfsFilePathForPower(SysfsName sysfsName) {
100+
std::string filePath = sysfsNameToFileMap[sysfsName].second;
101+
return filePath;
102+
}
103+
104+
std::string SysmanKmdInterfaceI915Prelim::getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) {
105+
if (powerDomain == ZES_POWER_DOMAIN_PACKAGE) {
106+
return getSysfsFilePathForPower(SysfsName::sysfsNamePackageEnergyCounterNode);
107+
}
108+
return {};
109+
}
110+
111+
bool SysmanKmdInterfaceI915Prelim::isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const {
112+
if (powerDomain == ZES_POWER_DOMAIN_PACKAGE) {
113+
return true;
114+
}
115+
return false;
116+
}
117+
99118
int64_t SysmanKmdInterfaceI915Prelim::getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pPmuInterface) {
100119
uint64_t config = UINT64_MAX;
101120
switch (engineGroup) {

level_zero/sysman/source/shared/linux/kmd_interface/sysman_kmd_interface_i915_upstream.cpp

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ void SysmanKmdInterfaceI915Upstream::initSysfsNameToFileMap(SysmanProductHelper
4545
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonPL2] = std::make_pair("throttle_reason_pl2", "gt_throttle_reason_status_pl2");
4646
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonPL4] = std::make_pair("throttle_reason_pl4", "gt_throttle_reason_status_pl4");
4747
sysfsNameToFileMap[SysfsName::sysfsNameThrottleReasonThermal] = std::make_pair("throttle_reason_thermal", "gt_throttle_reason_status_thermal");
48-
sysfsNameToFileMap[SysfsName::sysfsNameSustainedPowerLimit] = std::make_pair("", "power1_max");
49-
sysfsNameToFileMap[SysfsName::sysfsNameSustainedPowerLimitInterval] = std::make_pair("", "power1_max_interval");
50-
sysfsNameToFileMap[SysfsName::sysfsNameEnergyCounterNode] = std::make_pair("", "energy1_input");
51-
sysfsNameToFileMap[SysfsName::sysfsNameDefaultPowerLimit] = std::make_pair("", "power1_rated_max");
52-
sysfsNameToFileMap[SysfsName::sysfsNameCriticalPowerLimit] = std::make_pair("", pSysmanProductHelper->getCardCriticalPowerLimitFile());
48+
sysfsNameToFileMap[SysfsName::sysfsNamePackageSustainedPowerLimit] = std::make_pair("", "power1_max");
49+
sysfsNameToFileMap[SysfsName::sysfsNamePackageSustainedPowerLimitInterval] = std::make_pair("", "power1_max_interval");
50+
sysfsNameToFileMap[SysfsName::sysfsNamePackageEnergyCounterNode] = std::make_pair("", "energy1_input");
51+
sysfsNameToFileMap[SysfsName::sysfsNamePackageDefaultPowerLimit] = std::make_pair("", "power1_rated_max");
52+
sysfsNameToFileMap[SysfsName::sysfsNamePackageCriticalPowerLimit] = std::make_pair("", pSysmanProductHelper->getI915PackageCriticalPowerLimitFile());
5353
sysfsNameToFileMap[SysfsName::sysfsNameStandbyModeControl] = std::make_pair("rc6_enable", "power/rc6_enable");
5454
sysfsNameToFileMap[SysfsName::sysfsNameMemoryAddressRange] = std::make_pair("addr_range", "");
5555
sysfsNameToFileMap[SysfsName::sysfsNameMaxMemoryFrequency] = std::make_pair("mem_RP0_freq_mhz", "");
@@ -68,9 +68,9 @@ void SysmanKmdInterfaceI915Upstream::initSysfsNameToNativeUnitMap(SysmanProductH
6868
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerTimeout] = SysfsValueUnit::milli;
6969
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerTimeslice] = SysfsValueUnit::milli;
7070
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSchedulerWatchDogTimeout] = SysfsValueUnit::milli;
71-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameSustainedPowerLimit] = SysfsValueUnit::micro;
72-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameDefaultPowerLimit] = SysfsValueUnit::micro;
73-
sysfsNameToNativeUnitMap[SysfsName::sysfsNameCriticalPowerLimit] = pSysmanProductHelper->getCardCriticalPowerLimitNativeUnit();
71+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageSustainedPowerLimit] = SysfsValueUnit::micro;
72+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageDefaultPowerLimit] = SysfsValueUnit::micro;
73+
sysfsNameToNativeUnitMap[SysfsName::sysfsNamePackageCriticalPowerLimit] = pSysmanProductHelper->getPackageCriticalPowerLimitNativeUnit();
7474
}
7575

7676
std::string SysmanKmdInterfaceI915Upstream::getSysfsFilePath(SysfsName sysfsName, uint32_t subDeviceId, bool prefixBaseDirectory) {
@@ -89,6 +89,25 @@ std::string SysmanKmdInterfaceI915Upstream::getSysfsFilePathForPhysicalMemorySiz
8989
return filePathPhysicalMemorySize;
9090
}
9191

92+
std::string SysmanKmdInterfaceI915Upstream::getSysfsFilePathForPower(SysfsName sysfsName) {
93+
std::string filePath = sysfsNameToFileMap[sysfsName].second;
94+
return filePath;
95+
}
96+
97+
std::string SysmanKmdInterfaceI915Upstream::getEnergyCounterNodeFilePath(zes_power_domain_t powerDomain) {
98+
if (powerDomain == ZES_POWER_DOMAIN_PACKAGE) {
99+
return getSysfsFilePathForPower(SysfsName::sysfsNamePackageEnergyCounterNode);
100+
}
101+
return {};
102+
}
103+
104+
bool SysmanKmdInterfaceI915Upstream::isPowerSupportForSubdeviceAvailable(zes_power_domain_t powerDomain) const {
105+
if (powerDomain == ZES_POWER_DOMAIN_PACKAGE) {
106+
return true;
107+
}
108+
return false;
109+
}
110+
92111
int64_t SysmanKmdInterfaceI915Upstream::getEngineActivityFd(zes_engine_group_t engineGroup, uint32_t engineInstance, uint32_t subDeviceId, PmuInterface *const &pPmuInterface) {
93112
uint64_t config = UINT64_MAX;
94113
auto engineClass = engineGroupToEngineClass.find(engineGroup);

0 commit comments

Comments
 (0)