From: Mattias Rönnblom Date: Fri, 28 Jun 2019 21:08:46 +0000 (+0200) Subject: eal: use 32-bit RDSEED to allow 32-bit x86 usage X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=e4dd3bddd1953a70302243a51526917f986d471f;p=dpdk.git eal: use 32-bit RDSEED to allow 32-bit x86 usage When seeding the pseudo-random number generator, replace the 64-bit RDSEED with two 32-bit RDSEED instructions to allow building and running on 32-bit x86. Fixes: faf8fd252785 ("eal: improve entropy for initial PRNG seed") Reported-by: Ferruh Yigit Signed-off-by: Mattias Rönnblom --- diff --git a/lib/librte_eal/common/rte_random.c b/lib/librte_eal/common/rte_random.c index 3d9b9b7d83..f51708b308 100644 --- a/lib/librte_eal/common/rte_random.c +++ b/lib/librte_eal/common/rte_random.c @@ -189,14 +189,13 @@ __rte_random_initial_seed(void) return ge_seed; #endif #ifdef RTE_MACHINE_CPUFLAG_RDSEED - unsigned int rdseed_rc; - unsigned long long rdseed_seed; + unsigned int rdseed_low; + unsigned int rdseed_high; /* first fallback: rdseed instruction, if available */ - rdseed_rc = _rdseed64_step(&rdseed_seed); - - if (rdseed_rc == 1) - return (uint64_t)rdseed_seed; + if (_rdseed32_step(&rdseed_low) == 1 && + _rdseed32_step(&rdseed_high) == 1) + return (uint64_t)rdseed_low | ((uint64_t)rdseed_high << 32); #endif /* second fallback: seed using rdtsc */ return rte_get_timer_cycles();