2024-03-08 11:45:08

by John Garry

[permalink] [raw]
Subject: [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas

There is much duplication in the scsi_host_template structure for the
drivers which use libsas.

Similar to how a standard template is used in libata with __ATA_BASE_SHT,
create a standard template in LIBSAS_SHT_BASE.

Based on following:
b914227e4215 (tag: mkp-scsi-staging, mkp-scsi/staging, mkp-scsi/for-next, mkp-scsi/6.9/scsi-staging) Merge patch series "Pass data lifetime information to SCSI disk devices"

Differences to v1:
- tidy libsas.h change (Jason)
- Don't set eh_abort_handler in LIBSAS_SHT_BASE (Jason)
- Remove sg_tablesize in LIBSAS_SHT_BASE, as W=1 build dislikes it
- Add some RB tags (Thanks)

John Garry (6):
scsi: libsas: Add LIBSAS_SHT_BASE
scsi: pm8001: Use LIBSAS_SHT_BASE
scsi: hisi_sas: Use LIBSAS_SHT_BASE_NO_SLAVE_INIT
scsi: aic94xx: Use LIBSAS_SHT_BASE
scsi: mvsas: Use LIBSAS_SHT_BASE
scsi: isci: Use LIBSAS_SHT_BASE

drivers/scsi/aic94xx/aic94xx_init.c | 21 ++-----------------
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 18 +---------------
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 18 +---------------
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 18 +---------------
drivers/scsi/isci/init.c | 23 ++------------------
drivers/scsi/mvsas/mv_init.c | 19 +----------------
drivers/scsi/pm8001/pm8001_init.c | 20 +-----------------
include/scsi/libsas.h | 29 ++++++++++++++++++++++++++
8 files changed, 38 insertions(+), 128 deletions(-)

--
2.31.1



2024-03-08 11:45:11

by John Garry

[permalink] [raw]
Subject: [PATCH v2 2/6] scsi: pm8001: Use LIBSAS_SHT_BASE

Use standard template for scsi_host_template structure to reduce
duplication.

Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/pm8001/pm8001_init.c | 20 +-------------------
1 file changed, 1 insertion(+), 19 deletions(-)

diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index ed6b7d954dda..2ba320ff0d50 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -110,29 +110,11 @@ static void pm8001_map_queues(struct Scsi_Host *shost)
* The main structure which LLDD must register for scsi core.
*/
static const struct scsi_host_template pm8001_sht = {
- .module = THIS_MODULE,
- .name = DRV_NAME,
- .proc_name = DRV_NAME,
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
- .slave_configure = sas_slave_configure,
+ LIBSAS_SHT_BASE
.scan_finished = pm8001_scan_finished,
.scan_start = pm8001_scan_start,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
.can_queue = 1,
- .this_id = -1,
.sg_tablesize = PM8001_MAX_DMA_SG,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
- .slave_alloc = sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
.shost_groups = pm8001_host_groups,
.track_queue_depth = 1,
.cmd_per_lun = 32,
--
2.31.1


2024-03-08 11:46:00

by John Garry

[permalink] [raw]
Subject: [PATCH v2 6/6] scsi: isci: Use LIBSAS_SHT_BASE

Use standard template for scsi_host_template structure to reduce
duplication.

Reviewed-by: Jason Yan <[email protected]>
Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/isci/init.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)

diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index c582a3932cea..2b29e8505987 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -150,31 +150,12 @@ static struct attribute *isci_host_attrs[] = {
ATTRIBUTE_GROUPS(isci_host);

static const struct scsi_host_template isci_sht = {
-
- .module = THIS_MODULE,
- .name = DRV_NAME,
- .proc_name = DRV_NAME,
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
- .slave_configure = sas_slave_configure,
+ LIBSAS_SHT_BASE
.scan_finished = isci_host_scan_finished,
.scan_start = isci_host_start,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
.can_queue = ISCI_CAN_QUEUE_VAL,
- .this_id = -1,
.sg_tablesize = SG_ALL,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_abort_handler = sas_eh_abort_handler,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
- .slave_alloc = sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
+ .eh_abort_handler = sas_eh_abort_handler,
.shost_groups = isci_host_groups,
.track_queue_depth = 1,
};
--
2.31.1


2024-03-08 11:46:10

by John Garry

[permalink] [raw]
Subject: [PATCH v2 4/6] scsi: aic94xx: Use LIBSAS_SHT_BASE

Use standard template for scsi_host_template structure to reduce
duplication.

Reviewed-by: Jason Yan <[email protected]>
Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/aic94xx/aic94xx_init.c | 21 ++-------------------
1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index 8a3340d8d7ad..53fe68124ff4 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -24,6 +24,7 @@

/* The format is "version.release.patchlevel" */
#define ASD_DRIVER_VERSION "1.0.3"
+#define DRV_NAME "aic94xx"

static int use_msi = 0;
module_param_named(use_msi, use_msi, int, S_IRUGO);
@@ -36,29 +37,11 @@ static int asd_scan_finished(struct Scsi_Host *, unsigned long);
static void asd_scan_start(struct Scsi_Host *);

static const struct scsi_host_template aic94xx_sht = {
- .module = THIS_MODULE,
- /* .name is initialized */
- .name = "aic94xx",
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
- .slave_configure = sas_slave_configure,
+ LIBSAS_SHT_BASE
.scan_finished = asd_scan_finished,
.scan_start = asd_scan_start,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
.can_queue = 1,
- .this_id = -1,
.sg_tablesize = SG_ALL,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
- .slave_alloc = sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
.track_queue_depth = 1,
};

--
2.31.1


2024-03-08 11:47:42

by John Garry

[permalink] [raw]
Subject: [PATCH v2 3/6] scsi: hisi_sas: Use LIBSAS_SHT_BASE_NO_SLAVE_INIT

Use standard template for scsi_host_template structure to reduce
duplication.

Reviewed-by: Jason Yan <[email protected]>
Signed-off-by: John Garry <[email protected]>
---
drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 18 +-----------------
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 18 +-----------------
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 18 +-----------------
3 files changed, 3 insertions(+), 51 deletions(-)

diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 3c555579f9a1..161feae3acab 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1735,28 +1735,12 @@ static struct attribute *host_v1_hw_attrs[] = {
ATTRIBUTE_GROUPS(host_v1_hw);

static const struct scsi_host_template sht_v1_hw = {
- .name = DRV_NAME,
- .proc_name = DRV_NAME,
- .module = THIS_MODULE,
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
+ LIBSAS_SHT_BASE_NO_SLAVE_INIT
.slave_configure = hisi_sas_slave_configure,
.scan_finished = hisi_sas_scan_finished,
.scan_start = hisi_sas_scan_start,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
- .this_id = -1,
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
.slave_alloc = hisi_sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
.shost_groups = host_v1_hw_groups,
.host_reset = hisi_sas_host_reset,
};
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index 73b378837da7..b8646f6e4c6d 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -3562,28 +3562,12 @@ static void map_queues_v2_hw(struct Scsi_Host *shost)
}

static const struct scsi_host_template sht_v2_hw = {
- .name = DRV_NAME,
- .proc_name = DRV_NAME,
- .module = THIS_MODULE,
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
+ LIBSAS_SHT_BASE_NO_SLAVE_INIT
.slave_configure = hisi_sas_slave_configure,
.scan_finished = hisi_sas_scan_finished,
.scan_start = hisi_sas_scan_start,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
- .this_id = -1,
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
.slave_alloc = hisi_sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
.shost_groups = host_v2_hw_groups,
.host_reset = hisi_sas_host_reset,
.map_queues = map_queues_v2_hw,
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 7d2a33514538..16ef89002fd4 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -3315,30 +3315,14 @@ static void hisi_sas_map_queues(struct Scsi_Host *shost)
}

static const struct scsi_host_template sht_v3_hw = {
- .name = DRV_NAME,
- .proc_name = DRV_NAME,
- .module = THIS_MODULE,
- .queuecommand = sas_queuecommand,
- .dma_need_drain = ata_scsi_dma_need_drain,
- .target_alloc = sas_target_alloc,
+ LIBSAS_SHT_BASE_NO_SLAVE_INIT
.slave_configure = slave_configure_v3_hw,
.scan_finished = hisi_sas_scan_finished,
.scan_start = hisi_sas_scan_start,
.map_queues = hisi_sas_map_queues,
- .change_queue_depth = sas_change_queue_depth,
- .bios_param = sas_bios_param,
- .this_id = -1,
.sg_tablesize = HISI_SAS_SGE_PAGE_CNT,
.sg_prot_tablesize = HISI_SAS_SGE_PAGE_CNT,
- .max_sectors = SCSI_DEFAULT_MAX_SECTORS,
- .eh_device_reset_handler = sas_eh_device_reset_handler,
- .eh_target_reset_handler = sas_eh_target_reset_handler,
.slave_alloc = hisi_sas_slave_alloc,
- .target_destroy = sas_target_destroy,
- .ioctl = sas_ioctl,
-#ifdef CONFIG_COMPAT
- .compat_ioctl = sas_ioctl,
-#endif
.shost_groups = host_v3_hw_groups,
.tag_alloc_policy = BLK_TAG_ALLOC_RR,
.host_reset = hisi_sas_host_reset,
--
2.31.1


2024-03-10 20:17:47

by Igor Pylypiv

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] scsi: pm8001: Use LIBSAS_SHT_BASE

On Fri, Mar 08, 2024 at 11:43:35AM +0000, John Garry wrote:
> Use standard template for scsi_host_template structure to reduce
> duplication.
>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/pm8001/pm8001_init.c | 20 +-------------------
> 1 file changed, 1 insertion(+), 19 deletions(-)

Reviewed-by: Igor Pylypiv <[email protected]>

Thanks,
Igor

2024-03-10 20:19:35

by Igor Pylypiv

[permalink] [raw]
Subject: Re: [PATCH v2 3/6] scsi: hisi_sas: Use LIBSAS_SHT_BASE_NO_SLAVE_INIT

On Fri, Mar 08, 2024 at 11:43:36AM +0000, John Garry wrote:
> Use standard template for scsi_host_template structure to reduce
> duplication.
>
> Reviewed-by: Jason Yan <[email protected]>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 18 +-----------------
> drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 18 +-----------------
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 18 +-----------------
> 3 files changed, 3 insertions(+), 51 deletions(-)

Reviewed-by: Igor Pylypiv <[email protected]>

Thanks,
Igor

2024-03-10 20:22:46

by Igor Pylypiv

[permalink] [raw]
Subject: Re: [PATCH v2 4/6] scsi: aic94xx: Use LIBSAS_SHT_BASE

On Fri, Mar 08, 2024 at 11:43:37AM +0000, John Garry wrote:
> Use standard template for scsi_host_template structure to reduce
> duplication.
>
> Reviewed-by: Jason Yan <[email protected]>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/aic94xx/aic94xx_init.c | 21 ++-------------------
> 1 file changed, 2 insertions(+), 19 deletions(-)

Reviewed-by: Igor Pylypiv <[email protected]>

Thanks,
Igor

2024-03-10 20:25:24

by Igor Pylypiv

[permalink] [raw]
Subject: Re: [PATCH v2 6/6] scsi: isci: Use LIBSAS_SHT_BASE

On Fri, Mar 08, 2024 at 11:43:39AM +0000, John Garry wrote:
> Use standard template for scsi_host_template structure to reduce
> duplication.
>
> Reviewed-by: Jason Yan <[email protected]>
> Signed-off-by: John Garry <[email protected]>
> ---
> drivers/scsi/isci/init.c | 23 ++---------------------
> 1 file changed, 2 insertions(+), 21 deletions(-)
>

Reviewed-by: Igor Pylypiv <[email protected]>

Thanks,
Igor

2024-03-11 01:47:22

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas

Hi John,

On 2024/3/8 19:43, John Garry wrote:
> There is much duplication in the scsi_host_template structure for the
> drivers which use libsas.
>
> Similar to how a standard template is used in libata with __ATA_BASE_SHT,
> create a standard template in LIBSAS_SHT_BASE.
>
> Based on following:
> b914227e4215 (tag: mkp-scsi-staging, mkp-scsi/staging, mkp-scsi/for-next, mkp-scsi/6.9/scsi-staging) Merge patch series "Pass data lifetime information to SCSI disk devices"
>
> Differences to v1:
> - tidy libsas.h change (Jason)
> - Don't set eh_abort_handler in LIBSAS_SHT_BASE (Jason)
> - Remove sg_tablesize in LIBSAS_SHT_BASE, as W=1 build dislikes it

I cannot find sg_tablesize in LIBSAS_SHT_BASE in v1, did I misssed anything?

Thanks,
Jason

> - Add some RB tags (Thanks)
>
> John Garry (6):
> scsi: libsas: Add LIBSAS_SHT_BASE
> scsi: pm8001: Use LIBSAS_SHT_BASE
> scsi: hisi_sas: Use LIBSAS_SHT_BASE_NO_SLAVE_INIT
> scsi: aic94xx: Use LIBSAS_SHT_BASE
> scsi: mvsas: Use LIBSAS_SHT_BASE
> scsi: isci: Use LIBSAS_SHT_BASE
>
> drivers/scsi/aic94xx/aic94xx_init.c | 21 ++-----------------
> drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 18 +---------------
> drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 18 +---------------
> drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 18 +---------------
> drivers/scsi/isci/init.c | 23 ++------------------
> drivers/scsi/mvsas/mv_init.c | 19 +----------------
> drivers/scsi/pm8001/pm8001_init.c | 20 +-----------------
> include/scsi/libsas.h | 29 ++++++++++++++++++++++++++
> 8 files changed, 38 insertions(+), 128 deletions(-)
>

2024-03-11 01:57:42

by Jason Yan

[permalink] [raw]
Subject: Re: [PATCH v2 2/6] scsi: pm8001: Use LIBSAS_SHT_BASE


On 2024/3/8 19:43, John Garry wrote:
> Use standard template for scsi_host_template structure to reduce
> duplication.
>
> Signed-off-by: John Garry<[email protected]>
> ---
> drivers/scsi/pm8001/pm8001_init.c | 20 +-------------------
> 1 file changed, 1 insertion(+), 19 deletions(-)

Reviewed-by: Jason Yan <[email protected]>

2024-03-11 07:41:35

by John Garry

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas

On 11/03/2024 01:46, Jason Yan wrote:
>> - Remove sg_tablesize in LIBSAS_SHT_BASE, as W=1 build dislikes it
>
> I cannot find sg_tablesize in LIBSAS_SHT_BASE in v1, did I misssed
> anything?

Ah, I think that I just had that change local but then decided to drop
it due to W=1 build issue.

Thanks for your eagle eye checking.

John

2024-03-25 20:14:26

by Martin K. Petersen

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas


John,

> There is much duplication in the scsi_host_template structure for the
> drivers which use libsas.
>
> Similar to how a standard template is used in libata with
> __ATA_BASE_SHT, create a standard template in LIBSAS_SHT_BASE.

Applied to 6.10/scsi-staging, thanks!

--
Martin K. Petersen Oracle Linux Engineering