Rather than create yet another cut-n-paste driver, for Via's new on-CPU RNG that just appeared on the market, I took the opportunity to update the existing RNG drivers, and take advantage of code sharing. I wrote the Intel RNG driver along with Philip Rumpf, and Alan copied that, made several smart improvements, and create the AMD RNG driver. So in turn, I took Alan's AMD RNG driver, welded Intel bits into it, and in the end wound up with a modular driver. Then I added Via RNG support onto the top of the whole mess. The first patch shuffles around files, and isn't interesting. The second patch updates Alan's AMD driver to become the new and modular hw_random.c driver. The third patch adds Via RNG support, which is based around a neat new "xstore" instruction. More details on that, and code, are in the email accompanying the patch. The hardware RNG API as presented to userland is very simple: userland read(2) from an infinite tap of random data, straight from the hardware RNG. If you want "bare metal" speed, that's all you need to do. Most people, however, will want to use the "rng daemon", which reads from the hardware RNG, performs some sanity checks, and then injects the data from the hardware RNG into the kernel's /dev/[u]random pool. The kernel "stirs" that input data along with other in-kernel entropy sources, and the end result is a faster /dev/[u]random. It needs a good bit of public testing, comment and review, so it won't be backported to 2.4.x for a little while yet. Testing especially on AMD RNG is requested. But please do consider it for inclusion in 2.5.x. Comments welcome! Jeff