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: 9f3dbcb5632d (origin/queue, origin/6.9/scsi-queue, libsas-6.8) scsi: csiostor: Avoid function pointer casts plus this: https://lore.kernel.org/linux-scsi/20240305005103.1849325-1-ipylypiv@xxxxxxxxxx/T/#t 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 | 22 +------------------ drivers/scsi/mvsas/mv_init.c | 19 +--------------- drivers/scsi/pm8001/pm8001_init.c | 20 +---------------- include/scsi/libsas.h | 30 ++++++++++++++++++++++++++ 8 files changed, 38 insertions(+), 128 deletions(-) -- 2.31.1