• Matt Porter's avatar
    hwrng: bcm2835 - fix oops when rng h/w is accessed during registration · eb4a5346
    Matt Porter authored
    Commit "d9e79726 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: default avatarMatt Porter <mporter@linaro.org>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    eb4a5346
bcm2835-rng.c 2.66 KB