Patch "hwrng: bcm2835 - use hwrng_msleep() instead of cpu_relax()" has been added to the 6.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    hwrng: bcm2835 - use hwrng_msleep() instead of cpu_relax()

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     hwrng-bcm2835-use-hwrng_msleep-instead-of-cpu_relax.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 91f99a666b487d2f69bfdd13d33134d798247ab6
Author: Jason A. Donenfeld <Jason@xxxxxxxxx>
Date:   Mon Oct 10 09:06:07 2022 -0600

    hwrng: bcm2835 - use hwrng_msleep() instead of cpu_relax()
    
    [ Upstream commit 96cb9d0554457086664d3bd10630b11193d863f1 ]
    
    Rather than busy looping, yield back to the scheduler and sleep for a
    bit in the event that there's no data. This should hopefully prevent the
    stalls that Mark reported:
    
    <6>[    3.362859] Freeing initrd memory: 16196K
    <3>[   23.160131] rcu: INFO: rcu_sched self-detected stall on CPU
    <3>[   23.166057] rcu:  0-....: (2099 ticks this GP) idle=03b4/1/0x40000002 softirq=28/28 fqs=1050
    <4>[   23.174895]       (t=2101 jiffies g=-1147 q=2353 ncpus=4)
    <4>[   23.180203] CPU: 0 PID: 49 Comm: hwrng Not tainted 6.0.0 #1
    <4>[   23.186125] Hardware name: BCM2835
    <4>[   23.189837] PC is at bcm2835_rng_read+0x30/0x6c
    <4>[   23.194709] LR is at hwrng_fillfn+0x71/0xf4
    <4>[   23.199218] pc : [<c07ccdc8>]    lr : [<c07cb841>]    psr: 40000033
    <4>[   23.205840] sp : f093df70  ip : 00000000  fp : 00000000
    <4>[   23.211404] r10: c3c7e800  r9 : 00000000  r8 : c17e6b20
    <4>[   23.216968] r7 : c17e6b64  r6 : c18b0a74  r5 : c07ccd99  r4 : c3f171c0
    <4>[   23.223855] r3 : 000fffff  r2 : 00000040  r1 : c3c7e800  r0 : c3f171c0
    <4>[   23.230743] Flags: nZcv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment none
    <4>[   23.238426] Control: 50c5387d  Table: 0020406a  DAC: 00000051
    <4>[   23.244519] CPU: 0 PID: 49 Comm: hwrng Not tainted 6.0.0 #1
    
    Link: https://lore.kernel.org/all/Y0QJLauamRnCDUef@xxxxxxxxxxxxx/
    Signed-off-by: Jason A. Donenfeld <Jason@xxxxxxxxx>
    Acked-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
    Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
index e7dd457e9b22..e98fcac578d6 100644
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
@@ -71,7 +71,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;
-		cpu_relax();
+		hwrng_msleep(rng, 1000);
 	}
 
 	num_words = rng_readl(priv, RNG_STATUS) >> 24;



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux