From f760731173a0e607ad145bbd354c0038bdb25730 Mon Sep 17 00:00:00 2001 From: Jaroslaw Warchulski Date: Fri, 28 Mar 2025 11:56:32 +0000 Subject: [PATCH] fix: correct queryFabricStats in WSL path Related-To: GSD-10939 Signed-off-by: Jaroslaw Warchulski --- level_zero/core/source/device/CMakeLists.txt | 10 +++------- .../device/device_imp_drm/device_imp_drm.cpp | 10 ++++++++-- .../device/device_imp_drm/device_imp_peer.cpp | 10 ++++++---- .../device/device_imp_drm/device_imp_peer.h | 16 ++++++++++++++++ .../device_imp_drm_or_wddm.cpp | 14 +++++++++++++- .../core/source/device/device_imp_peer_stub.cpp | 16 ---------------- .../device/device_imp_wddm/device_imp_wddm.cpp | 6 +++++- 7 files changed, 51 insertions(+), 31 deletions(-) create mode 100644 level_zero/core/source/device/device_imp_drm/device_imp_peer.h delete mode 100644 level_zero/core/source/device/device_imp_peer_stub.cpp diff --git a/level_zero/core/source/device/CMakeLists.txt b/level_zero/core/source/device/CMakeLists.txt index c11fd2665d..d34a3de7ea 100644 --- a/level_zero/core/source/device/CMakeLists.txt +++ b/level_zero/core/source/device/CMakeLists.txt @@ -1,5 +1,5 @@ # -# Copyright (C) 2023-2024 Intel Corporation +# Copyright (C) 2023-2025 Intel Corporation # # SPDX-License-Identifier: MIT # @@ -17,14 +17,10 @@ target_sources(${L0_STATIC_LIB_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/device_imp.h ) -if(UNIX AND NEO_ENABLE_I915_PRELIM_DETECTION) +if(UNIX) target_sources(${L0_STATIC_LIB_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/device_imp_drm/device_imp_peer.cpp - ) -else() - target_sources(${L0_STATIC_LIB_NAME} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/device_imp_peer_stub.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/device_imp_drm/device_imp_peer.h ) endif() diff --git a/level_zero/core/source/device/device_imp_drm/device_imp_drm.cpp b/level_zero/core/source/device/device_imp_drm/device_imp_drm.cpp index ec1a6eb778..1f606bab8b 100644 --- a/level_zero/core/source/device/device_imp_drm/device_imp_drm.cpp +++ b/level_zero/core/source/device/device_imp_drm/device_imp_drm.cpp @@ -1,17 +1,19 @@ /* - * Copyright (C) 2022-2024 Intel Corporation + * Copyright (C) 2022-2025 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "level_zero/core/source/device/device_imp.h" +#include "level_zero/core/source/device/device_imp_drm/device_imp_peer.h" namespace L0 { ze_result_t DeviceImp::queryDeviceLuid(ze_device_luid_ext_properties_t *deviceLuidProperties) { return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; } + uint32_t DeviceImp::queryDeviceNodeMask() { return 1; } @@ -25,4 +27,8 @@ ze_result_t DeviceImp::getExternalMemoryProperties(ze_device_external_memory_pro return ZE_RESULT_SUCCESS; } -} // namespace L0 \ No newline at end of file +ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { + return queryFabricStatsDrm(this, pPeerDevice, latency, bandwidth); +} + +} // namespace L0 diff --git a/level_zero/core/source/device/device_imp_drm/device_imp_peer.cpp b/level_zero/core/source/device/device_imp_drm/device_imp_peer.cpp index ab69900a25..173c6b5e52 100644 --- a/level_zero/core/source/device/device_imp_drm/device_imp_peer.cpp +++ b/level_zero/core/source/device/device_imp_drm/device_imp_peer.cpp @@ -1,10 +1,12 @@ /* - * Copyright (C) 2022-2023 Intel Corporation + * Copyright (C) 2022-2025 Intel Corporation * * SPDX-License-Identifier: MIT * */ +#include "level_zero/core/source/device/device_imp_drm/device_imp_peer.h" + #include "shared/source/debug_settings/debug_settings_manager.h" #include "shared/source/execution_environment/root_device_environment.h" #include "shared/source/os_interface/linux/drm_neo.h" @@ -22,7 +24,7 @@ const std::string iafDirectoryLegacy = "iaf."; const std::string iafDirectory = "i915.iaf."; const std::string fabricIdFile = "/iaf_fabric_id"; -ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { +ze_result_t queryFabricStatsDrm(DeviceImp *pSourceDevice, DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { auto &osPeerInterface = pPeerDevice->getNEODevice()->getRootDeviceEnvironment().osInterface; if (osPeerInterface == nullptr) { @@ -57,7 +59,7 @@ ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latenc size_t end = 0; uint32_t fabricId = static_cast(std::stoul(fabricIdStr, &end, 16)); - auto &osInterface = this->getNEODevice()->getRootDeviceEnvironment().osInterface; + auto &osInterface = pSourceDevice->getNEODevice()->getRootDeviceEnvironment().osInterface; auto pDrm = osInterface->getDriverModel()->as(); bool success = pDrm->getIoctlHelper()->getFabricLatency(fabricId, latency, bandwidth); if (success == false) { @@ -66,7 +68,7 @@ ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latenc PRINT_DEBUG_STRING(NEO::debugManager.flags.PrintDebugMessages.get(), stderr, "Connection detected between device %d and peer device %d: latency %d hops, bandwidth %d GBPS\n", - this->getRootDeviceIndex(), pPeerDevice->getRootDeviceIndex(), latency, bandwidth); + pSourceDevice->getRootDeviceIndex(), pPeerDevice->getRootDeviceIndex(), latency, bandwidth); return ZE_RESULT_SUCCESS; } diff --git a/level_zero/core/source/device/device_imp_drm/device_imp_peer.h b/level_zero/core/source/device/device_imp_drm/device_imp_peer.h new file mode 100644 index 0000000000..cdfb384a3e --- /dev/null +++ b/level_zero/core/source/device/device_imp_drm/device_imp_peer.h @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2025 Intel Corporation + * + * SPDX-License-Identifier: MIT + * + */ + +#pragma once +#include + +namespace L0 { +struct DeviceImp; + +ze_result_t queryFabricStatsDrm(DeviceImp *pSourceDevice, DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth); + +} // namespace L0 diff --git a/level_zero/core/source/device/device_imp_drm_or_wddm/device_imp_drm_or_wddm.cpp b/level_zero/core/source/device/device_imp_drm_or_wddm/device_imp_drm_or_wddm.cpp index f456fdad7f..9143c49573 100644 --- a/level_zero/core/source/device/device_imp_drm_or_wddm/device_imp_drm_or_wddm.cpp +++ b/level_zero/core/source/device/device_imp_drm_or_wddm/device_imp_drm_or_wddm.cpp @@ -14,6 +14,7 @@ #include "shared/source/os_interface/windows/wddm/wddm.h" #include "level_zero/core/source/device/device_imp.h" +#include "level_zero/core/source/device/device_imp_drm/device_imp_peer.h" namespace L0 { @@ -67,4 +68,15 @@ ze_result_t DeviceImp::getExternalMemoryProperties(ze_device_external_memory_pro return ZE_RESULT_SUCCESS; } -} // namespace L0 \ No newline at end of file +ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { + NEO::Device *activeDevice = getActiveDevice(); + if (activeDevice->getRootDeviceEnvironment().osInterface) { + NEO::DriverModelType driverType = neoDevice->getRootDeviceEnvironment().osInterface->getDriverModel()->getDriverModelType(); + if (driverType == NEO::DriverModelType::drm) { + return queryFabricStatsDrm(this, pPeerDevice, latency, bandwidth); + } + } + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; +} + +} // namespace L0 diff --git a/level_zero/core/source/device/device_imp_peer_stub.cpp b/level_zero/core/source/device/device_imp_peer_stub.cpp deleted file mode 100644 index 58292f76f1..0000000000 --- a/level_zero/core/source/device/device_imp_peer_stub.cpp +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright (C) 2022 Intel Corporation - * - * SPDX-License-Identifier: MIT - * - */ - -#include "level_zero/core/source/device/device_imp.h" - -namespace L0 { - -ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { - return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; -} - -} // namespace L0 \ No newline at end of file diff --git a/level_zero/core/source/device/device_imp_wddm/device_imp_wddm.cpp b/level_zero/core/source/device/device_imp_wddm/device_imp_wddm.cpp index 8d3acf59da..01db3d6fb2 100644 --- a/level_zero/core/source/device/device_imp_wddm/device_imp_wddm.cpp +++ b/level_zero/core/source/device/device_imp_wddm/device_imp_wddm.cpp @@ -42,4 +42,8 @@ ze_result_t DeviceImp::getExternalMemoryProperties(ze_device_external_memory_pro return ZE_RESULT_SUCCESS; } -} // namespace L0 \ No newline at end of file +ze_result_t DeviceImp::queryFabricStats(DeviceImp *pPeerDevice, uint32_t &latency, uint32_t &bandwidth) { + return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE; +} + +} // namespace L0