diff --git a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp index 84d2c57fa..318928cd9 100644 --- a/src/backend/cpu/platform/BasicCpuInfo_arm.cpp +++ b/src/backend/cpu/platform/BasicCpuInfo_arm.cpp @@ -1,6 +1,6 @@ /* XMRig - * Copyright (c) 2018-2020 SChernykh - * Copyright (c) 2016-2020 XMRig + * Copyright (c) 2018-2021 SChernykh + * Copyright (c) 2016-2021 XMRig * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,6 +50,11 @@ extern String cpu_name_arm(); xmrig::BasicCpuInfo::BasicCpuInfo() : m_threads(std::thread::hardware_concurrency()) { + m_units.resize(m_threads); + for (int32_t i = 0; i < static_cast(m_threads); ++i) { + m_units[i] = i; + } + # ifdef XMRIG_ARMv8 memcpy(m_brand, "ARMv8", 5); # else diff --git a/src/backend/cpu/platform/HwlocCpuInfo.cpp b/src/backend/cpu/platform/HwlocCpuInfo.cpp index 6ef742299..b1dd7ca92 100644 --- a/src/backend/cpu/platform/HwlocCpuInfo.cpp +++ b/src/backend/cpu/platform/HwlocCpuInfo.cpp @@ -125,8 +125,6 @@ static inline bool isCacheExclusive(hwloc_obj_t obj) xmrig::HwlocCpuInfo::HwlocCpuInfo() { - m_threads = 0; - hwloc_topology_init(&m_topology); hwloc_topology_load(m_topology); @@ -278,10 +276,8 @@ xmrig::CpuThreads xmrig::HwlocCpuInfo::allThreads(const Algorithm &algorithm, ui CpuThreads threads; threads.reserve(m_threads); - hwloc_obj_t pu = nullptr; - - while ((pu = hwloc_get_next_obj_by_type(m_topology, HWLOC_OBJ_PU, pu)) != nullptr) { - threads.add(pu->os_index, 0); + for (const int32_t pu : m_units) { + threads.add(pu, 0); } if (threads.isEmpty()) { diff --git a/src/hw/dmi/dmi.cmake b/src/hw/dmi/dmi.cmake index 5140692a7..b6f91616b 100644 --- a/src/hw/dmi/dmi.cmake +++ b/src/hw/dmi/dmi.cmake @@ -1,5 +1,7 @@ -if (WITH_DMI) - set(WITH_DMI XMRIG_OS_WIN OR XMRIG_OS_LINUX OR XMRIG_OS_FREEBSD OR (XMRIG_OS_MACOS AND NOT XMRIG_ARM)) +if (WITH_DMI AND (XMRIG_OS_WIN OR XMRIG_OS_LINUX OR XMRIG_OS_FREEBSD OR (XMRIG_OS_MACOS AND NOT XMRIG_ARM))) + set(WITH_DMI ON) +else() + set(WITH_DMI OFF) endif() if (WITH_DMI)