On Fri, Nov 25, 2016 at 01:49:33PM +0000, Fabien Thomas wrote:

> +     if (reseed || atomic_cmpset_int(&arc4rand_iniseed_state,
> +                     ARC4_ENTR_HAVE, ARC4_ENTR_SEED)) {
> +             ARC4_FOREACH(arc4)
> +                     arc4_randomstir(arc4);
> +     }

How about eliminating this atomic? Converting it to:

if (reseed || arc4rand_iniseed_state == ARC4_ENTR_HAVE) {
        arc4rand_iniseed_state = ARC4_ENTR_SEED;
        ARC4_FOREACH(arc4);
                arc4_randomstir(arc4);
}
should give you free performance boost. Having locked cmpxchg in main path is
not cheap (and as i can see it's really used only once,
when randomdev unblocks).

P.S. quick and dirty test gives me 10-30% of extra perfomance.

-- 
Oleg.

================================================================
=== Oleg Bulyzhin -- OBUL-RIPN -- OBUL-RIPE -- o...@rinet.ru ===
================================================================

_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to