linux/drivers/char/hw_random
Stephen Boyd 03a3bb7ae6 hwrng: core - Freeze khwrng thread during suspend
The hwrng_fill() function can run while devices are suspending and
resuming. If the hwrng is behind a bus such as i2c or SPI and that bus
is suspended, the hwrng may hang the bus while attempting to add some
randomness. It's been observed on ChromeOS devices with suspend-to-idle
(s2idle) and an i2c based hwrng that this kthread may run and ask the
hwrng device for randomness before the i2c bus has been resumed.

Let's make this kthread freezable so that we don't try to touch the
hwrng during suspend/resume. This ensures that we can't cause the hwrng
backing driver to get into a bad state because the device is guaranteed
to be resumed before the hwrng kthread is thawed.

Cc: Andrey Pronin <apronin@chromium.org>
Cc: Duncan Laurie <dlaurie@chromium.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Guenter Roeck <groeck@chromium.org>
Cc: Alexander Steffen <Alexander.Steffen@infineon.com>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2019-08-15 21:52:13 +10:00
..
amd-rng.c hwrng: amd - Revert managed API changes 2017-03-16 17:43:10 +08:00
atmel-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
bcm2835-rng.c hwrng: bcm2835 - fix probe as platform device 2019-02-28 14:17:58 +08:00
cavium-rng-vf.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
cavium-rng.c hwrng: cavium - make two functions static 2018-03-09 22:45:34 +08:00
core.c hwrng: core - Freeze khwrng thread during suspend 2019-08-15 21:52:13 +10:00
exynos-trng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
geode-rng.c hwrng: geode - Revert managed API changes 2017-03-16 17:43:11 +08:00
hisi-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
imx-rngc.c hwrng: imx-rngc - use devm_platform_ioremap_resource() to simplify code 2019-07-27 21:08:32 +10:00
intel-rng.c
iproc-rng200.c hwrng: iproc-rng200 - Add support for 7211 2019-06-20 14:18:32 +08:00
ixp4xx-rng.c
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
ks-sa-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
Makefile hwrng: add OP-TEE based rng driver 2019-02-01 15:12:46 +01:00
meson-rng.c hwrng: meson - update with SPDX Licence identifier 2019-05-30 15:28:40 +08:00
mtk-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
mxc-rnga.c hwrng: mxc-rnga - use devm_platform_ioremap_resource() to simplify code 2019-07-27 21:08:32 +10:00
n2-asm.S License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
n2-drv.c hwrng: n2-drv - fix typo 2019-08-08 12:07:49 +10:00
n2rng.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nomadik-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
octeon-rng.c
omap3-rom-rng.c hwrng: omap3-rom - Handle return value of clk_prepare_enable 2017-05-23 12:52:03 +08:00
omap-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
optee-rng.c hwrng: make symbol 'optee_rng_id_table' static 2019-02-20 17:58:50 +01:00
pasemi-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pic32-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 445 2019-06-05 17:37:18 +02:00
powernv-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
pseries-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
s390-trng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 376 2019-06-05 17:37:10 +02:00
st-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00
stm32-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 110 2019-05-24 17:39:01 +02:00
timeriomem-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
tx4939-rng.c hwrng: tx4939 - Use devm_hwrng_register instead of hwrng_register 2016-08-31 23:00:49 +08:00
via-rng.c hwrng: via - support new Centaur CPU 2018-04-21 00:59:03 +08:00
virtio-rng.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 102 2019-05-24 17:39:00 +02:00
xgene-rng.c hwrng: drivers - Use device-managed registration API 2019-08-02 14:44:33 +10:00