On 12 May 2017 at 12:22, PrasannaKumar Muralidharan <prasannatsmkumar@xxxxxxxxx> wrote: > On 12 May 2017 at 12:11, Mike Frysinger <vapier@xxxxxxxxxxxx> wrote: >> On Fri, May 12, 2017 at 2:15 AM, PrasannaKumar Muralidharan wrote: >>> On 12 May 2017 at 09:47, Mike Frysinger <vapier@xxxxxxxxxx> wrote: >>> > From: Mike Frysinger <vapier@xxxxxxxxxxxx> >>> > >>> > If you build in hwrng & tpm-rng, but boot on a system that doesn't >>> > have a tpm (like via KVM), hwrng will spam the logs every 10 seconds >>> > with the line: >>> > hwrng: no data available >>> > >>> > This isn't terribly useful, so squelch the error in the ENODEV case. >>> > For all other errors, we still warn, and include the actual error. > > If the boot system does not have a tpm I think registering tpm-rng is > not useful. On tpm-rng load instead of registering with hwrng a check > can be made whether the system supports tpm. Is this possible? Completely untested patch below. Will something like this work? diff --git a/drivers/char/hw_random/tpm-rng.c b/drivers/char/hw_random/tpm-rng.c index d6d4482..f78f8ca 100644 --- a/drivers/char/hw_random/tpm-rng.c +++ b/drivers/char/hw_random/tpm-rng.c @@ -35,7 +35,13 @@ static int tpm_rng_read(struct hwrng *rng, void *data, size_t max, bool wait) static int __init rng_init(void) { - return hwrng_register(&tpm_rng); + struct tpm_chip *tpm_rng_chip = tpm_chip_find_get(TPM_ANY_NUM); + if (tpm_chip) { + tpm_put_ops(tpm_rng_chip); + return hwrng_register(&tpm_rng); + } + + return -ENODEV; } module_init(rng_init); Thanks, PrasannaKumar