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);