From: Bart Van Assche <bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
To: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: Sagi Grimberg
<sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>,
Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Sebastian Parschauer
<sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>,
"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH 0/6] SRP initiator related bug fixes
Date: Fri, 4 Dec 2015 15:08:15 -0800 [thread overview]
Message-ID: <56621CDF.3070604@sandisk.com> (raw)
In-Reply-To: <565DE3EC.2070002-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
On 12/01/2015 10:16 AM, Bart Van Assche wrote:
> [ ... ]
Hello,
While preparing this patch series I noticed that none of the SCSI RDMA
initiator drivers syncs RDMA buffers before performing RDMA. Does
anyone know why something like the code below is not present in these
drivers and why no dma_sync_sg operations are present in struct
ib_dma_mapping_ops ?
Thanks,
Bart.
[PATCH] IB/srp: Sync scatterlists before and after DMA
---
drivers/infiniband/ulp/srp/ib_srp.c | 10 ++++++++++
include/rdma/ib_verbs.h | 16 ++++++++++++++++
2 files changed, 26 insertions(+)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index 3db9a65..23e3c25 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1780,6 +1780,7 @@ static int srp_post_recv(struct srp_rdma_ch *ch, struct srp_iu *iu)
static void srp_process_rsp(struct srp_rdma_ch *ch, struct srp_rsp *rsp)
{
struct srp_target_port *target = ch->target;
+ struct ib_device *dev = target->srp_host->srp_dev->dev;
struct srp_request *req;
struct scsi_cmnd *scmnd;
unsigned long flags;
@@ -1828,6 +1829,11 @@ static void srp_process_rsp(struct srp_rdma_ch *ch, struct srp_rsp *rsp)
else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOOVER))
scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt));
+ if (scmnd->sc_data_direction != DMA_NONE)
+ ib_dma_sync_sg_for_cpu(dev, scsi_sglist(scmnd),
+ scsi_sg_count(scmnd),
+ scmnd->sc_data_direction);
+
srp_free_req(ch, req, scmnd,
be32_to_cpu(rsp->req_lim_delta));
@@ -2112,6 +2118,10 @@ static int srp_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *scmnd)
ib_dma_sync_single_for_device(dev, iu->dma, target->max_iu_len,
DMA_TO_DEVICE);
+ if (scmnd->sc_data_direction != DMA_NONE)
+ ib_dma_sync_sg_for_device(dev, scsi_sglist(scmnd),
+ scsi_sg_count(scmnd),
+ scmnd->sc_data_direction);
if (srp_post_send(ch, iu, len)) {
shost_printk(KERN_ERR, target->scsi_host, PFX "Send failed\n");
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 9a68a19..5f9cba7 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2796,6 +2796,22 @@ static inline void ib_dma_sync_single_for_device(struct ib_device *dev,
dma_sync_single_for_device(dev->dma_device, addr, size, dir);
}
+/* Prepare DMA region to be accessed by CPU */
+static inline void ib_dma_sync_sg_for_cpu(struct ib_device *dev,
+ struct scatterlist *sg, int nelems,
+ enum dma_data_direction dir)
+{
+ dma_sync_sg_for_cpu(dev->dma_device, sg, nelems, dir);
+}
+
+/* Prepare DMA region to be accessed by HCA */
+static inline void ib_dma_sync_sg_for_device(struct ib_device *dev,
+ struct scatterlist *sg, int nelems,
+ enum dma_data_direction dir)
+{
+ dma_sync_sg_for_device(dev->dma_device, sg, nelems, dir);
+}
+
/**
* ib_dma_alloc_coherent - Allocate memory and map it for DMA
* @dev: The device for which the DMA address is requested
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-12-04 23:08 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-01 18:16 [PATCH 0/6] SRP initiator related bug fixes Bart Van Assche
[not found] ` <565DE3EC.2070002-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-01 18:17 ` [PATCH 1/6] IB/srp: Fix a memory leak Bart Van Assche
2015-12-01 18:18 ` [PATCH 2/6] IB/srp: Fix possible send queue overflow Bart Van Assche
[not found] ` <565DE45B.7060100-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-02 12:34 ` Christoph Hellwig
2015-12-01 18:18 ` [PATCH 3/6] IB/srp: Initialize dma_length in srp_map_idb Bart Van Assche
[not found] ` <565DE476.3080308-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-01 18:35 ` Sagi Grimberg
2015-12-01 18:18 ` [PATCH 4/6] IB/srp: Fix indirect data buffer rkey endianness Bart Van Assche
[not found] ` <565DE487.2010803-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-01 18:37 ` Sagi Grimberg
[not found] ` <565DE8F7.5060100-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-01 18:46 ` Bart Van Assche
[not found] ` <565DEB13.6040508-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-02 9:32 ` Sagi Grimberg
2015-12-02 12:35 ` Christoph Hellwig
2015-12-01 18:19 ` [PATCH 5/6] IB core: Fix ib_sg_to_pages() Bart Van Assche
[not found] ` <565DE49D.4020102-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-01 18:32 ` Sagi Grimberg
[not found] ` <565DE7D0.4080408-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-01 19:10 ` Bart Van Assche
[not found] ` <565DF0A5.6040102-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-02 9:31 ` Sagi Grimberg
[not found] ` <565EBA78.3050201-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-03 2:22 ` Bart Van Assche
[not found] ` <565FA75E.7010100-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-03 9:07 ` Sagi Grimberg
2015-12-03 9:18 ` Christoph Hellwig
[not found] ` <20151203091806.GB21893-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-12-04 0:04 ` Bart Van Assche
[not found] ` <5660D881.7020801-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-06 10:37 ` Sagi Grimberg
2015-12-06 14:02 ` Christoph Hellwig
2015-12-01 18:19 ` [PATCH 6/6] IB/srp: Fix srp_map_sg_fr() Bart Van Assche
[not found] ` <565DE4BA.1040703-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-01 18:35 ` Sagi Grimberg
[not found] ` <565DE864.5050407-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-01 18:39 ` Bart Van Assche
[not found] ` <565DE977.2070606-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-02 11:59 ` Sagi Grimberg
[not found] ` <565EDD2A.6050407-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-02 12:41 ` Christoph Hellwig
[not found] ` <20151202124154.GF28278-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-12-02 12:50 ` Sagi Grimberg
[not found] ` <565EE90D.8060303-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-03 8:46 ` Sagi Grimberg
[not found] ` <56600152.5050401-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-12-03 9:11 ` Christoph Hellwig
2015-12-04 23:08 ` Bart Van Assche [this message]
[not found] ` <56621CDF.3070604-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-05 11:17 ` [PATCH 0/6] SRP initiator related bug fixes Christoph Hellwig
[not found] ` <20151205111715.GA31393-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-12-07 17:15 ` Bart Van Assche
2015-12-07 19:26 ` Bart Van Assche
[not found] ` <5665DD50.5090906-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-12-07 21:07 ` Doug Ledford
[not found] ` <5665F502.5020305-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-07 22:07 ` Bart Van Assche
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=56621CDF.3070604@sandisk.com \
--to=bart.vanassche-xdaiopvojttbdgjk7y7tuq@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=sebastian.riemer-EIkl63zCoXaH+58JC4qpiA@public.gmane.org \
/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.