From: luojiaxing <luojiaxing@huawei.com>
To: Hannes Reinecke <hare@suse.de>,
"Martin K. Petersen" <martin.petersen@oracle.com>
Cc: James Bottomley <james.bottomley@hansenpartnership.com>,
Christoph Hellwig <hch@lst.de>,
John Garry <john.garry@huawei.com>, <linux-scsi@vger.kernel.org>
Subject: Re: [PATCH 29/31] hisi_sas: use task tag to reference the slot
Date: Wed, 10 Mar 2021 09:54:55 +0800 [thread overview]
Message-ID: <2202707d-a1de-f1d1-3484-92989ff5c4f4@huawei.com> (raw)
In-Reply-To: <20210222132405.91369-30-hare@suse.de>
On 2021/2/22 21:24, Hannes Reinecke wrote:
> Use the task task to reference the command slot and drop the
> internal slot bitmap.
>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> ---
> drivers/scsi/hisi_sas/hisi_sas.h | 1 -
> drivers/scsi/hisi_sas/hisi_sas_main.c | 78 ++-------------------------
> 2 files changed, 5 insertions(+), 74 deletions(-)
>
> diff --git a/drivers/scsi/hisi_sas/hisi_sas.h b/drivers/scsi/hisi_sas/hisi_sas.h
> index 2401a9575215..6efe980789ee 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas.h
> +++ b/drivers/scsi/hisi_sas/hisi_sas.h
> @@ -419,7 +419,6 @@ struct hisi_hba {
> struct workqueue_struct *wq;
>
> int slot_index_count;
> - int last_slot_index;
> int last_dev_id;
> unsigned long *slot_index_tags;
> unsigned long reject_stp_links_msk;
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
> index af653f4393ea..6402c4e4befa 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_main.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
> @@ -155,62 +155,6 @@ void hisi_sas_stop_phys(struct hisi_hba *hisi_hba)
> }
> EXPORT_SYMBOL_GPL(hisi_sas_stop_phys);
>
> -static void hisi_sas_slot_index_clear(struct hisi_hba *hisi_hba, int slot_idx)
> -{
> - void *bitmap = hisi_hba->slot_index_tags;
> -
> - clear_bit(slot_idx, bitmap);
> -}
> -
> -static void hisi_sas_slot_index_free(struct hisi_hba *hisi_hba, int slot_idx)
> -{
> - if (hisi_hba->hw->slot_index_alloc ||
> - slot_idx >= HISI_SAS_UNRESERVED_IPTT) {
> - spin_lock(&hisi_hba->lock);
> - hisi_sas_slot_index_clear(hisi_hba, slot_idx);
> - spin_unlock(&hisi_hba->lock);
> - }
> -}
> -
> -static void hisi_sas_slot_index_set(struct hisi_hba *hisi_hba, int slot_idx)
> -{
> - void *bitmap = hisi_hba->slot_index_tags;
> -
> - set_bit(slot_idx, bitmap);
> -}
> -
> -static int hisi_sas_slot_index_alloc(struct hisi_hba *hisi_hba)
> -{
> - int index;
> - void *bitmap = hisi_hba->slot_index_tags;
> -
> - spin_lock(&hisi_hba->lock);
> - index = find_next_zero_bit(bitmap, hisi_hba->slot_index_count,
> - hisi_hba->last_slot_index + 1);
> - if (index >= hisi_hba->slot_index_count) {
> - index = find_next_zero_bit(bitmap,
> - hisi_hba->slot_index_count,
> - HISI_SAS_UNRESERVED_IPTT);
> - if (index >= hisi_hba->slot_index_count) {
> - spin_unlock(&hisi_hba->lock);
> - return -SAS_QUEUE_FULL;
> - }
> - }
> - hisi_sas_slot_index_set(hisi_hba, index);
> - hisi_hba->last_slot_index = index;
> - spin_unlock(&hisi_hba->lock);
> -
> - return index;
> -}
> -
> -static void hisi_sas_slot_index_init(struct hisi_hba *hisi_hba)
> -{
> - int i;
> -
> - for (i = 0; i < hisi_hba->slot_index_count; ++i)
> - hisi_sas_slot_index_clear(hisi_hba, i);
> -}
> -
> void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
> struct hisi_sas_slot *slot)
> {
> @@ -246,8 +190,6 @@ void hisi_sas_slot_task_free(struct hisi_hba *hisi_hba, struct sas_task *task,
> spin_unlock(&sas_dev->lock);
>
> memset(slot, 0, offsetof(struct hisi_sas_slot, buf));
> -
> - hisi_sas_slot_index_free(hisi_hba, slot->idx);
> }
> EXPORT_SYMBOL_GPL(hisi_sas_slot_task_free);
>
> @@ -482,10 +424,8 @@ static int hisi_sas_task_prep(struct sas_task *task,
>
> if (hisi_hba->hw->slot_index_alloc)
> rc = hisi_hba->hw->slot_index_alloc(hisi_hba, device);
> - else if (scmd)
> - rc = scmd->request->tag;
> else
> - rc = hisi_sas_slot_index_alloc(hisi_hba);
> + rc = scmd->request->tag;
>
> if (rc < 0)
> goto err_out_dif_dma_unmap;
> @@ -1975,9 +1915,10 @@ hisi_sas_internal_abort_task_exec(struct hisi_hba *hisi_hba, int device_id,
> port = to_hisi_sas_port(sas_port);
>
> /* simply get a slot and send abort command */
> - rc = = task->tag;
> - if (rc < 0)
> - rc = hisi_sas_slot_index_alloc(hisi_hba);
> + if (hisi_hha->hw->slot_index_alloc)
hisi_hha is wrong , it should be hisi_hba
> + rc = hisi_hba->hw->slot_index_alloc(hisi_hba, device);
> + else
> + rc = = task->tag;
Delete unnecessary "="
> if (rc < 0)
> goto err_out;
>
> @@ -2440,12 +2381,6 @@ int hisi_sas_alloc(struct hisi_hba *hisi_hba)
> if (!hisi_hba->breakpoint)
> goto err_out;
>
> - hisi_hba->slot_index_count = max_command_entries;
> - s = hisi_hba->slot_index_count / BITS_PER_BYTE;
> - hisi_hba->slot_index_tags = devm_kzalloc(dev, s, GFP_KERNEL);
> - if (!hisi_hba->slot_index_tags)
> - goto err_out;
> -
> s = sizeof(struct hisi_sas_initial_fis) * HISI_SAS_MAX_PHYS;
> hisi_hba->initial_fis = dmam_alloc_coherent(dev, s,
> &hisi_hba->initial_fis_dma,
> @@ -2460,9 +2395,6 @@ int hisi_sas_alloc(struct hisi_hba *hisi_hba)
> if (!hisi_hba->sata_breakpoint)
> goto err_out;
>
> - hisi_sas_slot_index_init(hisi_hba);
> - hisi_hba->last_slot_index = HISI_SAS_UNRESERVED_IPTT;
> -
> hisi_hba->wq = create_singlethread_workqueue(dev_name(dev));
> if (!hisi_hba->wq) {
> dev_err(dev, "sas_alloc: failed to create workqueue\n");
next prev parent reply other threads:[~2021-03-10 1:56 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-22 13:23 [PATCHv7 00/31] scsi: enable reserved commands for LLDDs Hannes Reinecke
2021-02-22 13:23 ` [PATCH 01/31] block: add flag for internal commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 02/31] scsi: add scsi_{get,put}_internal_cmd() helper Hannes Reinecke
2021-02-24 12:12 ` John Garry
2021-02-22 13:23 ` [PATCH 03/31] fnic: use internal commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 04/31] fnic: use scsi_host_busy_iter() to traverse commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 05/31] fnic: check for started requests in fnic_wq_copy_cleanup_handler() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 06/31] scsi: use real inquiry data when initialising devices Hannes Reinecke
2021-02-22 13:23 ` [PATCH 07/31] scsi: Use dummy inquiry data for the host device Hannes Reinecke
2021-02-22 13:23 ` [PATCH 08/31] scsi: revamp host device handling Hannes Reinecke
2021-02-24 13:12 ` John Garry
2021-02-24 14:24 ` Hannes Reinecke
2021-02-24 14:31 ` John Garry
2021-02-24 14:35 ` Hannes Reinecke
2021-02-22 13:23 ` [PATCH 09/31] snic: use reserved commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 10/31] snic: use tagset iter for traversing commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 11/31] snic: check for started requests in snic_hba_reset_cmpl_handler() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 12/31] scsi: implement reserved command handling Hannes Reinecke
2021-02-22 13:23 ` [PATCH 13/31] hpsa: move hpsa_hba_inquiry after scsi_add_host() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 14/31] hpsa: use reserved commands Hannes Reinecke
2021-03-11 22:03 ` michael.christie
2021-05-03 9:36 ` Hannes Reinecke
2021-02-22 13:23 ` [PATCH 15/31] hpsa: use scsi_host_busy_iter() to traverse outstanding commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 16/31] hpsa: drop refcount field from CommandList Hannes Reinecke
2021-02-22 13:23 ` [PATCH 17/31] aacraid: move scsi_add_host() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 18/31] aacraid: store target id in host_scribble Hannes Reinecke
2021-02-22 13:23 ` [PATCH 19/31] aacraid: use scsi_get_internal_cmd() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 20/31] aacraid: use scsi_host_busy_iter() to traverse outstanding commands Hannes Reinecke
2021-02-22 13:23 ` [PATCH 21/31] mv_sas: kill mvsas_debug_issue_ssp_tmf() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 22/31] pm8001: kill pm8001_issue_ssp_tmf() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 23/31] pm8001: kill 'dev' argument from pm8001_exec_internal_task_abort() Hannes Reinecke
2021-02-22 13:23 ` [PATCH 24/31] pm8001: use libsas-provided domain devices for SATA Hannes Reinecke
2021-02-22 13:23 ` [PATCH 25/31] libsas: add SCSI target pointer to struct domain_device Hannes Reinecke
2021-02-22 13:24 ` [PATCH 26/31] scsi: libsas,hisi_sas,mvsas,pm8001: Allocate Scsi_cmd for slow task Hannes Reinecke
2021-03-09 11:22 ` luojiaxing
2021-03-09 14:05 ` John Garry
2021-03-11 8:51 ` luojiaxing
2021-02-22 13:24 ` [PATCH 27/31] libsas: add tag to struct sas_task Hannes Reinecke
2021-02-22 13:24 ` [PATCH 28/31] scsi: hisi_sas: Use libsas slow task SCSI command Hannes Reinecke
2021-02-22 13:24 ` [PATCH 29/31] hisi_sas: use task tag to reference the slot Hannes Reinecke
2021-03-10 1:54 ` luojiaxing [this message]
2021-02-22 13:24 ` [PATCH 30/31] mv_sas: use reserved tags and drop private tag allocation Hannes Reinecke
2021-02-22 13:24 ` [PATCH 31/31] pm8001: use block-layer tags for ccb allocation Hannes Reinecke
2021-02-23 12:31 ` John Garry
2021-02-23 10:16 ` [PATCHv7 00/31] scsi: enable reserved commands for LLDDs John Garry
2021-02-23 17:50 ` John Garry
2021-02-24 6:54 ` Hannes Reinecke
2021-02-24 8:55 ` John Garry
2021-03-06 15:11 ` Don.Brace
2021-03-16 17:57 ` Don.Brace
2021-03-29 21:47 ` Don.Brace
2021-03-11 23:53 ` michael.christie
2021-03-12 16:08 ` Hannes Reinecke
2021-03-17 17:09 ` John Garry
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=2202707d-a1de-f1d1-3484-92989ff5c4f4@huawei.com \
--to=luojiaxing@huawei.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=john.garry@huawei.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).