mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
feature: Add FsAccess and Derived class in Sysman Kmd Interface
- The FsAccess, ProcFsAccess and SysfsAccess classes have been added in a file in the Sysman Shared directory. The instances of these classes are maintained in the Sysman Kmd Interface classes. - Added functions for opendir, readdir and closedir in the shared code. - Added a ULT in the sysman directory to cover these new functions from the shared code. Related-To: LOCI-4689 Signed-off-by: Bari, Pratik <pratik.bari@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e77e49853b
commit
f9e4381c1e
@@ -11,15 +11,12 @@
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/helpers/hw_info.h"
|
||||
|
||||
#include "level_zero/sysman/source/shared/linux/sysman_kmd_interface.h"
|
||||
#include "level_zero/tools/source/sysman/linux/os_sysman_imp.h"
|
||||
|
||||
#include "igfxfmid.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
using namespace L0::Sysman;
|
||||
|
||||
namespace L0 {
|
||||
|
||||
const bool LinuxFrequencyImp::canControl = true; // canControl is true on i915 (GEN9 Hardcode)
|
||||
@@ -387,37 +384,46 @@ ze_result_t LinuxFrequencyImp::getMinVal(double &minVal) {
|
||||
}
|
||||
|
||||
void LinuxFrequencyImp::init() {
|
||||
|
||||
const std::string baseDir = pSysmanKmdInterface->getBasePath(subdeviceId);
|
||||
bool baseDirectoryExists = false;
|
||||
|
||||
const std::string baseDir = "gt/gt" + std::to_string(subdeviceId) + "/";
|
||||
if (pSysfsAccess->directoryExists(baseDir)) {
|
||||
baseDirectoryExists = true;
|
||||
minFreqFile = baseDir + "rps_min_freq_mhz";
|
||||
minDefaultFreqFile = baseDir + ".defaults/rps_min_freq_mhz";
|
||||
maxFreqFile = baseDir + "rps_max_freq_mhz";
|
||||
boostFreqFile = baseDir + "rps_boost_freq_mhz";
|
||||
maxDefaultFreqFile = baseDir + ".defaults/rps_max_freq_mhz";
|
||||
requestFreqFile = baseDir + "punit_req_freq_mhz";
|
||||
tdpFreqFile = baseDir + "rapl_PL1_freq_mhz";
|
||||
actualFreqFile = baseDir + "rps_act_freq_mhz";
|
||||
efficientFreqFile = baseDir + "rps_RP1_freq_mhz";
|
||||
maxValFreqFile = baseDir + "rps_RP0_freq_mhz";
|
||||
minValFreqFile = baseDir + "rps_RPn_freq_mhz";
|
||||
throttleReasonStatusFile = baseDir + "throttle_reason_status";
|
||||
throttleReasonPL1File = baseDir + "throttle_reason_pl1";
|
||||
throttleReasonPL2File = baseDir + "throttle_reason_pl2";
|
||||
throttleReasonPL4File = baseDir + "throttle_reason_pl4";
|
||||
throttleReasonThermalFile = baseDir + "throttle_reason_thermal";
|
||||
} else {
|
||||
minFreqFile = "gt_min_freq_mhz";
|
||||
maxFreqFile = "gt_max_freq_mhz";
|
||||
boostFreqFile = "gt_boost_freq_mhz";
|
||||
requestFreqFile = "gt_cur_freq_mhz";
|
||||
tdpFreqFile = "rapl_PL1_freq_mhz";
|
||||
actualFreqFile = "gt_act_freq_mhz";
|
||||
efficientFreqFile = "gt_RP1_freq_mhz";
|
||||
maxValFreqFile = "gt_RP0_freq_mhz";
|
||||
minValFreqFile = "gt_RPn_freq_mhz";
|
||||
throttleReasonStatusFile = "gt_throttle_reason_status";
|
||||
throttleReasonPL1File = "gt_throttle_reason_status_pl1";
|
||||
throttleReasonPL2File = "gt_throttle_reason_status_pl2";
|
||||
throttleReasonPL4File = "gt_throttle_reason_status_pl4";
|
||||
throttleReasonThermalFile = "gt_throttle_reason_status_thermal";
|
||||
}
|
||||
|
||||
minFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMinFrequency, subdeviceId, baseDirectoryExists);
|
||||
minDefaultFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMinDefaultFrequency, subdeviceId, baseDirectoryExists);
|
||||
maxFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMaxFrequency, subdeviceId, baseDirectoryExists);
|
||||
maxDefaultFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMaxDefaultFrequency, subdeviceId, baseDirectoryExists);
|
||||
boostFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameBoostFrequency, subdeviceId, baseDirectoryExists);
|
||||
requestFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameCurrentFrequency, subdeviceId, baseDirectoryExists);
|
||||
tdpFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameTdpFrequency, subdeviceId, baseDirectoryExists);
|
||||
actualFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameActualFrequency, subdeviceId, baseDirectoryExists);
|
||||
efficientFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameEfficientFrequency, subdeviceId, baseDirectoryExists);
|
||||
maxValFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMaxValueFrequency, subdeviceId, baseDirectoryExists);
|
||||
minValFreqFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameMinValueFrequency, subdeviceId, baseDirectoryExists);
|
||||
throttleReasonStatusFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameThrottleReasonStatus, subdeviceId, baseDirectoryExists);
|
||||
throttleReasonPL1File = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameThrottleReasonPL1, subdeviceId, baseDirectoryExists);
|
||||
throttleReasonPL2File = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameThrottleReasonPL2, subdeviceId, baseDirectoryExists);
|
||||
throttleReasonPL4File = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameThrottleReasonPL4, subdeviceId, baseDirectoryExists);
|
||||
throttleReasonThermalFile = pSysmanKmdInterface->getSysfsFilePath(SysfsName::sysfsNameThrottleReasonThermal, subdeviceId, baseDirectoryExists);
|
||||
}
|
||||
|
||||
LinuxFrequencyImp::LinuxFrequencyImp(OsSysman *pOsSysman, ze_bool_t onSubdevice, uint32_t subdeviceId, zes_freq_domain_t frequencyDomainNumber) : isSubdevice(onSubdevice), subdeviceId(subdeviceId), frequencyDomainNumber(frequencyDomainNumber) {
|
||||
LinuxSysmanImp *pLinuxSysmanImp = static_cast<LinuxSysmanImp *>(pOsSysman);
|
||||
pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess();
|
||||
pDevice = Device::fromHandle(pLinuxSysmanImp->getSysmanDeviceImp()->hCoreDevice);
|
||||
pSysmanKmdInterface = pLinuxSysmanImp->getSysmanKmdInterface();
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
@@ -12,11 +12,6 @@
|
||||
#include "level_zero/tools/source/sysman/frequency/os_frequency.h"
|
||||
#include "level_zero/tools/source/sysman/linux/fs_access.h"
|
||||
|
||||
namespace L0 {
|
||||
namespace Sysman {
|
||||
class SysmanKmdInterface;
|
||||
} // namespace Sysman
|
||||
} // namespace L0
|
||||
namespace L0 {
|
||||
|
||||
class LinuxFrequencyImp : public OsFrequency, NEO::NonCopyableOrMovableClass {
|
||||
@@ -43,7 +38,6 @@ class LinuxFrequencyImp : public OsFrequency, NEO::NonCopyableOrMovableClass {
|
||||
~LinuxFrequencyImp() override = default;
|
||||
|
||||
protected:
|
||||
L0::Sysman::SysmanKmdInterface *pSysmanKmdInterface = nullptr;
|
||||
SysfsAccess *pSysfsAccess = nullptr;
|
||||
ze_result_t getMin(double &min);
|
||||
ze_result_t setMin(double min);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
#include "level_zero/core/source/device/device_imp.h"
|
||||
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
||||
#include "level_zero/sysman/source/shared/linux/sysman_kmd_interface.h"
|
||||
#include "level_zero/tools/source/sysman/firmware_util/firmware_util.h"
|
||||
#include "level_zero/tools/source/sysman/linux/fs_access.h"
|
||||
#include "level_zero/tools/source/sysman/pci/linux/os_pci_imp.h"
|
||||
@@ -55,8 +54,6 @@ ze_result_t LinuxSysmanImp::init() {
|
||||
|
||||
DEBUG_BREAK_IF(nullptr == pPmuInterface);
|
||||
|
||||
pSysmanKmdInterface = L0::Sysman::SysmanKmdInterface::create(getDrm());
|
||||
|
||||
getMemoryType();
|
||||
return createPmtHandles();
|
||||
}
|
||||
|
||||
@@ -22,12 +22,6 @@
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
|
||||
namespace L0 {
|
||||
namespace Sysman {
|
||||
class SysmanKmdInterface;
|
||||
} // namespace Sysman
|
||||
} // namespace L0
|
||||
|
||||
namespace L0 {
|
||||
|
||||
class PmuInterface;
|
||||
@@ -92,10 +86,8 @@ class LinuxSysmanImp : public OsSysman, NEO::NonCopyableOrMovableClass {
|
||||
bool isMemoryDiagnostics = false;
|
||||
Device *pDevice = nullptr;
|
||||
std::string gtDevicePath;
|
||||
L0::Sysman::SysmanKmdInterface *getSysmanKmdInterface() { return pSysmanKmdInterface.get(); }
|
||||
|
||||
protected:
|
||||
std::unique_ptr<L0::Sysman::SysmanKmdInterface> pSysmanKmdInterface;
|
||||
FsAccess *pFsAccess = nullptr;
|
||||
ProcfsAccess *pProcfsAccess = nullptr;
|
||||
SysfsAccess *pSysfsAccess = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user