All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ewan D. Milne" <emilne@redhat.com>
To: James Smart <jsmart2021@gmail.com>, linux-scsi@vger.kernel.org
Cc: Dick Kennedy <dick.kennedy@broadcom.com>
Subject: Re: [PATCH 4/6] lpfc: Initialize cpu_map for not present cpus
Date: Tue, 12 Nov 2019 13:32:36 -0500	[thread overview]
Message-ID: <36d2fa998e37b69cd744b88e71b3f6cc06880c25.camel@redhat.com> (raw)
In-Reply-To: <20191111230401.12958-5-jsmart2021@gmail.com>

On Mon, 2019-11-11 at 15:03 -0800, James Smart wrote:
> Currently, cpu_map[cpu#]->hdwq is left to equal
> LPFC_VECTOR_MAP_EMPTY for not present CPUs.  If a CPU
> is dynamically hot-added, it is possible we may crash due to
> not assigning an allocated hdwq.
> 
> Correct by assigning a hdwq at initialization for all
> not-present cpu's.
> 
> Fixes: dcaa21367938 ("scsi: lpfc: Change default IRQ model on AMD architectures")
> Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
> Signed-off-by: James Smart <jsmart2021@gmail.com>
> ---
> Issue applies as of the 12.2.0.0 patch kit, but this fix requires
> the above patch set for resolution. Referenced patch is in the
> 5.5/scsi-queue branch
> ---
>  drivers/scsi/lpfc/lpfc_init.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
> index 480d5a28c4f5..2b0e1097f727 100644
> --- a/drivers/scsi/lpfc/lpfc_init.c
> +++ b/drivers/scsi/lpfc/lpfc_init.c
> @@ -11004,7 +11004,7 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  				cpu, cpup->phys_id, cpup->core_id,
>  				cpup->hdwq, cpup->eq, cpup->flag);
>  	}
> -	/* Finally we need to associate a hdwq with each cpu_map entry
> +	/* Associate a hdwq with each cpu_map entry
>  	 * This will be 1 to 1 - hdwq to cpu, unless there are less
>  	 * hardware queues then CPUs. For that case we will just round-robin
>  	 * the available hardware queues as they get assigned to CPUs.
> @@ -11083,6 +11083,23 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
>  				cpup->hdwq, cpup->eq, cpup->flag);
>  	}
>  
> +	/*
> +	 * Initialize the cpu_map slots for not-present cpus in case
> +	 * a cpu is hot-added. Perform a simple hdwq round robin assignment.
> +	 */
> +	idx = 0;
> +	for_each_possible_cpu(cpu) {
> +		cpup = &phba->sli4_hba.cpu_map[cpu];
> +		if (cpup->hdwq != LPFC_VECTOR_MAP_EMPTY)
> +			continue;
> +
> +		cpup->hdwq = idx++ % phba->cfg_hdw_queue;
> +		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
> +				"3340 Set Affinity: not present "
> +				"CPU %d hdwq %d\n",
> +				cpu, cpup->hdwq);
> +	}
> +
>  	/* The cpu_map array will be used later during initialization
>  	 * when EQ / CQ / WQs are allocated and configured.
>  	 */

Reviewed-by: Ewan D. Milne <emilne@redhat.com>


  reply	other threads:[~2019-11-12 18:32 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-11 23:03 [PATCH 0/6] lpfc: Update lpfc to revision 12.6.0.1 James Smart
2019-11-11 23:03 ` [PATCH 1/6] lpfc: fix: Coverity: lpfc_get_scsi_buf_s3(): Null pointer dereferences James Smart
2019-11-12 18:30   ` Ewan D. Milne
2019-11-11 23:03 ` [PATCH 2/6] lpfc: fix: Coverity: lpfc_cmpl_els_rsp(): " James Smart
2019-11-12 18:30   ` Ewan D. Milne
2019-11-11 23:03 ` [PATCH 3/6] lpfc: fix inlining of lpfc_sli4_cleanup_poll_list() James Smart
2019-11-12 18:31   ` Ewan D. Milne
2019-11-11 23:03 ` [PATCH 4/6] lpfc: Initialize cpu_map for not present cpus James Smart
2019-11-12 18:32   ` Ewan D. Milne [this message]
2019-11-11 23:04 ` [PATCH 5/6] lpfc: revise nvme max queues to be hdwq count James Smart
2019-11-11 23:04 ` [PATCH 6/6] lpfc: Update lpfc version to 12.6.0.2 James Smart
2019-11-12 18:32   ` Ewan D. Milne
2019-11-13  2:14 ` [PATCH 0/6] lpfc: Update lpfc to revision 12.6.0.1 Martin K. Petersen

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=36d2fa998e37b69cd744b88e71b3f6cc06880c25.camel@redhat.com \
    --to=emilne@redhat.com \
    --cc=dick.kennedy@broadcom.com \
    --cc=jsmart2021@gmail.com \
    --cc=linux-scsi@vger.kernel.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.