linux/drivers/char/hw_random
Matt Porter eb4a5346e7 hwrng: bcm2835 - fix oops when rng h/w is accessed during registration
Commit "d9e7972 hwrng: add randomness to system from rng sources"
exposed a bug in the bcm2835-rng driver resulting in boot failure
on Raspberry Pi due to the following oops:

[   28.261523] BUG: soft lockup - CPU#0 stuck for 23s! [swapper:1]
[   28.271058]
[   28.275958] CPU: 0 PID: 1 Comm: swapper Not tainted 3.14.0+ #11
[   28.285374] task: db480000 ti: db484000 task.ti: db484000
[   28.294279] PC is at bcm2835_rng_read+0x28/0x48
[   28.302276] LR is at hwrng_register+0x1a8/0x238
.
.
.

The RNG h/w is not completely initialized and enabled before
hwrng_register() is called and so the bcm2835_rng_read() fails.
Fix this by making the warmup/enable writes before registering
the RNG source with the hwrng core.

Signed-off-by: Matt Porter <mporter@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2014-04-11 11:31:13 +08:00
..
amd-rng.c hwrng: amd - manage resource allocation 2011-05-04 15:13:15 +10:00
atmel-rng.c hwrng: atmel - Use devm_clk_get() 2014-03-10 20:13:35 +08:00
bcm63xx-rng.c hwrng: bcm63xx - remove unnecessary platform_set_drvdata() 2013-05-24 17:55:29 +08:00
bcm2835-rng.c hwrng: bcm2835 - fix oops when rng h/w is accessed during registration 2014-04-11 11:31:13 +08:00
core.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2014-04-03 09:28:16 -07:00
exynos-rng.c drivers/char: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
geode-rng.c
intel-rng.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ixp4xx-rng.c IXP4xx: HW pseudo-random generator is available on IXP45x/46x only. 2012-11-22 03:35:39 +00:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2013-11-23 16:18:25 -08:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2013-11-23 16:18:25 -08:00
msm-rng.c hwrng: msm - Add PRNG support for MSM SoC's 2013-10-30 12:02:56 +08:00
mxc-rnga.c hwrng: mxc-rnga - Check the return value from clk_prepare_enable() 2013-08-01 10:53:59 +10:00
n2-asm.S
n2-drv.c drivers/char: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
n2rng.h n2rng: Attach on Niagara-T3. 2011-07-28 01:26:30 -07:00
nomadik-rng.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2014-04-03 09:28:16 -07:00
octeon-rng.c drivers/char: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
omap3-rom-rng.c hwrng: omap3-rom - Use devm_clk_get() 2014-03-10 20:13:36 +08:00
omap-rng.c hwrng: omap - reorder OMAP TRNG driver code 2013-08-21 21:28:08 +10:00
pasemi-rng.c drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
picoxcell-rng.c hwrng: pixocell - Use devm_clk_get() 2014-03-10 20:13:37 +08:00
powernv-rng.c hwrng: Add a driver for the hwrng found in power7+ systems 2013-10-11 16:50:20 +11:00
ppc4xx-rng.c powerpc: add missing explicit OF includes for ppc 2013-11-11 09:10:50 -06:00
pseries-rng.c hwrng: Return errors to upper levels in pseries-rng.c 2013-10-11 16:50:18 +11:00
timeriomem-rng.c hwrng: timeriomem - Use devm_*() functions 2014-03-10 20:13:38 +08:00
tpm-rng.c hw_random: add support for the TPM chip as a hardware RNG source 2012-08-22 11:11:41 -05:00
tx4939-rng.c hwrng: tx4939 - simplify use of devm_ioremap_resource 2013-08-14 20:42:04 +10:00
via-rng.c hwrng: via-rng - Mark device ID table as __maybe_unused 2013-09-13 21:43:53 +10:00
virtio-rng.c virtio-rng: don't crash if virtqueue is broken. 2014-03-13 11:27:57 +10:30