Linux-ide Archive on lore.kernel.org
 help / color / Atom feed
* fix ATAPI support for libsas drivers
@ 2020-06-15  6:46 Christoph Hellwig
  2020-06-15  6:46 ` [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA Christoph Hellwig
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Christoph Hellwig @ 2020-06-15  6:46 UTC (permalink / raw)
  To: martin.petersen
  Cc: brking, jinpu.wang, John Garry, mpe, linux-scsi, linux-ide

Hi all,

this series fixes the ATAPI DMA drain refactoring for SAS HBAs that
use libsas.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA
  2020-06-15  6:46 fix ATAPI support for libsas drivers Christoph Hellwig
@ 2020-06-15  6:46 ` Christoph Hellwig
  2020-06-16  3:46   ` Martin K. Petersen
  2020-06-15  6:46 ` [PATCH 2/2] scsi: wire up ata_scsi_dma_need_drain for SAS HBA drivers Christoph Hellwig
  2020-06-18  9:02 ` fix ATAPI support for libsas drivers John Garry
  2 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2020-06-15  6:46 UTC (permalink / raw)
  To: martin.petersen
  Cc: brking, jinpu.wang, John Garry, mpe, linux-scsi, linux-ide

SAS drivers can be compiled with ata support disabled.  Provide a
stub so that the drivers don't have to ifdef around wiring up
ata_scsi_dma_need_drain.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 include/linux/libata.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/linux/libata.h b/include/linux/libata.h
index af832852e62044..042e584daca73e 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -1092,7 +1092,11 @@ extern int ata_scsi_ioctl(struct scsi_device *dev, unsigned int cmd,
 #define ATA_SCSI_COMPAT_IOCTL /* empty */
 #endif
 extern int ata_scsi_queuecmd(struct Scsi_Host *h, struct scsi_cmnd *cmd);
+#if IS_ENABLED(CONFIG_ATA)
 bool ata_scsi_dma_need_drain(struct request *rq);
+#else
+#define ata_scsi_dma_need_drain NULL
+#endif
 extern int ata_sas_scsi_ioctl(struct ata_port *ap, struct scsi_device *dev,
 			    unsigned int cmd, void __user *arg);
 extern bool ata_link_online(struct ata_link *link);
-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 2/2] scsi: wire up ata_scsi_dma_need_drain for SAS HBA drivers
  2020-06-15  6:46 fix ATAPI support for libsas drivers Christoph Hellwig
  2020-06-15  6:46 ` [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA Christoph Hellwig
@ 2020-06-15  6:46 ` Christoph Hellwig
  2020-06-18  9:02 ` fix ATAPI support for libsas drivers John Garry
  2 siblings, 0 replies; 8+ messages in thread
From: Christoph Hellwig @ 2020-06-15  6:46 UTC (permalink / raw)
  To: martin.petersen
  Cc: brking, jinpu.wang, John Garry, mpe, linux-scsi, linux-ide

We need ata_scsi_dma_need_drain for all drivers wired up to drive ATAPI
devices through libata.  That also includes the SAS HBA drivers in
addition to native libata HBA drivers.

Fixes: cc97923a5bcc ("block: move dma drain handling to scsi")
Reported-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Jack Wang <jinpu.wang@cloud.ionos.com>
Acked-by: John Garry <john.garry@huawei.com>
---
 drivers/scsi/aic94xx/aic94xx_init.c    | 1 +
 drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 1 +
 drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 1 +
 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 1 +
 drivers/scsi/ipr.c                     | 1 +
 drivers/scsi/isci/init.c               | 1 +
 drivers/scsi/mvsas/mv_init.c           | 1 +
 drivers/scsi/pm8001/pm8001_init.c      | 1 +
 8 files changed, 8 insertions(+)

diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
index d022407e5645c7..bef47f38dd0dbc 100644
--- a/drivers/scsi/aic94xx/aic94xx_init.c
+++ b/drivers/scsi/aic94xx/aic94xx_init.c
@@ -40,6 +40,7 @@ static struct scsi_host_template aic94xx_sht = {
 	/* .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,
 	.scan_finished		= asd_scan_finished,
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
index 2e1718f9ade218..09a7669dad4c67 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c
@@ -1756,6 +1756,7 @@ static struct scsi_host_template sht_v1_hw = {
 	.proc_name		= DRV_NAME,
 	.module			= THIS_MODULE,
 	.queuecommand		= sas_queuecommand,
+	.dma_need_drain		= ata_scsi_dma_need_drain,
 	.target_alloc		= sas_target_alloc,
 	.slave_configure	= hisi_sas_slave_configure,
 	.scan_finished		= hisi_sas_scan_finished,
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index e7e7849a4c14e2..968d3870235359 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -3532,6 +3532,7 @@ static struct scsi_host_template sht_v2_hw = {
 	.proc_name		= DRV_NAME,
 	.module			= THIS_MODULE,
 	.queuecommand		= sas_queuecommand,
+	.dma_need_drain		= ata_scsi_dma_need_drain,
 	.target_alloc		= sas_target_alloc,
 	.slave_configure	= hisi_sas_slave_configure,
 	.scan_finished		= hisi_sas_scan_finished,
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 3e6b78a1f993b9..55e2321a65bc5f 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -3075,6 +3075,7 @@ static struct scsi_host_template sht_v3_hw = {
 	.proc_name		= DRV_NAME,
 	.module			= THIS_MODULE,
 	.queuecommand		= sas_queuecommand,
+	.dma_need_drain		= ata_scsi_dma_need_drain,
 	.target_alloc		= sas_target_alloc,
 	.slave_configure	= hisi_sas_slave_configure,
 	.scan_finished		= hisi_sas_scan_finished,
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 7d77997d26d457..7d86f4ca266c86 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -6731,6 +6731,7 @@ static struct scsi_host_template driver_template = {
 	.compat_ioctl = ipr_ioctl,
 #endif
 	.queuecommand = ipr_queuecommand,
+	.dma_need_drain = ata_scsi_dma_need_drain,
 	.eh_abort_handler = ipr_eh_abort,
 	.eh_device_reset_handler = ipr_eh_dev_reset,
 	.eh_host_reset_handler = ipr_eh_host_reset,
diff --git a/drivers/scsi/isci/init.c b/drivers/scsi/isci/init.c
index 974c3b9116d5ba..085e285f427d93 100644
--- a/drivers/scsi/isci/init.c
+++ b/drivers/scsi/isci/init.c
@@ -153,6 +153,7 @@ static struct scsi_host_template isci_sht = {
 	.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,
 	.scan_finished			= isci_host_scan_finished,
diff --git a/drivers/scsi/mvsas/mv_init.c b/drivers/scsi/mvsas/mv_init.c
index 5973eed9493820..b0de3bdb01db06 100644
--- a/drivers/scsi/mvsas/mv_init.c
+++ b/drivers/scsi/mvsas/mv_init.c
@@ -33,6 +33,7 @@ static struct scsi_host_template mvs_sht = {
 	.module			= THIS_MODULE,
 	.name			= DRV_NAME,
 	.queuecommand		= sas_queuecommand,
+	.dma_need_drain		= ata_scsi_dma_need_drain,
 	.target_alloc		= sas_target_alloc,
 	.slave_configure	= sas_slave_configure,
 	.scan_finished		= mvs_scan_finished,
diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c
index a8f5344fdfda2a..9e99262a2b9dd3 100644
--- a/drivers/scsi/pm8001/pm8001_init.c
+++ b/drivers/scsi/pm8001/pm8001_init.c
@@ -87,6 +87,7 @@ static struct scsi_host_template pm8001_sht = {
 	.module			= THIS_MODULE,
 	.name			= DRV_NAME,
 	.queuecommand		= sas_queuecommand,
+	.dma_need_drain		= ata_scsi_dma_need_drain,
 	.target_alloc		= sas_target_alloc,
 	.slave_configure	= sas_slave_configure,
 	.scan_finished		= pm8001_scan_finished,
-- 
2.26.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA
  2020-06-15  6:46 ` [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA Christoph Hellwig
@ 2020-06-16  3:46   ` Martin K. Petersen
  0 siblings, 0 replies; 8+ messages in thread
From: Martin K. Petersen @ 2020-06-16  3:46 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Martin K . Petersen, John Garry, linux-scsi, brking, jinpu.wang,
	mpe, linux-ide

On Mon, 15 Jun 2020 08:46:23 +0200, Christoph Hellwig wrote:

> SAS drivers can be compiled with ata support disabled.  Provide a
> stub so that the drivers don't have to ifdef around wiring up
> ata_scsi_dma_need_drain.

Applied to 5.8/scsi-fixes, thanks!

[1/2] scsi: libata: Provide an ata_scsi_dma_need_drain stub for !CONFIG_ATA
      https://git.kernel.org/mkp/scsi/c/7bb7ee8704fe
[2/2] scsi: Wire up ata_scsi_dma_need_drain for SAS HBA drivers
      https://git.kernel.org/mkp/scsi/c/b8f1d1e05817

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: fix ATAPI support for libsas drivers
  2020-06-15  6:46 fix ATAPI support for libsas drivers Christoph Hellwig
  2020-06-15  6:46 ` [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA Christoph Hellwig
  2020-06-15  6:46 ` [PATCH 2/2] scsi: wire up ata_scsi_dma_need_drain for SAS HBA drivers Christoph Hellwig
@ 2020-06-18  9:02 ` John Garry
  2020-06-18 15:28   ` Christoph Hellwig
  2 siblings, 1 reply; 8+ messages in thread
From: John Garry @ 2020-06-18  9:02 UTC (permalink / raw)
  To: Christoph Hellwig, martin.petersen
  Cc: brking, jinpu.wang, mpe, linux-scsi, linux-ide

On 15/06/2020 07:46, Christoph Hellwig wrote:
> Hi all,
> 
> this series fixes the ATAPI DMA drain refactoring for SAS HBAs that
> use libsas.
> .
> 

Something I meant to ask before and was curious about, specifically 
since ipr doesn't actually use libsas: Why not wire up other SAS HBAs, 
like megaraid_sas?

Thanks,
John

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: fix ATAPI support for libsas drivers
  2020-06-18  9:02 ` fix ATAPI support for libsas drivers John Garry
@ 2020-06-18 15:28   ` Christoph Hellwig
  2020-06-22  6:28     ` Hannes Reinecke
  0 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2020-06-18 15:28 UTC (permalink / raw)
  To: John Garry
  Cc: Christoph Hellwig, martin.petersen, brking, jinpu.wang, mpe,
	linux-scsi, linux-ide

On Thu, Jun 18, 2020 at 10:02:58AM +0100, John Garry wrote:
> On 15/06/2020 07:46, Christoph Hellwig wrote:
>> Hi all,
>>
>> this series fixes the ATAPI DMA drain refactoring for SAS HBAs that
>> use libsas.
>> .
>>
>
> Something I meant to ask before and was curious about, specifically since 
> ipr doesn't actually use libsas: Why not wire up other SAS HBAs, like 
> megaraid_sas?

megaraid_sas and mpt3sas don't use the libata code at all.  ipr actually
is a special case and uses libata directly instead of libsas (something
I hadn't realized, but which doesn't change anything for the patches
itself, just possibly the commit log).

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: fix ATAPI support for libsas drivers
  2020-06-18 15:28   ` Christoph Hellwig
@ 2020-06-22  6:28     ` Hannes Reinecke
  2020-06-23 11:44       ` John Garry
  0 siblings, 1 reply; 8+ messages in thread
From: Hannes Reinecke @ 2020-06-22  6:28 UTC (permalink / raw)
  To: Christoph Hellwig, John Garry
  Cc: martin.petersen, brking, jinpu.wang, mpe, linux-scsi, linux-ide

On 6/18/20 5:28 PM, Christoph Hellwig wrote:
> On Thu, Jun 18, 2020 at 10:02:58AM +0100, John Garry wrote:
>> On 15/06/2020 07:46, Christoph Hellwig wrote:
>>> Hi all,
>>>
>>> this series fixes the ATAPI DMA drain refactoring for SAS HBAs that
>>> use libsas.
>>> .
>>>
>>
>> Something I meant to ask before and was curious about, specifically since
>> ipr doesn't actually use libsas: Why not wire up other SAS HBAs, like
>> megaraid_sas?
> 
> megaraid_sas and mpt3sas don't use the libata code at all.  ipr actually
> is a special case and uses libata directly instead of libsas (something
> I hadn't realized, but which doesn't change anything for the patches
> itself, just possibly the commit log).
> 
More to the point, megaraid_sas and mpt3sas have their own SATL in 
firmware so there is no need to use libata here.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke            Teamlead Storage & Networking
hare@suse.de                               +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: fix ATAPI support for libsas drivers
  2020-06-22  6:28     ` Hannes Reinecke
@ 2020-06-23 11:44       ` John Garry
  0 siblings, 0 replies; 8+ messages in thread
From: John Garry @ 2020-06-23 11:44 UTC (permalink / raw)
  To: Hannes Reinecke, Christoph Hellwig
  Cc: martin.petersen, brking, jinpu.wang, mpe, linux-scsi, linux-ide

On 22/06/2020 07:28, Hannes Reinecke wrote:
> On 6/18/20 5:28 PM, Christoph Hellwig wrote:
>> On Thu, Jun 18, 2020 at 10:02:58AM +0100, John Garry wrote:
>>> On 15/06/2020 07:46, Christoph Hellwig wrote:
>>>> Hi all,
>>>>
>>>> this series fixes the ATAPI DMA drain refactoring for SAS HBAs that
>>>> use libsas.
>>>> .
>>>>
>>>
>>> Something I meant to ask before and was curious about, specifically 
>>> since
>>> ipr doesn't actually use libsas: Why not wire up other SAS HBAs, like
>>> megaraid_sas?
>>
>> megaraid_sas and mpt3sas don't use the libata code at all.  ipr actually
>> is a special case and uses libata directly instead of libsas (something
>> I hadn't realized, but which doesn't change anything for the patches
>> itself, just possibly the commit log).
>>
> More to the point, megaraid_sas and mpt3sas have their own SATL in 
> firmware so there is no need to use libata here.

ok.

BTW, @Christoph, I have no setup to verify this refactoring for anything 
which uses libsas (that I know about, anyway).

Thanks


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, back to index

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-15  6:46 fix ATAPI support for libsas drivers Christoph Hellwig
2020-06-15  6:46 ` [PATCH 1/2] libata: provide a ata_scsi_dma_need_drain stub for !CONFIG_ATA Christoph Hellwig
2020-06-16  3:46   ` Martin K. Petersen
2020-06-15  6:46 ` [PATCH 2/2] scsi: wire up ata_scsi_dma_need_drain for SAS HBA drivers Christoph Hellwig
2020-06-18  9:02 ` fix ATAPI support for libsas drivers John Garry
2020-06-18 15:28   ` Christoph Hellwig
2020-06-22  6:28     ` Hannes Reinecke
2020-06-23 11:44       ` John Garry

Linux-ide Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-ide/0 linux-ide/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-ide linux-ide/ https://lore.kernel.org/linux-ide \
		linux-ide@vger.kernel.org
	public-inbox-index linux-ide

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-ide


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git