diff --git a/level_zero/tools/source/sysman/events/linux/os_events_imp.cpp b/level_zero/tools/source/sysman/events/linux/os_events_imp.cpp index af810ad46d..295afdbea9 100644 --- a/level_zero/tools/source/sysman/events/linux/os_events_imp.cpp +++ b/level_zero/tools/source/sysman/events/linux/os_events_imp.cpp @@ -18,7 +18,9 @@ const std::string LinuxEventsImp::attachEvent("add"); bool LinuxEventsImp::isResetRequired(zes_event_type_flags_t &pEvent) { zes_device_state_t pState = {}; - pLinuxSysmanImp->getSysmanDeviceImp()->deviceGetState(&pState); + if (pLinuxSysmanImp->getSysmanDeviceImp()->deviceGetState(&pState) != ZE_RESULT_SUCCESS) { + return false; + } if (pState.reset) { pEvent |= ZES_EVENT_TYPE_FLAG_DEVICE_RESET_REQUIRED; return true; diff --git a/level_zero/tools/source/sysman/global_operations/linux/CMakeLists.txt b/level_zero/tools/source/sysman/global_operations/linux/CMakeLists.txt index 4b5aef15e2..a8c890498f 100644 --- a/level_zero/tools/source/sysman/global_operations/linux/CMakeLists.txt +++ b/level_zero/tools/source/sysman/global_operations/linux/CMakeLists.txt @@ -6,7 +6,6 @@ set(L0_SRCS_TOOLS_GLOBAL_OPERATIONS_LINUX ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/os_global_operations_helper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_global_operations_imp.cpp ${CMAKE_CURRENT_SOURCE_DIR}/os_global_operations_imp.h ) diff --git a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_helper.cpp b/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_helper.cpp deleted file mode 100644 index 52ed4f6979..0000000000 --- a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_helper.cpp +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (C) 2020-2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "level_zero/core/source/device/device_imp.h" -#include "level_zero/tools/source/sysman/global_operations/global_operations_imp.h" -#include "level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h" -#include "level_zero/tools/source/sysman/linux/fs_access.h" -#include "level_zero/tools/source/sysman/sysman_const.h" - -namespace L0 { -void LinuxGlobalOperationsImp::getRepairStatus(zes_device_state_t *pState) { -} -} // namespace L0 \ No newline at end of file diff --git a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.cpp b/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.cpp index 3025359ba8..91701d9da4 100644 --- a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.cpp +++ b/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.cpp @@ -390,23 +390,20 @@ ze_result_t LinuxGlobalOperationsImp::scanProcessesState(std::vectorread(ueventWedgedFile, valWedged)) { - if (valWedged != 0) { - pState->reset |= ZES_RESET_REASON_FLAG_WEDGED; - } - } -} ze_result_t LinuxGlobalOperationsImp::deviceGetState(zes_device_state_t *pState) { - memset(pState, 0, sizeof(zes_device_state_t)); - pState->repaired = ZES_REPAIR_STATUS_UNSUPPORTED; - getWedgedStatus(pState); - getRepairStatus(pState); - return ZE_RESULT_SUCCESS; + uint32_t valWedged = 0; + ze_result_t result = pFsAccess->read(ueventWedgedFile, valWedged); + if (result != ZE_RESULT_SUCCESS) { + if (result == ZE_RESULT_ERROR_NOT_AVAILABLE) + result = ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; + return result; + } + pState->reset = 0; + if (valWedged != 0) { + pState->reset |= ZES_RESET_REASON_FLAG_WEDGED; + } + return result; } - LinuxGlobalOperationsImp::LinuxGlobalOperationsImp(OsSysman *pOsSysman) { pLinuxSysmanImp = static_cast(pOsSysman); @@ -414,7 +411,6 @@ LinuxGlobalOperationsImp::LinuxGlobalOperationsImp(OsSysman *pOsSysman) { pProcfsAccess = &pLinuxSysmanImp->getProcfsAccess(); pFsAccess = &pLinuxSysmanImp->getFsAccess(); pDevice = pLinuxSysmanImp->getDeviceHandle(); - pFwInterface = pLinuxSysmanImp->getFwUtilInterface(); } OsGlobalOperations *OsGlobalOperations::create(OsSysman *pOsSysman) { diff --git a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h b/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h index 7062a1b5a4..14e4fc43be 100644 --- a/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h +++ b/level_zero/tools/source/sysman/global_operations/linux/os_global_operations_imp.h @@ -21,8 +21,6 @@ class LinuxGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMo void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) override; void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) override; void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) override; - void getWedgedStatus(zes_device_state_t *pState) override; - void getRepairStatus(zes_device_state_t *pState) override; Device *getDevice() override; ze_result_t reset(ze_bool_t force) override; ze_result_t scanProcessesState(std::vector &pProcessList) override; @@ -37,7 +35,6 @@ class LinuxGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMo SysfsAccess *pSysfsAccess = nullptr; LinuxSysmanImp *pLinuxSysmanImp = nullptr; Device *pDevice = nullptr; - FirmwareUtil *pFwInterface = nullptr; int resetTimeout = 10000; // in milliseconds diff --git a/level_zero/tools/source/sysman/global_operations/os_global_operations.h b/level_zero/tools/source/sysman/global_operations/os_global_operations.h index ce0f88d1cb..954b876848 100644 --- a/level_zero/tools/source/sysman/global_operations/os_global_operations.h +++ b/level_zero/tools/source/sysman/global_operations/os_global_operations.h @@ -24,8 +24,6 @@ class OsGlobalOperations { virtual void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) = 0; virtual void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) = 0; virtual void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) = 0; - virtual void getWedgedStatus(zes_device_state_t *pState) = 0; - virtual void getRepairStatus(zes_device_state_t *pState) = 0; virtual Device *getDevice() = 0; virtual ze_result_t reset(ze_bool_t force) = 0; virtual ze_result_t scanProcessesState(std::vector &pProcessList) = 0; diff --git a/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.cpp b/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.cpp index 92a7e94672..2303f4f043 100644 --- a/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.cpp +++ b/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.cpp @@ -31,10 +31,6 @@ void WddmGlobalOperationsImp::getVendorName(char (&vendorName)[ZES_STRING_PROPER void WddmGlobalOperationsImp::getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) { } -void WddmGlobalOperationsImp::getWedgedStatus(zes_device_state_t *pState) { -} -void WddmGlobalOperationsImp::getRepairStatus(zes_device_state_t *pState) { -} ze_result_t WddmGlobalOperationsImp::reset(ze_bool_t force) { uint32_t value = 0; KmdSysman::RequestProperty request; diff --git a/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.h b/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.h index 2ecbb45fdb..582c3a0292 100644 --- a/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.h +++ b/level_zero/tools/source/sysman/global_operations/windows/os_global_operations_imp.h @@ -22,8 +22,6 @@ class WddmGlobalOperationsImp : public OsGlobalOperations, NEO::NonCopyableOrMov void getModelName(char (&modelName)[ZES_STRING_PROPERTY_SIZE]) override; void getVendorName(char (&vendorName)[ZES_STRING_PROPERTY_SIZE]) override; void getDriverVersion(char (&driverVersion)[ZES_STRING_PROPERTY_SIZE]) override; - void getWedgedStatus(zes_device_state_t *pState) override; - void getRepairStatus(zes_device_state_t *pState) override; Device *getDevice() override; ze_result_t reset(ze_bool_t force) override; ze_result_t scanProcessesState(std::vector &pProcessList) override; diff --git a/level_zero/tools/source/sysman/linux/firmware_util/CMakeLists.txt b/level_zero/tools/source/sysman/linux/firmware_util/CMakeLists.txt index b022d380e7..ab52626aef 100644 --- a/level_zero/tools/source/sysman/linux/firmware_util/CMakeLists.txt +++ b/level_zero/tools/source/sysman/linux/firmware_util/CMakeLists.txt @@ -6,22 +6,17 @@ if(libigsc_FOUND) set(L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/firmware_util_imp.cpp - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/firmware_util_imp.h - ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_base.h - ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_extended.h + ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp.h ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util.h ) else() set(L0_SRCS_TOOLS_SYSMAN_LINUX_FIRMWARE_UTIL ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_imp_stub.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_base.h - ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_extended.h ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util.h ) endif() -configure_file(${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/firmware_util_extended.h ${CMAKE_CURRENT_SOURCE_DIR}/firmware_util_extended.h) if(UNIX) target_sources(${L0_STATIC_LIB_NAME} diff --git a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util.h b/level_zero/tools/source/sysman/linux/firmware_util/firmware_util.h index 92d3bf553e..a8fc679a8a 100644 --- a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util.h +++ b/level_zero/tools/source/sysman/linux/firmware_util/firmware_util.h @@ -10,16 +10,26 @@ #include "shared/source/helpers/non_copyable_or_moveable.h" #include "level_zero/core/source/device/device.h" -#include "level_zero/tools/source/sysman/linux/firmware_util/firmware_util_base.h" -#include "level_zero/tools/source/sysman/linux/firmware_util/firmware_util_extended.h" +#ifdef IGSC_PRESENT +#include "igsc_lib.h" +#else +typedef struct igsc_device_info { +} igsc_device_info_t; +#endif #include #include namespace L0 { -class FirmwareUtil : public virtual FirmwareUtilBase, public virtual FirmwareUtilExtended { +class FirmwareUtil { public: static FirmwareUtil *create(); + virtual ze_result_t fwDeviceInit() = 0; + virtual ze_result_t getFirstDevice(igsc_device_info *) = 0; + virtual ze_result_t fwGetVersion(std::string &fwVersion) = 0; + virtual ze_result_t opromGetVersion(std::string &fwVersion) = 0; + virtual ze_result_t fwFlashGSC(void *pImage, uint32_t size) = 0; + virtual ze_result_t fwFlashOprom(void *pImage, uint32_t size) = 0; virtual ~FirmwareUtil() = default; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_base.h b/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_base.h deleted file mode 100644 index c93a5bc1fb..0000000000 --- a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_base.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (C) 2020-2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma once - -#include "shared/source/helpers/non_copyable_or_moveable.h" - -#include "level_zero/core/source/device/device.h" - -#ifdef IGSC_PRESENT -#include "igsc_lib.h" -#else -typedef struct igsc_device_info { -} igsc_device_info_t; -#endif - -namespace L0 { -class FirmwareUtilBase { - public: - virtual ze_result_t fwDeviceInit() = 0; - virtual ze_result_t getFirstDevice(igsc_device_info *) = 0; - virtual ze_result_t fwGetVersion(std::string &fwVersion) = 0; - virtual ze_result_t opromGetVersion(std::string &fwVersion) = 0; - virtual ze_result_t fwFlashGSC(void *pImage, uint32_t size) = 0; - virtual ze_result_t fwFlashOprom(void *pImage, uint32_t size) = 0; -}; -} // namespace L0 diff --git a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_extended.h b/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_extended.h deleted file mode 100644 index bee8b52c2e..0000000000 --- a/level_zero/tools/source/sysman/linux/firmware_util/firmware_util_extended.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (C) 2020-2021 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#pragma once - -#include "shared/source/helpers/non_copyable_or_moveable.h" - -#include "level_zero/core/source/device/device.h" - -#ifdef IGSC_PRESENT -#include "igsc_lib.h" -#endif - -namespace L0 { -class FirmwareUtilExtended { - public: -}; -} // namespace L0 diff --git a/level_zero/tools/test/unit_tests/sources/sysman/diagnostics/linux/CMakeLists.txt b/level_zero/tools/test/unit_tests/sources/sysman/diagnostics/linux/CMakeLists.txt index 15a677bc56..5f6ebae215 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/diagnostics/linux/CMakeLists.txt +++ b/level_zero/tools/test/unit_tests/sources/sysman/diagnostics/linux/CMakeLists.txt @@ -8,7 +8,7 @@ if(UNIX) target_sources(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/mock_zes_sysman_diagnostics.h - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/test_zes_sysman_diagnostics.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mock_zes_sysman_diagnostics.h + ${CMAKE_CURRENT_SOURCE_DIR}/test_zes_sysman_diagnostics.cpp ) endif() diff --git a/level_zero/tools/test/unit_tests/sources/sysman/firmware/linux/CMakeLists.txt b/level_zero/tools/test/unit_tests/sources/sysman/firmware/linux/CMakeLists.txt index c03ecde713..3c66816b8e 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/firmware/linux/CMakeLists.txt +++ b/level_zero/tools/test/unit_tests/sources/sysman/firmware/linux/CMakeLists.txt @@ -8,7 +8,7 @@ if(UNIX) target_sources(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/mock_zes_sysman_firmware.h - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/test_zes_sysman_firmware.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mock_zes_sysman_firmware.h + ${CMAKE_CURRENT_SOURCE_DIR}/test_zes_sysman_firmware.cpp ) endif() diff --git a/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/CMakeLists.txt b/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/CMakeLists.txt index 3c624b615c..1b97207b05 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/CMakeLists.txt +++ b/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/CMakeLists.txt @@ -8,7 +8,7 @@ if(UNIX) target_sources(${TARGET_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/test_zes_global_operations.cpp - ${CMAKE_CURRENT_SOURCE_DIR}${BRANCH_DIR_SUFFIX}/mock_global_operations.h + ${CMAKE_CURRENT_SOURCE_DIR}/test_zes_global_operations.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/mock_global_operations.h ) endif() diff --git a/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/test_zes_global_operations.cpp b/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/test_zes_global_operations.cpp index 61e7bd5d10..4547f8d7f1 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/test_zes_global_operations.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/global_operations/linux/test_zes_global_operations.cpp @@ -268,6 +268,20 @@ TEST_F(SysmanGlobalOperationsFixture, GivenDeviceIsNotWedgedWhenCallingGetDevice EXPECT_EQ(0u, deviceState.reset); } +TEST_F(SysmanGlobalOperationsFixture, GivenWedgedFileNotFoundWhenCallingGetDeviceStateThenZeResultErrorUnsupportedFeatureIsReturned) { + ON_CALL(*pFsAccess.get(), read(_, Matcher(_))) + .WillByDefault(::testing::Invoke(pFsAccess.get(), &Mock::getValWedgedFileNotFound)); + zes_device_state_t deviceState; + EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, zesDeviceGetState(device, &deviceState)); +} + +TEST_F(SysmanGlobalOperationsFixture, GivenWedgedFileInsufficientPermissionsWhenCallingGetDeviceStateThenZeResultErrorInsufficientPermissionsIsReturned) { + ON_CALL(*pFsAccess.get(), read(_, Matcher(_))) + .WillByDefault(::testing::Invoke(pFsAccess.get(), &Mock::getValWedgedFileInsufficientPermissions)); + zes_device_state_t deviceState; + EXPECT_EQ(ZE_RESULT_ERROR_INSUFFICIENT_PERMISSIONS, zesDeviceGetState(device, &deviceState)); +} + TEST_F(SysmanGlobalOperationsFixture, GivenPermissionDeniedWhenCallingGetDeviceStateThenZeResultErrorInsufficientPermissionsIsReturned) { ON_CALL(*pSysfsAccess.get(), getRealPath(_, Matcher(_))) .WillByDefault(::testing::Invoke(pSysfsAccess.get(), &Mock::getRealPathVal));