From 5c029b44712fde0d927934d206070c19af338260 Mon Sep 17 00:00:00 2001 From: "Vilvaraj, T J Vivek" Date: Thu, 23 Apr 2020 23:21:02 +0530 Subject: [PATCH] Implement RAS APIs - Implemented zetSysmanGetProperties - Implemented zetSysmanGetState Change-Id: Id40a1cb036693156c31c6e9ee78c3113ef35e5c2 Signed-off-by: Vilvaraj, T J Vivek --- .../tools/source/sysman/linux/fs_access.cpp | 17 +++++++++++++++++ .../tools/source/sysman/linux/fs_access.h | 1 + .../source/sysman/ras/linux/os_ras_imp.cpp | 9 +++++++-- level_zero/tools/source/sysman/ras/os_ras.h | 3 +++ level_zero/tools/source/sysman/ras/ras_imp.h | 1 + .../source/sysman/ras/windows/os_ras_imp.cpp | 8 +++++++- 6 files changed, 36 insertions(+), 3 deletions(-) diff --git a/level_zero/tools/source/sysman/linux/fs_access.cpp b/level_zero/tools/source/sysman/linux/fs_access.cpp index 31d8d4bf2b..712261e99b 100644 --- a/level_zero/tools/source/sysman/linux/fs_access.cpp +++ b/level_zero/tools/source/sysman/linux/fs_access.cpp @@ -36,6 +36,23 @@ FsAccess *FsAccess::create() { return new FsAccess(); } +ze_result_t FsAccess::read(const std::string file, uint64_t &val) { + // Read a single line from text file without trailing newline + std::ifstream fs; + + fs.open(file.c_str()); + if (fs.fail()) { + return getResult(errno); + } + fs >> val; + if (fs.fail()) { + fs.close(); + return getResult(errno); + } + fs.close(); + return ZE_RESULT_SUCCESS; +} + ze_result_t FsAccess::read(const std::string file, std::string &val) { // Read a single line from text file without trailing newline std::ifstream fs; diff --git a/level_zero/tools/source/sysman/linux/fs_access.h b/level_zero/tools/source/sysman/linux/fs_access.h index eb92857ea8..b6bbec174e 100644 --- a/level_zero/tools/source/sysman/linux/fs_access.h +++ b/level_zero/tools/source/sysman/linux/fs_access.h @@ -32,6 +32,7 @@ class FsAccess { ze_result_t canWrite(const std::string file); ze_result_t getFileMode(const std::string file, ::mode_t &mode); + ze_result_t read(const std::string file, uint64_t &val); ze_result_t read(const std::string file, std::string &val); ze_result_t read(const std::string file, std::vector &val); diff --git a/level_zero/tools/source/sysman/ras/linux/os_ras_imp.cpp b/level_zero/tools/source/sysman/ras/linux/os_ras_imp.cpp index 338a4d5735..b70d802deb 100644 --- a/level_zero/tools/source/sysman/ras/linux/os_ras_imp.cpp +++ b/level_zero/tools/source/sysman/ras/linux/os_ras_imp.cpp @@ -17,14 +17,19 @@ class LinuxRasImp : public OsRas, public NEO::NonCopyableClass { public: LinuxRasImp(OsSysman *pOsSysman); ~LinuxRasImp() override = default; + ze_result_t getCounterValues(zet_ras_details_t *pDetails) override; private: - SysfsAccess *pSysfsAccess = nullptr; + FsAccess *pFsAccess = nullptr; }; +ze_result_t LinuxRasImp::getCounterValues(zet_ras_details_t *pDetails) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; +} + LinuxRasImp::LinuxRasImp(OsSysman *pOsSysman) { LinuxSysmanImp *pLinuxSysmanImp = static_cast(pOsSysman); - pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess(); + pFsAccess = &pLinuxSysmanImp->getFsAccess(); } OsRas *OsRas::create(OsSysman *pOsSysman) { diff --git a/level_zero/tools/source/sysman/ras/os_ras.h b/level_zero/tools/source/sysman/ras/os_ras.h index ac5caf6861..0d7ef5792e 100644 --- a/level_zero/tools/source/sysman/ras/os_ras.h +++ b/level_zero/tools/source/sysman/ras/os_ras.h @@ -7,11 +7,14 @@ #pragma once +#include + namespace L0 { struct OsSysman; class OsRas { public: + virtual ze_result_t getCounterValues(zet_ras_details_t *pDetails) = 0; static OsRas *create(OsSysman *pOsSysman); virtual ~OsRas() = default; }; diff --git a/level_zero/tools/source/sysman/ras/ras_imp.h b/level_zero/tools/source/sysman/ras/ras_imp.h index 23059cf462..749a849a1c 100644 --- a/level_zero/tools/source/sysman/ras/ras_imp.h +++ b/level_zero/tools/source/sysman/ras/ras_imp.h @@ -27,6 +27,7 @@ class RasImp : public NEO::NonCopyableClass, public Ras { private: OsRas *pOsRas = nullptr; void init(); + zet_ras_properties_t rasProperties = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/ras/windows/os_ras_imp.cpp b/level_zero/tools/source/sysman/ras/windows/os_ras_imp.cpp index 2198094ce3..eb49b1c529 100644 --- a/level_zero/tools/source/sysman/ras/windows/os_ras_imp.cpp +++ b/level_zero/tools/source/sysman/ras/windows/os_ras_imp.cpp @@ -9,7 +9,13 @@ namespace L0 { -class WddmRasImp : public OsRas {}; +class WddmRasImp : public OsRas { + ze_result_t getCounterValues(zet_ras_details_t *pDetails) override; +}; + +ze_result_t WddmRasImp::getCounterValues(zet_ras_details_t *pDetails) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; +} OsRas *OsRas::create(OsSysman *pOsSysman) { WddmRasImp *pWddmRasImp = new WddmRasImp();