next/pending-fixes bisection: baseline.login on bcm2836-rpi-2-b

Mark Brown broonie at kernel.org
Mon Oct 10 04:59:41 PDT 2022


The KernelCI bisection bot found a boot failure on Raspberry Pi 2B with
multi_v7_defconfig+CONFIG_THUMB2_KERNEL on next/pending-fixes triggered
by b006c439d58d ("hwrng: core - start hwrng kthread also for untrusted
sources").  A RCU stall is detected towards the end of boot reading from
the bcm2835 hwrng:

<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

Similar issues appear to be present with other configurations, for
example a plain multi_v7_defconfig:

https://storage.kernelci.org/next/pending-fixes/v6.0-9666-g02c05e0b8d5c/arm/multi_v7_defconfig/gcc-10/lab-collabora/baseline-bcm2836-rpi-2-b.html

I've left the full report below with links to more information including
full logs, plus a reported-by tag for the bot:

On Sat, Oct 08, 2022 at 11:35:58PM -0700, KernelCI bot wrote:
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> * This automated bisection report was sent to you on the basis  *
> * that you may be involved with the breaking commit it has      *
> * found.  No manual investigation has been done to verify it,   *
> * and the root cause of the problem may be somewhere else.      *
> *                                                               *
> * If you do send a fix, please include this trailer:            *
> *   Reported-by: "kernelci.org bot" <bot at kernelci.org>          *
> *                                                               *
> * Hope this helps!                                              *
> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> 
> next/pending-fixes bisection: baseline.login on bcm2836-rpi-2-b
> 
> Summary:
>   Start:      7871897dadfa Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
>   Plain log:  https://storage.kernelci.org/next/pending-fixes/v6.0-5324-g7871897dadfa9/arm/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/gcc-10/lab-collabora/baseline-bcm2836-rpi-2-b.txt
>   HTML log:   https://storage.kernelci.org/next/pending-fixes/v6.0-5324-g7871897dadfa9/arm/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/gcc-10/lab-collabora/baseline-bcm2836-rpi-2-b.html
>   Result:     b006c439d58d hwrng: core - start hwrng kthread also for untrusted sources
> 
> Checks:
>   revert:     PASS
>   verify:     PASS
> 
> Parameters:
>   Tree:       next
>   URL:        https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
>   Branch:     pending-fixes
>   Target:     bcm2836-rpi-2-b
>   CPU arch:   arm
>   Lab:        lab-collabora
>   Compiler:   gcc-10
>   Config:     multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y
>   Test case:  baseline.login
> 
> Breaking commit found:
> 
> -------------------------------------------------------------------------------
> commit b006c439d58db625318bf2207feabf847510a8a6
> Author: Dominik Brodowski <linux at dominikbrodowski.net>
> Date:   Thu Sep 22 15:59:31 2022 +0200
> 
>     hwrng: core - start hwrng kthread also for untrusted sources
>     
>     Start the hwrng kthread even if the hwrng source has a quality setting
>     of zero. Then, every crng reseed interval, one batch of data from this
>     zero-quality hwrng source will be mixed into the CRNG pool.
>     
>     This patch is based on the assumption that data from a hwrng source
>     will not actively harm the CRNG state. Instead, many hwrng sources
>     (such as TPM devices), even though they are assigend a quality level of
>     zero, actually provide some entropy, which is good enough to mix into
>     the CRNG pool every once in a while.
>     
>     Cc: Herbert Xu <herbert at gondor.apana.org.au>
>     Cc: Jason A. Donenfeld <Jason at zx2c4.com>
>     Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
>     Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
> 
> diff --git a/drivers/char/hw_random/core.c b/drivers/char/hw_random/core.c
> index d7045dfaf16c..cc002b0c2f0c 100644
> --- a/drivers/char/hw_random/core.c
> +++ b/drivers/char/hw_random/core.c
> @@ -52,7 +52,7 @@ MODULE_PARM_DESC(default_quality,
>  
>  static void drop_current_rng(void);
>  static int hwrng_init(struct hwrng *rng);
> -static void hwrng_manage_rngd(struct hwrng *rng);
> +static int hwrng_fillfn(void *unused);
>  
>  static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size,
>  			       int wait);
> @@ -96,6 +96,15 @@ static int set_current_rng(struct hwrng *rng)
>  	drop_current_rng();
>  	current_rng = rng;
>  
> +	/* if necessary, start hwrng thread */
> +	if (!hwrng_fill) {
> +		hwrng_fill = kthread_run(hwrng_fillfn, NULL, "hwrng");
> +		if (IS_ERR(hwrng_fill)) {
> +			pr_err("hwrng_fill thread creation failed\n");
> +			hwrng_fill = NULL;
> +		}
> +	}
> +
>  	return 0;
>  }
>  
> @@ -167,8 +176,6 @@ static int hwrng_init(struct hwrng *rng)
>  		rng->quality = 1024;
>  	current_quality = rng->quality; /* obsolete */
>  
> -	hwrng_manage_rngd(rng);
> -
>  	return 0;
>  }
>  
> @@ -454,10 +461,6 @@ static ssize_t rng_quality_store(struct device *dev,
>  	/* the best available RNG may have changed */
>  	ret = enable_best_rng();
>  
> -	/* start/stop rngd if necessary */
> -	if (current_rng)
> -		hwrng_manage_rngd(current_rng);
> -
>  out:
>  	mutex_unlock(&rng_mutex);
>  	return ret ? ret : len;
> @@ -513,9 +516,6 @@ static int hwrng_fillfn(void *unused)
>  
>  		put_rng(rng);
>  
> -		if (!quality)
> -			break;
> -
>  		if (rc <= 0)
>  			continue;
>  
> @@ -534,22 +534,6 @@ static int hwrng_fillfn(void *unused)
>  	return 0;
>  }
>  
> -static void hwrng_manage_rngd(struct hwrng *rng)
> -{
> -	if (WARN_ON(!mutex_is_locked(&rng_mutex)))
> -		return;
> -
> -	if (rng->quality == 0 && hwrng_fill)
> -		kthread_stop(hwrng_fill);
> -	if (rng->quality > 0 && !hwrng_fill) {
> -		hwrng_fill = kthread_run(hwrng_fillfn, NULL, "hwrng");
> -		if (IS_ERR(hwrng_fill)) {
> -			pr_err("hwrng_fill thread creation failed\n");
> -			hwrng_fill = NULL;
> -		}
> -	}
> -}
> -
>  int hwrng_register(struct hwrng *rng)
>  {
>  	int err = -EINVAL;
> -------------------------------------------------------------------------------
> 
> 
> Git bisection log:
> 
> -------------------------------------------------------------------------------
> git bisect start
> # good: [833477fce7a14d43ae4c07f8ddc32fa5119471a2] Merge tag 'sound-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
> git bisect good 833477fce7a14d43ae4c07f8ddc32fa5119471a2
> # bad: [7871897dadfa90816daf4963be075236587ada9d] Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
> git bisect bad 7871897dadfa90816daf4963be075236587ada9d
> # good: [1b79573de717cfabe28221a98afaa6a3ff0e7458] crypto: blake2s - revert unintended config addition of CRYPTO_BLAKE2S
> git bisect good 1b79573de717cfabe28221a98afaa6a3ff0e7458
> # good: [1db031a4f6c36c02dbdd20d6c8e3f9771cdd4b78] Merge branch 'counter-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wbg/counter.git
> git bisect good 1db031a4f6c36c02dbdd20d6c8e3f9771cdd4b78
> # bad: [2bf13565c357c2cb9fef5d929fbf4fa2541d92de] Merge branch 'master' of git://git.kernel.org/pub/scm/virt/kvm/kvm.git
> git bisect bad 2bf13565c357c2cb9fef5d929fbf4fa2541d92de
> # bad: [b006c439d58db625318bf2207feabf847510a8a6] hwrng: core - start hwrng kthread also for untrusted sources
> git bisect bad b006c439d58db625318bf2207feabf847510a8a6
> # good: [f78f6f0bf34fd85c17ebcb31d645536112aa25d3] crypto: aspeed - fix build error when only CRYPTO_DEV_ASPEED is enabled
> git bisect good f78f6f0bf34fd85c17ebcb31d645536112aa25d3
> # good: [70513e1d65599f39aba4fa6594546f7c81fa59f4] crypto: aspeed - Fix check for platform_get_irq() errors
> git bisect good 70513e1d65599f39aba4fa6594546f7c81fa59f4
> # good: [0cb3c9cdf7fcc2ef75a6008223d2e3ee58ea00e1] crypto: octeontx2 - Remove the unneeded result variable
> git bisect good 0cb3c9cdf7fcc2ef75a6008223d2e3ee58ea00e1
> # good: [4edff849f7a0abca962374512907b3e2151091f4] crypto: zip - remove the unneeded result variable
> git bisect good 4edff849f7a0abca962374512907b3e2151091f4
> # first bad commit: [b006c439d58db625318bf2207feabf847510a8a6] hwrng: core - start hwrng kthread also for untrusted sources
> -------------------------------------------------------------------------------
> 
> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#32452): https://groups.io/g/kernelci-results/message/32452
> Mute This Topic: https://groups.io/mt/94212648/1131744
> Group Owner: kernelci-results+owner at groups.io
> Unsubscribe: https://groups.io/g/kernelci-results/unsub [broonie at kernel.org]
> -=-=-=-=-=-=-=-=-=-=-=-
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20221010/5cd83152/attachment.sig>


More information about the linux-arm-kernel mailing list