From: Russell King <rmk@arm.linux.org.uk>
To: Jassi Brar <jaswinder.singh@linaro.org>
Cc: "Bounine, Alexandre" <Alexandre.Bounine@idt.com>,
"Williams, Dan J" <dan.j.williams@intel.com>,
Vinod Koul <vinod.koul@intel.com>, Barry Song <21cnbao@gmail.com>,
linux-kernel@vger.kernel.org,
DL-SHA-WorkGroupLinux <workgroup.linux@csr.com>,
Dave Jiang <dave.jiang@intel.com>
Subject: Re: [PATCHv4] DMAEngine: Define interleaved transfer request api
Date: Tue, 18 Oct 2011 10:49:44 +0100 [thread overview]
Message-ID: <20111018094944.GA30644@flint.arm.linux.org.uk> (raw)
In-Reply-To: <CAJe_ZhdHcsBNT6iX7TJCqoGZMrPwE2BOt06e8M8PHzuDe3Z70w@mail.gmail.com>
On Tue, Oct 18, 2011 at 02:00:45PM +0530, Jassi Brar wrote:
> On 18 October 2011 13:12, Russell King <rmk@arm.linux.org.uk> wrote:
> > On Tue, Oct 18, 2011 at 11:15:29AM +0530, Jassi Brar wrote:
> >> On 18 October 2011 02:37, Bounine, Alexandre <Alexandre.Bounine@idt.com> wrote:
> >> > With item #1 above being a separate topic, I may have a problem with #2
> >> > as well: dma_addr_t is sized for the local platform and not guaranteed
> >> > to be a 64-bit value (which may be required by a target).
> >> > Agree with #3 (if #1 and #2 work).
> >> >
> >> Perhaps simply change dma_addr_t to u64 in dmaengine.h alone ?
> >
> > That's just an idiotic suggestion - there's no other way to put that.
> > Let's have some sanity here.
> >
> Yeah, I am not proud of the workaround, so I only probed the option.
> I think I need to explain myself.
>
> The case here is that even a 32-bit RapidIO host could ask transfer against
> 64-bit address space on a remote device. And vice versa 64->32.
>
> > dma_addr_t is the size of a DMA address for the CPU architecture being
> > built. This has no relationship to what any particular DMA engine uses.
> >
> Yes, so far the dmaengine ever only needed to transfer within platform's
> address-space. So the assumption that src and dst addresses could
> be contained within dma_addr_t, worked.
> If the damengine is to get rid of that assumption/constraint, the memcpy,
> slave_sg etc need to accept addresses specified in bigger of the host and
> remote address space, and u64 is the safe option.
> Ultimately dma_addr_t is either u32 or u64.
Let me spell it out:
1. Data structures read by the DMA engine hardware should not be defined
using the 'dma_addr_t' type, but one of the [bl]e{8,16,32,64} types,
or at a push the u{8,16,32,64} types if they're always host-endian.
This helps to ensure that the layout of the structures read by the
hardware are less dependent of the host architecture and each element
is appropriately sized (and, with sparse and the endian-sized types,
can be endian-checked at compile time.)
2. dma_addr_t is the size of the DMA address for the host architecture.
This may be 32-bit or 64-bit depending on the host architecture.
The following points are my opinion:
3. For architectures where there are only 32-bit DMA addresses, dma_addr_t
will be a 32-bit type. For architectures where there are 64-bit DMA
addresses, it will be a 64-bit type.
4. If RIO can accept 64-bit DMA addresses but is only connected to 32-bit
busses, then the top 32 address bits are not usable (it's truncated in
hardware.) So there's no point passing around a 64-bit DMA address.
5. In the case of a 64-bit dma_addr_t and a 32-bit DMA engine host being
asked to transfer >= 4GB, this needs error handing in the DMA engine
driver (I don't think its checked for - I know amba-pl08x doesn't.)
6. 32-bit dma_addr_t with 64-bit DMA address space is a problem and is
probably a bug in itself - the platform should be using a 64-bit
dma_addr_t in this case. (see 3.)
--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
next prev parent reply other threads:[~2011-10-18 9:50 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 11:14 [PATCH] DMAEngine: Define generic transfer request api Jassi Brar
2011-08-16 12:56 ` Koul, Vinod
2011-08-16 13:06 ` Linus Walleij
2011-08-19 13:43 ` Koul, Vinod
2011-08-19 14:19 ` Linus Walleij
2011-08-19 15:46 ` Jassi Brar
2011-08-19 17:28 ` Koul, Vinod
2011-08-19 18:45 ` Jassi Brar
2011-08-23 14:43 ` Matt Porter
2011-08-16 14:32 ` Jassi Brar
2011-09-15 7:46 ` [PATCHv2] " Jassi Brar
2011-09-15 8:22 ` Russell King
2011-09-15 10:02 ` Jassi Brar
2011-09-16 7:17 ` Barry Song
2011-09-16 11:03 ` Jassi Brar
2011-09-16 9:07 ` Vinod Koul
2011-09-16 12:30 ` Jassi Brar
2011-09-16 17:06 ` Vinod Koul
2011-09-16 17:51 ` Jassi Brar
2011-09-19 3:23 ` Vinod Koul
2011-09-20 12:12 ` [PATCHv3] DMAEngine: Define interleaved " Jassi Brar
2011-09-20 16:52 ` Vinod Koul
2011-09-20 18:08 ` Jassi Brar
2011-09-21 6:32 ` Vinod Koul
2011-09-21 6:45 ` Jassi Brar
2011-09-21 6:51 ` Vinod Koul
2011-09-21 7:31 ` Jassi Brar
2011-09-21 10:18 ` Russell King
2011-09-21 15:21 ` Jassi Brar
2011-09-28 6:39 ` [PATCHv4] " Jassi Brar
2011-09-28 9:03 ` Vinod Koul
2011-09-28 15:15 ` Jassi Brar
2011-09-29 11:17 ` Vinod Koul
2011-09-30 6:43 ` Barry Song
2011-09-30 16:01 ` Jassi Brar
2011-10-01 3:05 ` Barry Song
2011-10-01 18:11 ` Vinod Koul
2011-10-01 18:45 ` Jassi Brar
2011-10-01 18:41 ` Jassi Brar
2011-10-01 18:48 ` Jassi Brar
2011-10-02 0:33 ` Barry Song
2011-10-03 6:24 ` Jassi Brar
2011-10-03 16:13 ` Russell King
2011-10-03 16:19 ` Jassi Brar
2011-10-03 17:15 ` Williams, Dan J
2011-10-03 18:23 ` Jassi Brar
2011-10-05 18:19 ` Williams, Dan J
2011-10-06 9:06 ` Jassi Brar
2011-10-05 18:14 ` Williams, Dan J
2011-10-06 7:12 ` Jassi Brar
2011-10-07 5:45 ` Vinod Koul
2011-10-07 11:27 ` Jassi Brar
2011-10-07 14:19 ` Vinod Koul
2011-10-07 14:38 ` Jassi Brar
2011-10-10 6:53 ` Vinod Koul
2011-10-10 9:16 ` Jassi Brar
2011-10-10 9:18 ` Vinod Koul
2011-10-10 9:53 ` Jassi Brar
2011-10-10 10:45 ` Vinod Koul
2011-10-10 11:16 ` Jassi Brar
2011-10-10 16:02 ` Vinod Koul
2011-10-10 16:28 ` Jassi Brar
2011-10-11 11:56 ` Vinod Koul
2011-10-11 15:57 ` Jassi Brar
2011-10-11 16:45 ` Vinod Koul
2011-10-12 5:41 ` Barry Song
2011-10-12 6:19 ` Vinod Koul
2011-10-12 6:30 ` Jassi Brar
2011-10-12 6:53 ` Barry Song
2011-10-11 16:44 ` Williams, Dan J
2011-10-11 18:42 ` Jassi Brar
2011-10-14 18:11 ` Bounine, Alexandre
2011-10-14 17:50 ` Bounine, Alexandre
2011-10-14 18:36 ` Jassi Brar
2011-10-14 19:15 ` Bounine, Alexandre
2011-10-15 11:25 ` Jassi Brar
2011-10-17 14:07 ` Bounine, Alexandre
2011-10-17 15:16 ` Jassi Brar
2011-10-17 18:00 ` Bounine, Alexandre
2011-10-17 19:29 ` Jassi Brar
2011-10-17 21:07 ` Bounine, Alexandre
2011-10-18 5:45 ` Jassi Brar
2011-10-18 7:42 ` Russell King
2011-10-18 8:30 ` Jassi Brar
2011-10-18 8:26 ` Vinod Koul
2011-10-18 8:37 ` Jassi Brar
2011-10-18 14:44 ` Bounine, Alexandre
2011-10-18 9:49 ` Russell King [this message]
2011-10-18 11:50 ` Jassi Brar
2011-10-18 11:59 ` Russell King
2011-10-18 17:57 ` Bounine, Alexandre
2011-10-24 3:49 ` Vinod Koul
2011-10-24 12:36 ` Bounine, Alexandre
2011-10-24 15:27 ` Vinod Koul
2011-10-18 17:26 ` Bounine, Alexandre
2011-10-18 17:35 ` Russell King
2011-10-18 17:53 ` Jassi Brar
2011-10-18 13:51 ` Bounine, Alexandre
2011-10-18 14:54 ` Jassi Brar
2011-10-18 15:15 ` Bounine, Alexandre
2011-09-30 15:47 ` Jassi Brar
2011-10-13 7:03 ` [PATCHv5] " Jassi Brar
2011-10-14 7:32 ` Barry Song
2011-10-14 11:51 ` Jassi Brar
2011-10-14 13:31 ` Vinod Koul
2011-10-14 13:51 ` Jassi Brar
2011-10-14 14:05 ` Vinod Koul
2011-10-14 14:18 ` Vinod Koul
2011-10-14 14:55 ` Barry Song
2011-10-14 15:06 ` Vinod Koul
2011-10-14 15:38 ` Barry Song
2011-10-14 16:09 ` Vinod Koul
2011-10-14 16:35 ` Jassi Brar
2011-10-14 17:04 ` Vinod Koul
2011-10-14 17:59 ` Jassi Brar
2011-10-15 17:11 ` Vinod Koul
2011-10-14 15:16 ` Vinod Koul
2011-10-14 15:50 ` Barry Song
2011-10-16 11:16 ` Jassi Brar
2011-10-16 12:16 ` Vinod Koul
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=20111018094944.GA30644@flint.arm.linux.org.uk \
--to=rmk@arm.linux.org.uk \
--cc=21cnbao@gmail.com \
--cc=Alexandre.Bounine@idt.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=jaswinder.singh@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=vinod.koul@intel.com \
--cc=workgroup.linux@csr.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).