Skip to content

Commit 906f0a5

Browse files
Sysman: Fix and refactor event implementation
Remove unnecessary prelim implementation for events. Modify uevent property name to check memory health events. Related-To: LOCI-4089 Signed-off-by: Bellekallu Rajkiran <bellekallu.rajkiran@intel.com> Source: f0c7eef
1 parent 396a86c commit 906f0a5

File tree

13 files changed

+1699
-2223
lines changed

13 files changed

+1699
-2223
lines changed

level_zero/tools/source/sysman/events/linux/CMakeLists.txt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,15 @@
11
#
2-
# Copyright (C) 2020-2022 Intel Corporation
2+
# Copyright (C) 2020-2023 Intel Corporation
33
#
44
# SPDX-License-Identifier: MIT
55
#
66

77
set(L0_SRCS_TOOLS_SYSMAN_EVENTS_LINUX
88
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
9+
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.cpp
10+
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.h
911
)
1012

11-
if(NEO_ENABLE_i915_PRELIM_DETECTION)
12-
list(APPEND L0_SRCS_TOOLS_SYSMAN_EVENTS_LINUX
13-
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp_prelim.cpp
14-
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp_prelim.h
15-
)
16-
else()
17-
list(APPEND L0_SRCS_TOOLS_SYSMAN_EVENTS_LINUX
18-
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.cpp
19-
${CMAKE_CURRENT_SOURCE_DIR}/os_events_imp.h
20-
)
21-
endif()
22-
2313
if(UNIX)
2414
target_sources(${L0_STATIC_LIB_NAME}
2515
PRIVATE

level_zero/tools/source/sysman/events/linux/os_events_imp.cpp

Lines changed: 259 additions & 92 deletions
Large diffs are not rendered by default.
Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2020-2021 Intel Corporation
2+
* Copyright (C) 2022-2023 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -8,35 +8,51 @@
88
#pragma once
99
#include "level_zero/tools/source/sysman/events/os_events.h"
1010
#include "level_zero/tools/source/sysman/linux/os_sysman_imp.h"
11+
#include "level_zero/tools/source/sysman/linux/udev/udev_lib.h"
1112

1213
namespace L0 {
1314

1415
class LinuxEventsImp : public OsEvents, NEO::NonCopyableOrMovableClass {
1516
public:
1617
bool eventListen(zes_event_type_flags_t &pEvent, uint64_t timeout) override;
1718
ze_result_t eventRegister(zes_event_type_flags_t events) override;
18-
LinuxEventsImp() = default;
19+
LinuxEventsImp() = delete;
1920
LinuxEventsImp(OsSysman *pOsSysman);
2021
~LinuxEventsImp() override = default;
2122

2223
protected:
2324
LinuxSysmanImp *pLinuxSysmanImp = nullptr;
24-
void getPciIdPathTag();
25-
zes_mem_health_t currentMemHealth();
26-
bool isResetRequired(zes_event_type_flags_t &pEvent);
25+
};
26+
27+
class LinuxEventsUtil {
28+
29+
public:
30+
LinuxEventsUtil() = default;
31+
~LinuxEventsUtil() = default;
32+
33+
ze_result_t eventsListen(uint64_t timeout, uint32_t count, zes_device_handle_t *phDevices, uint32_t *pNumDeviceEvents, zes_event_type_flags_t *pEvents);
34+
void eventRegister(zes_event_type_flags_t events, SysmanDeviceImp *pSysmanDevice);
35+
36+
protected:
37+
UdevLib *pUdevLib = nullptr;
38+
bool checkRasEvent(zes_event_type_flags_t &pEvent, SysmanDeviceImp *pSysmanDeviceImp, zes_event_type_flags_t registeredEvents);
39+
bool isResetRequired(void *dev, zes_event_type_flags_t &pEvent);
2740
bool checkDeviceDetachEvent(zes_event_type_flags_t &pEvent);
2841
bool checkDeviceAttachEvent(zes_event_type_flags_t &pEvent);
29-
bool checkIfMemHealthChanged(zes_event_type_flags_t &pEvent);
30-
std::string pciIdPathTag;
31-
zes_mem_health_t memHealthAtEventRegister = ZES_MEM_HEALTH_UNKNOWN;
42+
bool checkIfMemHealthChanged(void *dev, zes_event_type_flags_t &pEvent);
43+
bool listenSystemEvents(zes_event_type_flags_t *pEvents, uint32_t count, std::vector<zes_event_type_flags_t> &registeredEvents, zes_device_handle_t *phDevices, uint64_t timeout);
3244

3345
private:
34-
FsAccess *pFsAccess = nullptr;
35-
SysfsAccess *pSysfsAccess = nullptr;
36-
static const std::string varFs;
37-
static const std::string detachEvent;
38-
static const std::string attachEvent;
39-
zes_event_type_flags_t registeredEvents = 0;
46+
std::map<SysmanDeviceImp *, zes_event_type_flags_t> deviceEventsMap;
47+
std::string action;
48+
static const std::string add;
49+
static const std::string remove;
50+
static const std::string change;
51+
static const std::string unbind;
52+
static const std::string bind;
53+
static bool checkRasEventOccured(Ras *rasHandle);
54+
std::once_flag initEventsOnce;
55+
void init();
4056
};
4157

4258
} // namespace L0

0 commit comments

Comments
 (0)