Skip to content

Commit 699b504

Browse files
sysman: add support to enable IFR status.
Signed-off-by: Vilvaraj, T J Vivek <[email protected]>
1 parent be1346f commit 699b504

20 files changed

+151
-69
lines changed

level_zero/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,13 @@ if(BUILD_WITH_L0)
8686

8787
if(UNIX)
8888
# Firmware Update Library
89-
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tools/source/sysman/linux/firmware_util")
89+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/tools/source/sysman/linux/firmware_util${BRANCH_DIR_SUFFIX}")
9090
find_package(libigsc)
9191
if(libigsc_LIBRARIES)
9292
set(libigsc_FOUND TRUE)
9393
add_definitions(-DIGSC_PRESENT=$(libigsc_FOUND))
9494
message(STATUS "libigsc Library headers directory: ${libigsc_INCLUDE_DIR}")
95+
message(STATUS "libigsc version: ${libigsc_VERSION}")
9596
else()
9697
message(STATUS "libigsc Library headers not available. Building without")
9798
endif()

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ const std::string LinuxEventsImp::attachEvent("add");
1818

1919
bool LinuxEventsImp::isResetRequired(zes_event_type_flags_t &pEvent) {
2020
zes_device_state_t pState = {};
21-
if (pLinuxSysmanImp->getSysmanDeviceImp()->deviceGetState(&pState) != ZE_RESULT_SUCCESS) {
22-
return false;
23-
}
21+
pLinuxSysmanImp->getSysmanDeviceImp()->deviceGetState(&pState);
2422
if (pState.reset) {
2523
pEvent |= ZES_EVENT_TYPE_FLAG_DEVICE_RESET_REQUIRED;
2624
return true;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
set(L0_SRCS_TOOLS_GLOBAL_OPERATIONS_LINUX
88
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
9+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/os_global_operations_helper.cpp
910
${CMAKE_CURRENT_SOURCE_DIR}/os_global_operations_imp.cpp
1011
${CMAKE_CURRENT_SOURCE_DIR}/os_global_operations_imp.h
1112
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* Copyright (C) 2020-2021 Intel Corporation
3+
*
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
#include "level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h"
9+
10+
namespace L0 {
11+
void LinuxGlobalOperationsImp::getRepairStatus(zes_device_state_t *pState) {}
12+
} // namespace L0

level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -392,27 +392,31 @@ ze_result_t LinuxGlobalOperationsImp::scanProcessesState(std::vector<zes_process
392392
}
393393
return result;
394394
}
395-
ze_result_t LinuxGlobalOperationsImp::deviceGetState(zes_device_state_t *pState) {
395+
396+
void LinuxGlobalOperationsImp::getWedgedStatus(zes_device_state_t *pState) {
396397
uint32_t valWedged = 0;
397-
ze_result_t result = pFsAccess->read(ueventWedgedFile, valWedged);
398-
if (result != ZE_RESULT_SUCCESS) {
399-
if (result == ZE_RESULT_ERROR_NOT_AVAILABLE)
400-
result = ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
401-
return result;
402-
}
403-
pState->reset = 0;
404-
if (valWedged != 0) {
405-
pState->reset |= ZES_RESET_REASON_FLAG_WEDGED;
398+
if (ZE_RESULT_SUCCESS == pFsAccess->read(ueventWedgedFile, valWedged)) {
399+
if (valWedged != 0) {
400+
pState->reset |= ZES_RESET_REASON_FLAG_WEDGED;
401+
}
406402
}
407-
return result;
408403
}
404+
ze_result_t LinuxGlobalOperationsImp::deviceGetState(zes_device_state_t *pState) {
405+
memset(pState, 0, sizeof(zes_device_state_t));
406+
pState->repaired = ZES_REPAIR_STATUS_UNSUPPORTED;
407+
getWedgedStatus(pState);
408+
getRepairStatus(pState);
409+
return ZE_RESULT_SUCCESS;
410+
}
411+
409412
LinuxGlobalOperationsImp::LinuxGlobalOperationsImp(OsSysman *pOsSysman) {
410413
pLinuxSysmanImp = static_cast<LinuxSysmanImp *>(pOsSysman);
411414

412415
pSysfsAccess = &pLinuxSysmanImp->getSysfsAccess();
413416
pProcfsAccess = &pLinuxSysmanImp->getProcfsAccess();
414417
pFsAccess = &pLinuxSysmanImp->getFsAccess();
415418
pDevice = pLinuxSysmanImp->getDeviceHandle();
419+
pFwInterface = pLinuxSysmanImp->getFwUtilInterface();
416420
}
417421

418422
OsGlobalOperations *OsGlobalOperations::create(OsSysman *pOsSysman) {

level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ class LinuxGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMo
2121
void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) override;
2222
void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) override;
2323
void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) override;
24+
void getWedgedStatus(zes_device_state_t *pState) override;
25+
void getRepairStatus(zes_device_state_t *pState) override;
2426
Device *getDevice() override;
2527
ze_result_t reset(ze_bool_t force) override;
2628
ze_result_t scanProcessesState(std::vector<zes_process_state_t> &pProcessList) override;
@@ -35,6 +37,7 @@ class LinuxGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMo
3537
SysfsAccess *pSysfsAccess = nullptr;
3638
LinuxSysmanImp *pLinuxSysmanImp = nullptr;
3739
Device *pDevice = nullptr;
40+
FirmwareUtil *pFwInterface = nullptr;
3841

3942
int resetTimeout = 10000; // in milliseconds
4043

level_zero/tools/source/sysman/global_operations/os_global_operations.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class OsGlobalOperations {
2424
virtual void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) = 0;
2525
virtual void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) = 0;
2626
virtual void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) = 0;
27+
virtual void getWedgedStatus(zes_device_state_t *pState) = 0;
28+
virtual void getRepairStatus(zes_device_state_t *pState) = 0;
2729
virtual Device *getDevice() = 0;
2830
virtual ze_result_t reset(ze_bool_t force) = 0;
2931
virtual ze_result_t scanProcessesState(std::vector<zes_process_state_t> &pProcessList) = 0;

