It is now possible for drivers to easily specify a hwrng quality, however most do not currently do this, and in cases where they do, it may be desirable to override the driver-specified value with a user-specified one. This patch adds a parameter to set or override the hwrng quality. Signed-off-by: Louis Collard <louiscollard@xxxxxxxxxxxx> --- drivers/char/tpm/tpm-chip.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 0a62c19937b6..4def49cfc634 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -33,6 +33,11 @@ DEFINE_IDR(dev_nums_idr); static DEFINE_MUTEX(idr_lock); +static short override_rng_quality = -1; +module_param(override_rng_quality, short, 0644); +MODULE_PARM_DESC(override_rng_quality, + "tpm-rng quality (overrides values provided by drivers)"); + struct class *tpm_class; struct class *tpmrm_class; dev_t tpm_devt; @@ -409,6 +414,13 @@ static int tpm_add_hwrng(struct tpm_chip *chip) "tpm-rng-%d", chip->dev_num); chip->hwrng.name = chip->hwrng_name; chip->hwrng.read = tpm_hwrng_read; + if (override_rng_quality > -1) { + dev_info(&chip->dev, + "Overriding hwrng quality for %s: driver default=%d, override=%d", + chip->hwrng.name, chip->hwrng.quality, + override_rng_quality); + chip->hwrng.quality = override_rng_quality; + } return hwrng_register(&chip->hwrng); } -- 2.13.5