aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/rx-slow-hash.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/crypto/rx-slow-hash.c')
-rw-r--r--src/crypto/rx-slow-hash.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/crypto/rx-slow-hash.c b/src/crypto/rx-slow-hash.c
index a7a459ad3..969bf8a0f 100644
--- a/src/crypto/rx-slow-hash.c
+++ b/src/crypto/rx-slow-hash.c
@@ -62,6 +62,7 @@ static CTHR_MUTEX_TYPE rx_dataset_mutex = CTHR_MUTEX_INIT;
static rx_state rx_s[2] = {{CTHR_MUTEX_INIT,{0},0,0},{CTHR_MUTEX_INIT,{0},0,0}};
static randomx_dataset *rx_dataset;
+static int rx_dataset_nomem;
static uint64_t rx_dataset_height;
static THREADV randomx_vm *rx_vm = NULL;
@@ -246,20 +247,25 @@ void rx_slow_hash(const uint64_t mainheight, const uint64_t seedheight, const ch
}
if (miners) {
CTHR_MUTEX_LOCK(rx_dataset_mutex);
- if (rx_dataset == NULL) {
- rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_LARGE_PAGES);
+ if (!rx_dataset_nomem) {
if (rx_dataset == NULL) {
- mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX dataset");
- rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_DEFAULT);
+ rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_LARGE_PAGES);
+ if (rx_dataset == NULL) {
+ mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX dataset");
+ rx_dataset = randomx_alloc_dataset(RANDOMX_FLAG_DEFAULT);
+ }
+ if (rx_dataset != NULL)
+ rx_initdata(rx_sp->rs_cache, miners, seedheight);
}
- if (rx_dataset != NULL)
- rx_initdata(rx_sp->rs_cache, miners, seedheight);
}
if (rx_dataset != NULL)
flags |= RANDOMX_FLAG_FULL_MEM;
else {
miners = 0;
- mwarning(RX_LOGCAT, "Couldn't allocate RandomX dataset for miner");
+ if (!rx_dataset_nomem) {
+ rx_dataset_nomem = 1;
+ mwarning(RX_LOGCAT, "Couldn't allocate RandomX dataset for miner");
+ }
}
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
}
@@ -309,5 +315,6 @@ void rx_stop_mining(void) {
rx_dataset = NULL;
randomx_release_dataset(rd);
}
+ rx_dataset_nomem = 0;
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
}