From d71a15e8da40524ed16f675550ee664ac6ece9f6 Mon Sep 17 00:00:00 2001 From: XMRig Date: Fri, 12 May 2017 15:04:04 +0300 Subject: [PATCH] Use --safe options to disable AES algo variations if CPU not support it. --- options.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/options.c b/options.c index 6163ec3b..a97c71f9 100644 --- a/options.c +++ b/options.c @@ -120,15 +120,15 @@ static const char *algo_names[] = { #ifndef XMRIG_NO_AEON static int get_cryptonight_lite_variant(int variant) { - if (variant > AEON_AV0_AUTO && variant < AEON_AV_MAX) { - return variant; + if (variant <= AEON_AV0_AUTO || variant >= AEON_AV_MAX) { + return (cpu_info.flags & CPU_FLAG_AES) ? AEON_AV2_AESNI_DOUBLE : AEON_AV4_SOFT_AES_DOUBLE; } - if (cpu_info.flags & CPU_FLAG_AES) { - return AEON_AV2_AESNI_DOUBLE; + if (opt_safe && !(cpu_info.flags & CPU_FLAG_AES) && variant <= AEON_AV2_AESNI_DOUBLE) { + return variant + 2; } - return AEON_AV4_SOFT_AES_DOUBLE; + return variant; } #endif @@ -140,15 +140,15 @@ static int get_algo_variant(int algo, int variant) { } # endif - if (variant > XMR_AV0_AUTO && variant < XMR_AV_MAX) { - return variant; + if (variant <= XMR_AV0_AUTO || variant >= XMR_AV_MAX) { + return (cpu_info.flags & CPU_FLAG_AES) ? XMR_AV1_AESNI : XMR_AV3_SOFT_AES; } - if (cpu_info.flags & CPU_FLAG_AES) { - return XMR_AV1_AESNI; + if (opt_safe && !(cpu_info.flags & CPU_FLAG_AES) && variant <= XMR_AV2_AESNI_DOUBLE) { + return variant + 2; } - return XMR_AV3_SOFT_AES; + return variant; } @@ -457,6 +457,13 @@ void parse_cmdline(int argc, char *argv[]) { if (!opt_n_threads) { opt_n_threads = get_optimal_threads_count(opt_algo, opt_double_hash, opt_max_cpu_usage); } + + if (opt_safe) { + const int count = get_optimal_threads_count(opt_algo, opt_double_hash, opt_max_cpu_usage); + if (opt_n_threads > count) { + opt_n_threads = count; + } + } }