linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] hwrng: bcm2835: Fix hwrng throughput regression
@ 2023-08-26 11:28 Stefan Wahren
  2023-08-26 12:34 ` Jason A. Donenfeld
  0 siblings, 1 reply; 6+ messages in thread
From: Stefan Wahren @ 2023-08-26 11:28 UTC (permalink / raw)
  To: Olivia Mackall, Herbert Xu, Florian Fainelli, Ray Jui,
	Scott Branden
  Cc: Jason A. Donenfeld, Mark Brown, linux-crypto, linux-arm-kernel,
	bcm-kernel-feedback-list, Stefan Wahren

The recent RCU stall fix caused a massive throughput regression of the
hwrng on Raspberry Pi 0 - 3. So try to restore a similiar throughput
as before the RCU stall fix.

Some performance measurements on Raspberry Pi 3B+ (arm64/defconfig):

sudo dd if=/dev/hwrng of=/dev/null count=1 bs=10000

cpu_relax              ~138025 Bytes / sec
hwrng_msleep(1000)         ~13 Bytes / sec
usleep_range(100,200)   ~92141 Bytes / sec

Fixes: 96cb9d055445 ("hwrng: bcm2835 - use hwrng_msleep() instead of cpu_relax()")
Link: https://lore.kernel.org/linux-arm-kernel/bc97ece5-44a3-4c4e-77da-2db3eb66b128@gmx.net/
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
---
 drivers/char/hw_random/bcm2835-rng.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
index e98fcac578d6..3f1b6aaa98ee 100644
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
@@ -14,6 +14,7 @@
 #include <linux/printk.h>
 #include <linux/clk.h>
 #include <linux/reset.h>
+#include <linux/delay.h>

 #define RNG_CTRL	0x0
 #define RNG_STATUS	0x4
@@ -71,7 +72,7 @@ static int bcm2835_rng_read(struct hwrng *rng, void *buf, size_t max,
 	while ((rng_readl(priv, RNG_STATUS) >> 24) == 0) {
 		if (!wait)
 			return 0;
-		hwrng_msleep(rng, 1000);
+		usleep_range(100, 200);
 	}

 	num_words = rng_readl(priv, RNG_STATUS) >> 24;
--
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-08-30 22:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-26 11:28 [PATCH] hwrng: bcm2835: Fix hwrng throughput regression Stefan Wahren
2023-08-26 12:34 ` Jason A. Donenfeld
2023-08-26 14:01   ` Stefan Wahren
2023-08-26 15:48     ` Jason A. Donenfeld
2023-08-30 18:05       ` Stefan Wahren
2023-08-30 22:31         ` Jason A. Donenfeld

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).