crypto: fix constant randomx exceptions in large page allocator
If allocating large pages fails, we don't try again. This has the obvious drawback of not being able to use large pages if they fail once.
This commit is contained in:
parent
9aab19f349
commit
06e6c8bf4a
|
@ -63,6 +63,7 @@ static rx_state rx_s[2] = {{CTHR_MUTEX_INIT,{0},0,0},{CTHR_MUTEX_INIT,{0},0,0}};
|
||||||
|
|
||||||
static randomx_dataset *rx_dataset;
|
static randomx_dataset *rx_dataset;
|
||||||
static int rx_dataset_nomem;
|
static int rx_dataset_nomem;
|
||||||
|
static int rx_dataset_nolp;
|
||||||
static uint64_t rx_dataset_height;
|
static uint64_t rx_dataset_height;
|
||||||
static THREADV randomx_vm *rx_vm = NULL;
|
static THREADV randomx_vm *rx_vm = NULL;
|
||||||
|
|
||||||
|
@ -316,10 +317,11 @@ void rx_slow_hash(const uint64_t mainheight, const uint64_t seedheight, const ch
|
||||||
}
|
}
|
||||||
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
|
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
|
||||||
}
|
}
|
||||||
if (!(disabled_flags() & RANDOMX_FLAG_LARGE_PAGES)) {
|
if (!(disabled_flags() & RANDOMX_FLAG_LARGE_PAGES) && !rx_dataset_nolp) {
|
||||||
rx_vm = randomx_create_vm(flags | RANDOMX_FLAG_LARGE_PAGES, rx_sp->rs_cache, rx_dataset);
|
rx_vm = randomx_create_vm(flags | RANDOMX_FLAG_LARGE_PAGES, rx_sp->rs_cache, rx_dataset);
|
||||||
if(rx_vm == NULL) { //large pages failed
|
if(rx_vm == NULL) { //large pages failed
|
||||||
mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX VM");
|
mdebug(RX_LOGCAT, "Couldn't use largePages for RandomX VM");
|
||||||
|
rx_dataset_nolp = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rx_vm == NULL)
|
if (rx_vm == NULL)
|
||||||
|
@ -370,5 +372,6 @@ void rx_stop_mining(void) {
|
||||||
randomx_release_dataset(rd);
|
randomx_release_dataset(rd);
|
||||||
}
|
}
|
||||||
rx_dataset_nomem = 0;
|
rx_dataset_nomem = 0;
|
||||||
|
rx_dataset_nolp = 0;
|
||||||
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
|
CTHR_MUTEX_UNLOCK(rx_dataset_mutex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue