Messages in this thread | | | From | "Jason A. Donenfeld" <> | Date | Mon, 1 Aug 2022 16:30:03 +0200 | Subject | Re: [PATCH v4] lib/vsprintf: defer filling siphash key on RT |
| |
Hi Sebastian,
On Mon, Aug 1, 2022 at 4:25 PM Sebastian Andrzej Siewior <bigeasy@linutronix.de> wrote: > > On 2022-08-01 15:44:12 [+0200], Jason A. Donenfeld wrote: > > Hey again, > Hi Jason, > > > By the way, another option that would be fine with me would be to make > > random.c use all raw spinlocks. From a non-RT perspective, that wouldn't > > change the codegen at all, so it doesn't make a huge difference to me. > > From an RT perspective, it would presumably fix a lot of these issues, > > and enable randomness to be available in any context, which is maybe > > what we want anyway. From an RT-safety point of view, I suspect doing > > this might actually be okay, because the locks are only ever protecting > > operations that are fixed duration CPU-bound, like generating a chacha > > block or something, not waiting for some I/O. > > > > Thoughts on that? > > That random-core change regarding random numbers broke lockdep, kasan (I > think) and now printk's %p. Each one of them appears to be exceptional > since we don't have _that_ many users asking for random numbers in > atomic context.
Actually, the printk %p case was caused by something different than the other. This used to be initialized with a clunky notifier callback mechanism, which I got rid of, replacing it with this direct thing. It's this direct thing that's now causing problems on RT.
> Making the locks raw would indeed solve all the issues at once. Last > time I was looking into this, would include three locks and I tried to > trigger the worst-case via "re-seed" and this was visible back then. > After the rework you did back thinks looked good.
I actually just sent a patch for that to you a second ago: https://lore.kernel.org/lkml/20220801142530.133007-1-Jason@zx2c4.com/
It's only two locks, and usage seems pretty constrained in a good way. So okay, if you're on board, let's just do that, and then printk can stay the same.
Jason
| |