level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ void WddmGlobalOperationsImp::getVendorName(char (&vendorName)[ZES_STRING_PROPER
3131
void WddmGlobalOperationsImp::getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) {
3232
}
3333

34+
void WddmGlobalOperationsImp::getWedgedStatus(zes_device_state_t *pState) {
35+
}
36+
void WddmGlobalOperationsImp::getRepairStatus(zes_device_state_t *pState) {
37+
}
3438
ze_result_t WddmGlobalOperationsImp::reset(ze_bool_t force) {
3539
uint32_t value = 0;
3640
KmdSysman::RequestProperty request;

level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class WddmGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMov
2222
void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) override;
2323
void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) override;
2424
void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) override;
25+
void getWedgedStatus(zes_device_state_t *pState) override;
26+
void getRepairStatus(zes_device_state_t *pState) override;
2527
Device *getDevice() override;
2628
ze_result_t reset(ze_bool_t force) override;
2729
ze_result_t scanProcessesState(std::vector<zes_process_state_t> &pProcessList) override;

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,15 @@ if(libigsc_FOUND)
1010
${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp.h
1111
${CMAKE_CURRENT_SOURCE_DIR}/firmware_util.h
1212
)
13-
13+
if($(libigsc_VERSION)GREATER "2")
14+
set(L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL_HELPER
15+
${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/firmware_util_imp_helper.cpp
16+
)
17+
else()
18+
set(L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL_HELPER
19+
${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp_helper.cpp
20+
)
21+
endif()
1422
else()
1523
set(L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL
1624
${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp_stub.cpp
@@ -22,6 +30,7 @@ if(UNIX)
2230
target_sources(${L0_STATIC_LIB_NAME}
2331
PRIVATE
2432
${L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL}
33+
${L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL_HELPER}
2534
)
2635
endif()
2736

0 commit comments

Comments
 (0)