Re: [RFC] RNG rewrite...

From: Jeff Garzik
Date: Mon Oct 17 2005 - 18:31:53 EST


Deepak Saxena wrote:
On Oct 15 2005, at 06:40, Jeff Garzik was caught saying:

Deepak Saxena wrote:

rewrite the damn thing to use the device model and have a rng
device class with individual drivers for each RNG model, including
IXP4xx. I'll keep the miscdev interface around but will add a
new interface under /sys/class/rng that the userspace tools can transition to. Is this OK with folks?

How does the hardware export RNG functionality? CPU insn? Magic memory address? Can it be done 100% in userspace?


It's a magic regsiter we just read/write and could be done in userspace.
I also took a look at MPC85xx and it has the same sort of interface but
also has an error interrupt capability. On second thought a class
interface is overkill b/c there will only be one RNG per system, so
I can just do something like watchdogs where we have a bunch of simple
drivers exposing the same interface. We could do it in user space but
then we have separate RNG implementations for x86 and !x86 and I'd
rather not see that. Can we move the x86 code out to userspace and
just let the daemon eat the numbers directly from HW? We can mmap() PCI devices, but I don't know enough about x86 to say whether msr instructions can execute out of userspace (or if we want them to...).

All of the hot path RNG stuff can and should be moved to userspace.

Right now the path is

kernel /dev/hwrandom -> rngd -> add /dev/random entropy

All three current vendors shown in hw_random.c are doable in userspace. Intel uses MMIO, AMD uses PIO, and VIA uses a specialized CPU instruction. As HPA mentioned, you can use the MSR driver for control.

Patches welcome! http://sf.net/projects/gkernel/

Jeff




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/