All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Linux 6.3-rc1
Date: Mon, 6 Mar 2023 11:53:31 -0800	[thread overview]
Message-ID: <74178f6a-22b1-42f0-aed7-98ef5ad8a690@roeck-us.net> (raw)

On Mon, Mar 06, 2023 at 10:12:01AM -0800, Linus Torvalds wrote:
> On Mon, Mar 6, 2023 at 8:52 AM Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > Various crashes, affecting several architectures.
> >
> > [   11.664666] BUG: unable to handle page fault for address: 000000000002d3db
> > [   11.667043]  lock_acquire+0xcb/0x330
> > [   11.667163]  _raw_spin_lock+0x2b/0x40
> > [   11.667255]  add_timer_on+0x92/0x150
> > [   11.667302]  try_to_generate_entropy+0x256/0x280
> 
> Ok, this seems to be due to the issue discussed here
> 
>    https://lore.kernel.org/all/CAHk-=witXXeQuP9fgs4dDL2Ex0meXQiHJs+3JEfNdaPwngMVEg@mail.gmail.com/
> 
> and I think the fix is as per the appended patch (that particular
> crash is due to the random.c part, but I did the others that 'git
> grep' picked out too).
> 
> Can you run your test-runs on this patch?
> 

With the patch below applied on top of v6.3-rc1, the crashes are gone:

Qemu test results:
	total: 511 pass: 511 fail: 0

Tested-by: Guenter Roeck <linux@roeck-us.net>

Guenter

>               Linus
> 
>  arch/powerpc/xmon/xmon.c         |  2 +-
>  drivers/char/random.c            |  2 +-
>  drivers/net/wireguard/queueing.h |  2 +-
>  drivers/scsi/lpfc/lpfc_init.c    | 14 +++++++-------
>  4 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
> index 73c620c2a3a1..e753a6bd4888 100644
> --- a/arch/powerpc/xmon/xmon.c
> +++ b/arch/powerpc/xmon/xmon.c
> @@ -1275,7 +1275,7 @@ static int xmon_batch_next_cpu(void)
>  	while (!cpumask_empty(&xmon_batch_cpus)) {
>  		cpu = cpumask_next_wrap(smp_processor_id(), &xmon_batch_cpus,
>  					xmon_batch_start_cpu, true);
> -		if (cpu == nr_cpumask_bits)
> +		if (cpu >= nr_cpu_ids)
>  			break;
>  		if (xmon_batch_start_cpu == -1)
>  			xmon_batch_start_cpu = cpu;
> diff --git a/drivers/char/random.c b/drivers/char/random.c
> index ce3ccd172cc8..253f2ddb8913 100644
> --- a/drivers/char/random.c
> +++ b/drivers/char/random.c
> @@ -1311,7 +1311,7 @@ static void __cold try_to_generate_entropy(void)
>  			/* Basic CPU round-robin, which avoids the current CPU. */
>  			do {
>  				cpu = cpumask_next(cpu, &timer_cpus);
> -				if (cpu == nr_cpumask_bits)
> +				if (cpu >= nr_cpu_ids)
>  					cpu = cpumask_first(&timer_cpus);
>  			} while (cpu == smp_processor_id() && num_cpus > 1);
>  
> diff --git a/drivers/net/wireguard/queueing.h b/drivers/net/wireguard/queueing.h
> index 583adb37ee1e..125284b346a7 100644
> --- a/drivers/net/wireguard/queueing.h
> +++ b/drivers/net/wireguard/queueing.h
> @@ -106,7 +106,7 @@ static inline int wg_cpumask_choose_online(int *stored_cpu, unsigned int id)
>  {
>  	unsigned int cpu = *stored_cpu, cpu_index, i;
>  
> -	if (unlikely(cpu == nr_cpumask_bits ||
> +	if (unlikely(cpu >= nr_cpu_ids ||
>  		     !cpumask_test_cpu(cpu, cpu_online_mask))) {
>  		cpu_index = id % cpumask_weight(cpu_online_mask);
>  		cpu = cpumask_first(cpu_online_mask);
> diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
> index 61958a24a43d..73b544bfbb2e 100644
> --- a/drivers/scsi/lpfc/lpfc_init.c
> +++ b/drivers/scsi/lpfc/lpfc_init.c
> @@ -12563,7 +12563,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  					goto found_same;
>  				new_cpu = cpumask_next(
>  					new_cpu, cpu_present_mask);
> -				if (new_cpu == nr_cpumask_bits)
> +				if (new_cpu >= nr_cpu_ids)
>  					new_cpu = first_cpu;
>  			}
>  			/* At this point, we leave the CPU as unassigned */
> @@ -12577,7 +12577,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  			 * selecting the same IRQ.
>  			 */
>  			start_cpu = cpumask_next(new_cpu, cpu_present_mask);
> -			if (start_cpu == nr_cpumask_bits)
> +			if (start_cpu >= nr_cpu_ids)
>  				start_cpu = first_cpu;
>  
>  			lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
> @@ -12613,7 +12613,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  					goto found_any;
>  				new_cpu = cpumask_next(
>  					new_cpu, cpu_present_mask);
> -				if (new_cpu == nr_cpumask_bits)
> +				if (new_cpu >= nr_cpu_ids)
>  					new_cpu = first_cpu;
>  			}
>  			/* We should never leave an entry unassigned */
> @@ -12631,7 +12631,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  			 * selecting the same IRQ.
>  			 */
>  			start_cpu = cpumask_next(new_cpu, cpu_present_mask);
> -			if (start_cpu == nr_cpumask_bits)
> +			if (start_cpu >= nr_cpu_ids)
>  				start_cpu = first_cpu;
>  
>  			lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
> @@ -12704,7 +12704,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  				goto found_hdwq;
>  			}
>  			new_cpu = cpumask_next(new_cpu, cpu_present_mask);
> -			if (new_cpu == nr_cpumask_bits)
> +			if (new_cpu >= nr_cpu_ids)
>  				new_cpu = first_cpu;
>  		}
>  
> @@ -12719,7 +12719,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  				goto found_hdwq;
>  
>  			new_cpu = cpumask_next(new_cpu, cpu_present_mask);
> -			if (new_cpu == nr_cpumask_bits)
> +			if (new_cpu >= nr_cpu_ids)
>  				new_cpu = first_cpu;
>  		}
>  
> @@ -12730,7 +12730,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>   found_hdwq:
>  		/* We found an available entry, copy the IRQ info */
>  		start_cpu = cpumask_next(new_cpu, cpu_present_mask);
> -		if (start_cpu == nr_cpumask_bits)
> +		if (start_cpu >= nr_cpu_ids)
>  			start_cpu = first_cpu;
>  		cpup->hdwq = new_cpup->hdwq;
>   logit:
> 

             reply	other threads:[~2023-03-06 19:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-06 19:53 Guenter Roeck [this message]
2023-03-06 19:59 ` Linux 6.3-rc1 Linus Torvalds
  -- strict thread matches above, loose matches on Subject: below --
2023-03-06 18:50 Guenter Roeck
2023-03-05 23:24 Linus Torvalds
2023-03-06 16:52 ` Guenter Roeck
2023-03-06 18:12   ` Linus Torvalds
2023-03-06 22:02   ` Guenter Roeck
2023-03-08 10:07 ` Luna Jernberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=74178f6a-22b1-42f0-aed7-98ef5ad8a690@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.