All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jinpu Wang <jinpu.wang@cloud.ionos.com>
To: Viswas G <Viswas.G@microchip.com>
Cc: Linux SCSI Mailinglist <linux-scsi@vger.kernel.org>,
	Vasanthalakshmi.Tharmarajan@microchip.com,
	Ruksar.devadi@microchip.com,
	Vishakha Channapattan <vishakhavc@google.com>,
	Radha Ramachandran <radha@google.com>
Subject: Re: [PATCH 7/7] pm80xx: remove global lock from outbound queue processing
Date: Thu, 4 Mar 2021 10:39:05 +0100	[thread overview]
Message-ID: <CAMGffE=ByJSOw9JGd-2s6aQRdvBYvE0RjShGFYn4QXTeamjxFg@mail.gmail.com> (raw)
In-Reply-To: <20210224155802.13292-8-Viswas.G@microchip.com>

On Wed, Feb 24, 2021 at 4:48 PM Viswas G <Viswas.G@microchip.com> wrote:
>
> Introduced spin lock for outbound queue. With this, driver need not
> acquire hba global lock for outbound queue processing.
>
> Signed-off-by: Viswas G <Viswas.G@microchip.com>
> Signed-off-by: Ruksar Devadi <Ruksar.devadi@microchip.com>
> Signed-off-by: Ashokkumar N <Ashokkumar.N@microchip.com>
Looks ok to me!
Acked-by: Jack Wang <jinpu.wang@cloud.ionos.com>
> ---
>  drivers/scsi/pm8001/pm8001_init.c | 9 ++++++---
>  drivers/scsi/pm8001/pm8001_sas.h  | 1 +
>  drivers/scsi/pm8001/pm80xx_hwi.c  | 4 ++--
>  3 files changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
> index bd626ef876da..a3c8fb9a885f 100644
> --- a/drivers/scsi/pm8001/pm8001_init.c
> +++ b/drivers/scsi/pm8001/pm8001_init.c
> @@ -267,7 +267,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,
>  {
>         int i, count = 0, rc = 0;
>         u32 ci_offset, ib_offset, ob_offset, pi_offset;
> -       struct inbound_queue_table *circularQ;
> +       struct inbound_queue_table *ibq;
> +       struct outbound_queue_table *obq;
>
>         spin_lock_init(&pm8001_ha->lock);
>         spin_lock_init(&pm8001_ha->bitmap_lock);
> @@ -315,8 +316,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,
>         pm8001_ha->memoryMap.region[IOP].alignment = 32;
>
>         for (i = 0; i < count; i++) {
> -               circularQ = &pm8001_ha->inbnd_q_tbl[i];
> -               spin_lock_init(&circularQ->iq_lock);
> +               ibq = &pm8001_ha->inbnd_q_tbl[i];
> +               spin_lock_init(&ibq->iq_lock);
>                 /* MPI Memory region 3 for consumer Index of inbound queues */
>                 pm8001_ha->memoryMap.region[ci_offset+i].num_elements = 1;
>                 pm8001_ha->memoryMap.region[ci_offset+i].element_size = 4;
> @@ -345,6 +346,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha,
>         }
>
>         for (i = 0; i < count; i++) {
> +               obq = &pm8001_ha->outbnd_q_tbl[i];
> +               spin_lock_init(&obq->oq_lock);
>                 /* MPI Memory region 4 for producer Index of outbound queues */
>                 pm8001_ha->memoryMap.region[pi_offset+i].num_elements = 1;
>                 pm8001_ha->memoryMap.region[pi_offset+i].element_size = 4;
> diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h
> index 36cd37c8c29a..f835557ee354 100644
> --- a/drivers/scsi/pm8001/pm8001_sas.h
> +++ b/drivers/scsi/pm8001/pm8001_sas.h
> @@ -457,6 +457,7 @@ struct outbound_queue_table {
>         u32                     dinterrup_to_pci_offset;
>         __le32                  producer_index;
>         u32                     consumer_idx;
> +       spinlock_t              oq_lock;
>  };
>  struct pm8001_hba_memspace {
>         void __iomem            *memvirtaddr;
> diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c
> index 0f2c57e054ac..f1276baebe1d 100644
> --- a/drivers/scsi/pm8001/pm80xx_hwi.c
> +++ b/drivers/scsi/pm8001/pm80xx_hwi.c
> @@ -4133,8 +4133,8 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
>                         return ret;
>                 }
>         }
> -       spin_lock_irqsave(&pm8001_ha->lock, flags);
>         circularQ = &pm8001_ha->outbnd_q_tbl[vec];
> +       spin_lock_irqsave(&circularQ->oq_lock, flags);
>         do {
>                 /* spurious interrupt during setup if kexec-ing and
>                  * driver doing a doorbell access w/ the pre-kexec oq
> @@ -4160,7 +4160,7 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
>                                 break;
>                 }
>         } while (1);
> -       spin_unlock_irqrestore(&pm8001_ha->lock, flags);
> +       spin_unlock_irqrestore(&circularQ->oq_lock, flags);
>         return ret;
>  }
>
> --
> 2.16.3
>

      reply	other threads:[~2021-03-04  9:41 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-24 15:57 [PATCH 0/7] pm80xx updates Viswas G
2021-02-24 15:57 ` [PATCH 1/7] pm80xx: Add sysfs attribute to check mpi state Viswas G
2021-03-04  9:27   ` Jinpu Wang
2021-02-24 15:57 ` [PATCH 2/7] pm80xx: Add sysfs attribute to track RAAE count Viswas G
2021-03-04  9:28   ` Jinpu Wang
2021-02-24 15:57 ` [PATCH 3/7] pm80xx: Add sysfs attribute to track iop0 count Viswas G
2021-03-04  9:28   ` Jinpu Wang
2021-02-24 15:57 ` [PATCH 4/7] pm80xx: Add sysfs attribute to track iop1 count Viswas G
2021-03-04  9:28   ` Jinpu Wang
2021-03-05  8:02   ` John Garry
2021-02-24 15:58 ` [PATCH 5/7] pm80xx: Completing pending IO after fatal error Viswas G
2021-03-04  9:32   ` Jinpu Wang
2021-02-24 15:58 ` [PATCH 6/7] pm80xx: Reset PI and CI memory during re-initialize Viswas G
2021-03-04  9:37   ` Jinpu Wang
2021-03-04 16:40     ` Viswas.G
2021-03-05  6:45       ` Jinpu Wang
2021-02-24 15:58 ` [PATCH 7/7] pm80xx: remove global lock from outbound queue processing Viswas G
2021-03-04  9:39   ` Jinpu Wang [this message]

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='CAMGffE=ByJSOw9JGd-2s6aQRdvBYvE0RjShGFYn4QXTeamjxFg@mail.gmail.com' \
    --to=jinpu.wang@cloud.ionos.com \
    --cc=Ruksar.devadi@microchip.com \
    --cc=Vasanthalakshmi.Tharmarajan@microchip.com \
    --cc=Viswas.G@microchip.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=radha@google.com \
    --cc=vishakhavc@google.com \
    /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.