All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Pylypiv <ipylypiv@google.com>
To: John Garry <john.g.garry@oracle.com>
Cc: jejb@linux.ibm.com, martin.petersen@oracle.com,
	chenxiang66@hisilicon.com, jinpu.wang@cloud.ionos.com,
	artur.paszkiewicz@intel.com, yanaijie@huawei.com,
	dlemoal@kernel.org, cassel@kernel.org,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/6] scsi: libsas: Add LIBSAS_SHT_BASE
Date: Fri, 8 Mar 2024 11:41:38 -0800	[thread overview]
Message-ID: <Zetp8ufVfxxo6DOF@google.com> (raw)
In-Reply-To: <20240308114339.1340549-2-john.g.garry@oracle.com>

On Fri, Mar 08, 2024 at 11:43:34AM +0000, 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.
> 
> Don't set a default for max_sectors at SCSI_DEFAULT_MAX_SECTORS, as
> scsi_host_alloc() will default to this value automatically.
> 
> Even though some drivers don't set proc_name, it won't make much difference
> to set as DRV_NAME.
> 
> Also add LIBSAS_SHT_BASE_NO_SLAVE_INIT for the hisi_sas drivers which have
> custom .slave_alloc and .slave_configure methods.

Looks like libata drivers have no problem overriding default values that were
set by __ATA_BASE_SHT. For example __ATA_BASE_SHT sets .can_queue .sdev_attrs
and then AHCI_SHT overrides those with AHCI specific values: 

#define AHCI_SHT(drv_name)                                              \       
        ATA_NCQ_SHT(drv_name),                                          \       
        .can_queue              = AHCI_MAX_CMDS,                        \       
        .sg_tablesize           = AHCI_MAX_SG,                          \       
        .dma_boundary           = AHCI_DMA_BOUNDARY,                    \       
        .shost_attrs            = ahci_shost_attrs,                     \       
        .sdev_attrs             = ahci_sdev_attrs 

Perhaps there is no need for LIBSAS_SHT_BASE_NO_SLAVE_INIT since hisi_sas
can use LIBSAS_SHT_BASE with .slave_alloc and .slave_configure overrides?

Similarly hisi_sas and pm8001 can override the default ".sg_tablesize = SG_ALL".

Thanks,
Igor

> 
> Reviewed-by: Jason Yan <yanaijie@huawei.com>
> Signed-off-by: John Garry <john.g.garry@oracle.com>
> ---
>  include/scsi/libsas.h | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/include/scsi/libsas.h b/include/scsi/libsas.h
> index f5257103fdb6..de842602f47e 100644
> --- a/include/scsi/libsas.h
> +++ b/include/scsi/libsas.h
> @@ -726,4 +726,33 @@ void sas_notify_port_event(struct asd_sas_phy *phy, enum port_event event,
>  void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event,
>  			   gfp_t gfp_flags);
>  
> +#define __LIBSAS_SHT_BASE						\
> +	.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,		\
> +	.change_queue_depth		= sas_change_queue_depth,	\
> +	.bios_param			= sas_bios_param,		\
> +	.this_id			= -1,				\
> +	.eh_device_reset_handler	= sas_eh_device_reset_handler, 	\
> +	.eh_target_reset_handler	= sas_eh_target_reset_handler,	\
> +	.target_destroy			= sas_target_destroy,		\
> +	.ioctl				= sas_ioctl,			\
> +
> +#ifdef CONFIG_COMPAT
> +#define _LIBSAS_SHT_BASE		__LIBSAS_SHT_BASE		\
> +	.compat_ioctl			= sas_ioctl,
> +#else
> +#define _LIBSAS_SHT_BASE		__LIBSAS_SHT_BASE
> +#endif
> +
> +#define LIBSAS_SHT_BASE			_LIBSAS_SHT_BASE		\
> +	.slave_configure		= sas_slave_configure,		\
> +	.slave_alloc			= sas_slave_alloc,		\
> +
> +#define LIBSAS_SHT_BASE_NO_SLAVE_INIT	_LIBSAS_SHT_BASE
> +
> +
>  #endif /* _SASLIB_H_ */
> -- 
> 2.31.1
> 

  reply	other threads:[~2024-03-08 19:41 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-08 11:43 [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas John Garry
2024-03-08 11:43 ` [PATCH v2 1/6] scsi: libsas: Add LIBSAS_SHT_BASE John Garry
2024-03-08 19:41   ` Igor Pylypiv [this message]
2024-03-10 10:02     ` John Garry
2024-03-10 20:05       ` Igor Pylypiv
2024-03-08 11:43 ` [PATCH v2 2/6] scsi: pm8001: Use LIBSAS_SHT_BASE John Garry
2024-03-10 20:17   ` Igor Pylypiv
2024-03-11  1:57   ` Jason Yan
2024-03-08 11:43 ` [PATCH v2 3/6] scsi: hisi_sas: Use LIBSAS_SHT_BASE_NO_SLAVE_INIT John Garry
2024-03-10 20:19   ` Igor Pylypiv
2024-03-08 11:43 ` [PATCH v2 4/6] scsi: aic94xx: Use LIBSAS_SHT_BASE John Garry
2024-03-10 20:22   ` Igor Pylypiv
2024-03-08 11:43 ` [PATCH v2 5/6] scsi: mvsas: " John Garry
2024-03-10 20:24   ` Igor Pylypiv
2024-03-11  2:04   ` Jason Yan
2024-03-08 11:43 ` [PATCH v2 6/6] scsi: isci: " John Garry
2024-03-10 20:25   ` Igor Pylypiv
2024-03-11  1:46 ` [PATCH v2 0/6] Add LIBSAS_SHT_BASE for libsas Jason Yan
2024-03-11  7:41   ` John Garry
2024-03-25 20:11 ` 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=Zetp8ufVfxxo6DOF@google.com \
    --to=ipylypiv@google.com \
    --cc=artur.paszkiewicz@intel.com \
    --cc=cassel@kernel.org \
    --cc=chenxiang66@hisilicon.com \
    --cc=dlemoal@kernel.org \
    --cc=jejb@linux.ibm.com \
    --cc=jinpu.wang@cloud.ionos.com \
    --cc=john.g.garry@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=yanaijie@huawei.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.