Add support for sysman event ZES_EVENT_TYPE_FLAG_MEM_HEALTH

Signed-off-by: Jitendra Sharma <jitendra.sharma@intel.com>
This commit is contained in:
Jitendra Sharma
2020-11-19 09:53:32 +05:30
committed by Compute-Runtime-Automation
parent 765b6cc2ed
commit 514b191bb6
6 changed files with 55 additions and 8 deletions

View File

@@ -6,8 +6,8 @@
set(L0_SRCS_TOOLS_SYSMAN_EVENTS_LINUX
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.h
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/os_events_imp.cpp
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/os_events_imp.h
)
if(UNIX)

View File

@@ -64,6 +64,14 @@ bool LinuxEventsImp::checkDeviceAttachEvent(zes_event_type_flags_t &pEvent) {
return false;
}
bool LinuxEventsImp::checkIfMemHealthChanged(zes_event_type_flags_t &pEvent) {
if (currentMemHealth() != memHealthAtEventRegister) {
pEvent = ZES_EVENT_TYPE_FLAG_MEM_HEALTH;
return true;
}
return false;
}
bool LinuxEventsImp::eventListen(zes_event_type_flags_t &pEvent, uint32_t timeout) {
if (registeredEvents & ZES_EVENT_TYPE_FLAG_DEVICE_RESET_REQUIRED) {
if (isResetRequired(pEvent)) {
@@ -80,15 +88,27 @@ bool LinuxEventsImp::eventListen(zes_event_type_flags_t &pEvent, uint32_t timeou
return true;
}
}
if (registeredEvents & ZES_EVENT_TYPE_FLAG_MEM_HEALTH) {
if (checkIfMemHealthChanged(pEvent)) {
return true;
}
}
return false;
}
ze_result_t LinuxEventsImp::eventRegister(zes_event_type_flags_t events) {
registeredEvents = events;
if (registeredEvents & ZES_EVENT_TYPE_FLAG_MEM_HEALTH) {
memHealthAtEventRegister = currentMemHealth();
}
return ZE_RESULT_SUCCESS;
}
void LinuxEventsImp::init() {
zes_mem_health_t LinuxEventsImp::currentMemHealth() {
return ZES_MEM_HEALTH_UNKNOWN;
}
void LinuxEventsImp::getPciIdPathTag() {
std::string bdfDir;
ze_result_t result = pSysfsAccess->readSymLink("device", bdfDir);
if (ZE_RESULT_SUCCESS != result) {
@@ -108,7 +128,7 @@ LinuxEventsImp::LinuxEventsImp(OsSysman *pOsSysman) {
pLinuxSysmanImp = static_cast<LinuxSysmanImp *>(pOsSysman);
pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess();
pFsAccess = &pLinuxSysmanImp->getFsAccess();
init();
getPciIdPathTag();
}
OsEvents *OsEvents::create(OsSysman *pOsSysman) {

View File

@@ -21,11 +21,14 @@ class LinuxEventsImp : public OsEvents, NEO::NonCopyableOrMovableClass {
protected:
LinuxSysmanImp *pLinuxSysmanImp = nullptr;
void init();
void getPciIdPathTag();
zes_mem_health_t currentMemHealth();
bool isResetRequired(zes_event_type_flags_t &pEvent);
bool checkDeviceDetachEvent(zes_event_type_flags_t &pEvent);
bool checkDeviceAttachEvent(zes_event_type_flags_t &pEvent);
bool checkIfMemHealthChanged(zes_event_type_flags_t &pEvent);
std::string pciIdPathTag;
zes_mem_health_t memHealthAtEventRegister = ZES_MEM_HEALTH_UNKNOWN;
private:
FsAccess *pFsAccess = nullptr;