From: Robin Murphy <robin.murphy-5wv7dgnIgG8@public.gmane.org>
To: Harsh Jain <harsh-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: Is adding offset to dma address is valid operation?
Date: Mon, 26 Mar 2018 14:31:15 +0100 [thread overview]
Message-ID: <d49288da-ea0b-ac9c-923f-93b5e7672d29@arm.com> (raw)
In-Reply-To: <6986f4c8-a3c0-2483-6eae-cfb56eaee10a-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
On 26/03/18 13:31, Harsh Jain wrote:
>
>
> On 26-03-2018 17:15, Robin Murphy wrote:
>> Hi Harsh,
>>
>> On 26/03/18 10:55, Harsh Jain wrote:
>>> Hi,
>>>
>>> Can we add offset to dma address received from IOMMU in
>>> scatter/Gather list before sending it to H/W.
>>>
>>> Address to HW = sg_dma_address(sg) + offset, where 0 < offset <
>>> sg_dma_len(sg).
>>
>> sg_dma_address() should already account for sg->offset (i.e. the
>> start of the buffer within the page. If there's a DMA API
>> implementation failing to respect that then that's a bug.
>>
>>> I need this operation to make sure our H/W does not receives
>>> entry of size greater than 2K.
>>
>> If however it's just that you want to fragment a single SG entry
>> into multiple commaneds/descriptors/etc. internally to your driver,
>> then I can't see that being an issue as long as you don't visibly
>> modify the scatterlist itself. If there's a genuine length and/or
>> alignment limitation in the hardware, though, it would be better to
>> set up dev->dma_parms appropriately to describe them, such that the
>> subsystem responsible for generating the scatterlist respects the
>> appropriate constraints in the first place (and if it doesn't, then
>> that's another bug to fix).
> Can dma_parms handle 2K size limit ? Because dma_map_sg() returns <=
> passed nents. But in my case nents will increase.
The point is that dma_map_sg() should still never increase nents,
because the guy *creating* the scatterlist is also expected to respect
dma_parms where it exists, such that nents would be appropriate to start
with. That said, it does look like there are some places (e.g. the block
layer) which may not cope properly with limits less than PAGE_SIZE, so I
guess the reliability of dma_parms might depend on how much you want to
go spelunking in core code :/
Robin.
prev parent reply other threads:[~2018-03-26 13:31 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-26 9:55 Is adding offset to dma address is valid operation? Harsh Jain
[not found] ` <8be08248-174e-19c2-357d-7d31c60a90f7-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
2018-03-26 11:45 ` Robin Murphy
[not found] ` <5ea7def7-2daa-b4b1-17e7-47524746a61a-5wv7dgnIgG8@public.gmane.org>
2018-03-26 11:59 ` Harsh Jain
2018-03-26 12:31 ` Harsh Jain
[not found] ` <6986f4c8-a3c0-2483-6eae-cfb56eaee10a-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org>
2018-03-26 13:31 ` Robin Murphy [this message]
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=d49288da-ea0b-ac9c-923f-93b5e7672d29@arm.com \
--to=robin.murphy-5wv7dgnigg8@public.gmane.org \
--cc=harsh-ut6Up61K2wZBDgjK7y7TUQ@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@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 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).