From 72c385c870137dfeccf570e99b093d7d8bd013c9 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Mon, 13 Jul 2020 20:30:44 +0200 Subject: [PATCH] Cache QoS: fix for seting MSR --- src/crypto/rx/Rx_linux.cpp | 5 ++++- src/crypto/rx/Rx_win.cpp | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/crypto/rx/Rx_linux.cpp b/src/crypto/rx/Rx_linux.cpp index 61f745848..33456333f 100644 --- a/src/crypto/rx/Rx_linux.cpp +++ b/src/crypto/rx/Rx_linux.cpp @@ -221,7 +221,10 @@ static bool wrmsr(const MsrItems& preset, const std::vector& threads, else { // Disable L3 cache for Class Of Service 1 if (!wrmsr_on_cpu(0xC91, cpu, 0, MsrItem::kNoMask)) { - return false; + // Some CPUs don't let set it to all zeros + if (!wrmsr_on_cpu(0xC91, cpu, 1, MsrItem::kNoMask)) { + return false; + } } // Assign Class Of Service 1 to current CPU core diff --git a/src/crypto/rx/Rx_win.cpp b/src/crypto/rx/Rx_win.cpp index bac3d5166..82777462a 100644 --- a/src/crypto/rx/Rx_win.cpp +++ b/src/crypto/rx/Rx_win.cpp @@ -324,7 +324,12 @@ static bool wrmsr(const MsrItems &preset, const std::vector& threads, } else { // Disable L3 cache for Class Of Service 1 - success &= wrmsr(driver, 0xC91, 0, MsrItem::kNoMask); + if (!wrmsr(driver, 0xC91, 0, MsrItem::kNoMask)) { + // Some CPUs don't let set it to all zeros + if (!wrmsr(driver, 0xC91, 1, MsrItem::kNoMask)) { + success = false; + } + } // Assign Class Of Service 1 to current CPU core success &= wrmsr(driver, 0xC8F, 1ULL << 32, MsrItem::kNoMask);