On 2022-02-14 11:17:20 [+0100], Jason A. Donenfeld wrote: > On 2/14/22, Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> wrote: > > to > > | - Does anything anywhere call get_random_xx() before the worker has a > > | chance to run? > > > > Once you queue a work item I don't think that the scheduler needs to put > > it on the CPU right away. It may have already have other tasks waiting > > including some with a RT priority. > > Also, the lock is irqsave() so they can be users in an interrupt > > handler. I remember the original reason why I made it irqsave is because > > something did kmalloc() and SLUB somehow asked for random bits. > > Right. So there are two sides of the questions: 1) how bad is this > actual race, and are there any drivers that do regularly get bit by > this? 2) There's a largeish window between workqueue_init_early() > setting up the system highprio workqueue, and workqueue_init() > enabling queued workers to actually run. Interrupts also get enabled > in the interim. Does anything get bit by that window? This is only important during boot-up, right? Otherwise it just extracts entropy from the pool. I posted numbers earlier on where the work go scheduled and the three or four interrupts came in before the work-item was scheduled. I could send you the diff if you want to up it on some machines. > Jason Sebastian