Merge pull request #7084

06e6c8b crypto: fix constant randomx exceptions in large page allocator (moneromooo-monero)
This commit is contained in:
luigi1111 2022-03-02 18:50:37 -05:00
commit 5a1c060632
No known key found for this signature in database
GPG Key ID: F4ACA0183641E010

View File

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