On 2/17/19 9:44 AM, Bernd Edlinger wrote: > > + if (crng_ready() && !blocking_pool.initialized &&
After some more debugging I realize that blocking_pool.initialized is true after 128 bits of input entropy, but that is only 80 bits credited, due to the asymptotic 3/4 crediting formula. I see that will also enable the code path below: if (entropy_bits > random_write_wakeup_bits && r->initialized && r->entropy_total >= 2*random_read_wakeup_bits) { struct entropy_store *other = &blocking_pool; if (other->entropy_count <= 3 * other->poolinfo->poolfracbits / 4) { schedule_work(&other->push_work); r->entropy_total = 0; } when random_write_wakeup_bits is below 80, and random_read_wakeup_bits is also smallish. This depletes the input_pool in favor of the blocking pool, while we are actually waiting for the input_pool to reach 128 bits security strength, in order to seed the CRNG. I am testing a new version and will post it later today. Sorry for all the back-and forth. Bernd.