Re: [PATCH 07/23] scsi: add a dma_alignment field to the host and host template

2024-03-25 Thread Bart Van Assche

On 3/24/24 16:54, Christoph Hellwig wrote:

Get drivers out of the business of having to call the block layer
dma alignment limits helpers themselves.


Reviewed-by: Bart Van Assche 

--
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/47028fba-7fb0-4eda-81a2-ccf439cfec6a%40acm.org.


Re: [PATCH 07/23] scsi: add a dma_alignment field to the host and host template

2024-03-25 Thread Damien Le Moal
On 3/25/24 08:54, Christoph Hellwig wrote:
> Get drivers out of the business of having to call the block layer
> dma alignment limits helpers themselves.
> 
> Signed-off-by: Christoph Hellwig 

Looks OK to me.

Reviewed-by: Damien Le Moal 

-- 
Damien Le Moal
Western Digital Research

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to open-iscsi+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/open-iscsi/3f140e6e-a73b-4c27-a14f-0add8c36dd26%40kernel.org.


[PATCH 07/23] scsi: add a dma_alignment field to the host and host template

2024-03-24 Thread Christoph Hellwig
Get drivers out of the business of having to call the block layer
dma alignment limits helpers themselves.

Signed-off-by: Christoph Hellwig 
---
 drivers/firewire/sbp2.c   |  6 --
 drivers/message/fusion/mptfc.c|  1 +
 drivers/message/fusion/mptsas.c   |  1 +
 drivers/message/fusion/mptscsih.c |  2 --
 drivers/message/fusion/mptspi.c   |  1 +
 drivers/scsi/hosts.c  |  6 ++
 drivers/scsi/iscsi_tcp.c  |  2 +-
 drivers/scsi/qla2xxx/qla_os.c |  6 +++---
 drivers/scsi/scsi_lib.c   | 11 ++-
 drivers/staging/rts5208/rtsx.c| 24 
 drivers/usb/image/microtek.c  |  8 +---
 drivers/usb/storage/scsiglue.c| 11 +--
 drivers/usb/storage/uas.c | 13 ++---
 include/scsi/scsi_host.h  |  3 +++
 14 files changed, 42 insertions(+), 53 deletions(-)

diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c
index e779d866022b9f..8f7810b2a4c10f 100644
--- a/drivers/firewire/sbp2.c
+++ b/drivers/firewire/sbp2.c
@@ -1500,12 +1500,6 @@ static int sbp2_scsi_slave_alloc(struct scsi_device 
*sdev)
 
sdev->allow_restart = 1;
 
-   /*
-* SBP-2 does not require any alignment, but we set it anyway
-* for compatibility with earlier versions of this driver.
-*/
-   blk_queue_update_dma_alignment(sdev->request_queue, 4 - 1);
-
if (lu->tgt->workarounds & SBP2_WORKAROUND_INQUIRY_36)
sdev->inquiry_len = 36;
 
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index c459f709107b7c..a3c17c4fe69c54 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -129,6 +129,7 @@ static const struct scsi_host_template 
mptfc_driver_template = {
.sg_tablesize   = MPT_SCSI_SG_DEPTH,
.max_sectors= 8192,
.cmd_per_lun= 7,
+   .dma_alignment  = 511,
.shost_groups   = mptscsih_host_attr_groups,
 };
 
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 300f8e955a5319..30cb4f64e77047 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -2020,6 +2020,7 @@ static const struct scsi_host_template 
mptsas_driver_template = {
.sg_tablesize   = MPT_SCSI_SG_DEPTH,
.max_sectors= 8192,
.cmd_per_lun= 7,
+   .dma_alignment  = 511,
.shost_groups   = mptscsih_host_attr_groups,
.no_write_same  = 1,
 };
diff --git a/drivers/message/fusion/mptscsih.c 
b/drivers/message/fusion/mptscsih.c
index 9080a73b4ea64a..6c3f25cc33ff99 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -2438,8 +2438,6 @@ mptscsih_slave_configure(struct scsi_device *sdev)
"tagged %d, simple %d\n",
ioc->name,sdev->tagged_supported, sdev->simple_tags));
 
-   blk_queue_dma_alignment (sdev->request_queue, 512 - 1);
-
return 0;
 }
 
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 6c5920db1e9dc5..574b882c9a8540 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -843,6 +843,7 @@ static const struct scsi_host_template 
mptspi_driver_template = {
.sg_tablesize   = MPT_SCSI_SG_DEPTH,
.max_sectors= 8192,
.cmd_per_lun= 7,
+   .dma_alignment  = 511,
.shost_groups   = mptscsih_host_attr_groups,
 };
 
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 4f495a41ec4aae..a67a98bd7ae2d7 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -478,6 +478,12 @@ struct Scsi_Host *scsi_host_alloc(const struct 
scsi_host_template *sht, int priv
else
shost->max_segment_size = BLK_MAX_SEGMENT_SIZE;
 
+   /* 32-byte (dword) is a common minimum for HBAs. */
+   if (sht->dma_alignment)
+   shost->dma_alignment = sht->dma_alignment;
+   else
+   shost->dma_alignment = 3;
+
/*
 * assume a 4GB boundary, if not set
 */
diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
index 8e14cea15f9808..60688f18fac6f7 100644
--- a/drivers/scsi/iscsi_tcp.c
+++ b/drivers/scsi/iscsi_tcp.c
@@ -943,6 +943,7 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, 
uint16_t cmds_max,
shost->max_id = 0;
shost->max_channel = 0;
shost->max_cmd_len = SCSI_MAX_VARLEN_CDB_SIZE;
+   shost->dma_alignment = 0;
 
rc = iscsi_host_get_max_scsi_cmds(shost, cmds_max);
if (rc < 0)
@@ -1065,7 +1066,6 @@ static int iscsi_sw_tcp_slave_configure(struct 
scsi_device *sdev)
if (conn->datadgst_en)
blk_queue_flag_set(QUEUE_FLAG_STABLE_WRITES,