Re: [PATCH v2] random: set fast pool count to zero in cpuhp teardown

From: Jason A. Donenfeld
Date: Mon Feb 14 2022 - 11:16:00 EST


Hi Sebastian,

On Mon, Feb 14, 2022 at 4:17 PM Sebastian Andrzej Siewior
<bigeasy@xxxxxxxxxxxxx> wrote:
> > I'd like to do only one method here, so we can set those fields in
> > startup, provided it happens early enough.
> > > > So I think it seems better to keep it before CPUHP_TIMERS_PREPARE, but
> > > > do it on startup rather than teardown. Seem reasonable? Would that
> > > > mean we zero out before IRQs are enabled?
> > > I would only zero it if the upper-most bit is there.
> >
> > I still don't quite understand: why can't we just unconditionally
> > zero, always, before CPUHP_TIMERS_PREPARE?
>
> If you have a rollback before CPUHP_TIMERS_PREPARE you don't notice it
> and your worker may have skipped this work because it run on the wrong
> CPU. Also, I *think* that if you happen to have 64 interrupts between
> CPUHP_AP_ONLINE_IDLE … CPUHP_AP_WORKQUEUE_ONLINE
>
> then the scheduled worker is unbound and may run on the "wrong" CPU.

I'm talking about in the context of unconditionally zeroing during
*startup*, just before CPUHP_TIMERS_PREPARE. That's what I sent in
this patch series:
https://lore.kernel.org/lkml/20220214151415.1108141-1-Jason@xxxxxxxxx/t/#u

Jason