Re: /dev/random never refills, 1.99.7

Theodore Y. Ts'o (tytso@mit.edu)
Tue, 28 May 1996 21:52:35 -0400


From: Paul Gortmaker <gpg109@rsphy6.anu.edu.au>
Date: Mon, 27 May 1996 12:57:30 +1000 (EST)

No drivers use add_irq_randomness() at present, as I said earlier (below)

Also note that the floppy and IDE driver *look like* they use the
add_irq_randomness() because they use a SA_SAMPLE_RANDOM flag with
the call to request_irq(). But they also use SA_INTERRUPT, which means
using do_fast_IRQ() which correctly avoids calling add_irq_randomness(),
as it is only called inside do_IRQ(). In other words, using
SA_INTERRUPT|SA_SAMPLE_RANDOM is functionally equivalent to SA_INTERRUPT.
So to this point in time, it appears that *nobody* has used
add_irq_randomness() yet.

So you will have to put your keyboard in the bottom of your pet hampster's
cage overnight, or run updatedb at 2:30am to create some disk activity.

Actually, not true. The floppy and IDE drive shouldn't be setting
SA_SAMPLE_RANDOM, since they should be using randomness collected in
include/linux/blk.h, in the end_request() routine. This driver isn't
being used by the SCSI device drivers, though.

The problem that TaRDiS was having was probably that he's using SCSI
disk drives, and SCSI doesn't use the generic end_request() routine. I
have a very simple patch to fix this, and that will hopefully be going
into the next pre-2.0 kernel, along with some additional random driver
speedups and performance fixes.

- Ted