From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, Christoph Hellwig <hch@lst.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
iommu@lists.linux-foundation.org,
Robin Murphy <robin.murphy@arm.com>
Subject: Re: [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to struct device
Date: Tue, 24 Mar 2020 12:00:09 +0530 [thread overview]
Message-ID: <87pnd22rke.fsf@linux.ibm.com> (raw)
In-Reply-To: <ffce1af6-a215-dee8-7b5c-2111f43accfd@ozlabs.ru>
Alexey Kardashevskiy <aik@ozlabs.ru> writes:
> On 24/03/2020 04:22, Christoph Hellwig wrote:
>> On Mon, Mar 23, 2020 at 09:07:38PM +0530, Aneesh Kumar K.V wrote:
>>>
>>> This is what I was trying, but considering I am new to DMA subsystem, I
>>> am not sure I got all the details correct. The idea is to look at the
>>> cpu addr and see if that can be used in direct map fashion(is
>>> bus_dma_limit the right restriction here?) if not fallback to dynamic
>>> IOMMU mapping.
>>
>> I don't think we can throw all these complications into the dma
>> mapping code. At some point I also wonder what the point is,
>> especially for scatterlist mappings, where the iommu can coalesce.
>
> This is for persistent memory which you can DMA to/from but yet it does
> not appear in the system as a normal memory and therefore requires
> special handling anyway (O_DIRECT or DAX, I do not know the exact
> mechanics). All other devices in the system should just run as usual,
> i.e. use 1:1 mapping if possible.
This is O_DIRECT with a user buffer that is actually mmap from a dax
mounted file system.
What we really need is something that will falback to iommu_map_page
based on dma_addr. ie. Something equivalent to current
dma_direct_map_page(), but instead of fallback to swiotlb_map page we
should fallback to iommu_map_page().
Something like?
dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
unsigned long offset, size_t size, enum dma_data_direction dir,
unsigned long attrs)
{
phys_addr_t phys = page_to_phys(page) + offset;
dma_addr_t dma_addr = phys_to_dma(dev, phys);
if (unlikely(!dma_capable(dev, dma_addr, size, true))) {
return iommu_map(dev, phys, size, dir, attrs);
return DMA_MAPPING_ERROR;
}
....
...
-aneesh
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, Christoph Hellwig <hch@lst.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Joerg Roedel <joro@8bytes.org>,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
iommu@lists.linux-foundation.org,
Robin Murphy <robin.murphy@arm.com>,
Lu Baolu <baolu.lu@linux.intel.com>
Subject: Re: [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to struct device
Date: Tue, 24 Mar 2020 12:00:09 +0530 [thread overview]
Message-ID: <87pnd22rke.fsf@linux.ibm.com> (raw)
In-Reply-To: <ffce1af6-a215-dee8-7b5c-2111f43accfd@ozlabs.ru>
Alexey Kardashevskiy <aik@ozlabs.ru> writes:
> On 24/03/2020 04:22, Christoph Hellwig wrote:
>> On Mon, Mar 23, 2020 at 09:07:38PM +0530, Aneesh Kumar K.V wrote:
>>>
>>> This is what I was trying, but considering I am new to DMA subsystem, I
>>> am not sure I got all the details correct. The idea is to look at the
>>> cpu addr and see if that can be used in direct map fashion(is
>>> bus_dma_limit the right restriction here?) if not fallback to dynamic
>>> IOMMU mapping.
>>
>> I don't think we can throw all these complications into the dma
>> mapping code. At some point I also wonder what the point is,
>> especially for scatterlist mappings, where the iommu can coalesce.
>
> This is for persistent memory which you can DMA to/from but yet it does
> not appear in the system as a normal memory and therefore requires
> special handling anyway (O_DIRECT or DAX, I do not know the exact
> mechanics). All other devices in the system should just run as usual,
> i.e. use 1:1 mapping if possible.
This is O_DIRECT with a user buffer that is actually mmap from a dax
mounted file system.
What we really need is something that will falback to iommu_map_page
based on dma_addr. ie. Something equivalent to current
dma_direct_map_page(), but instead of fallback to swiotlb_map page we
should fallback to iommu_map_page().
Something like?
dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
unsigned long offset, size_t size, enum dma_data_direction dir,
unsigned long attrs)
{
phys_addr_t phys = page_to_phys(page) + offset;
dma_addr_t dma_addr = phys_to_dma(dev, phys);
if (unlikely(!dma_capable(dev, dma_addr, size, true))) {
return iommu_map(dev, phys, size, dir, attrs);
return DMA_MAPPING_ERROR;
}
....
...
-aneesh
WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, Christoph Hellwig <hch@lst.de>
Cc: iommu@lists.linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
Lu Baolu <baolu.lu@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Joerg Roedel <joro@8bytes.org>,
Robin Murphy <robin.murphy@arm.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to struct device
Date: Tue, 24 Mar 2020 12:00:09 +0530 [thread overview]
Message-ID: <87pnd22rke.fsf@linux.ibm.com> (raw)
In-Reply-To: <ffce1af6-a215-dee8-7b5c-2111f43accfd@ozlabs.ru>
Alexey Kardashevskiy <aik@ozlabs.ru> writes:
> On 24/03/2020 04:22, Christoph Hellwig wrote:
>> On Mon, Mar 23, 2020 at 09:07:38PM +0530, Aneesh Kumar K.V wrote:
>>>
>>> This is what I was trying, but considering I am new to DMA subsystem, I
>>> am not sure I got all the details correct. The idea is to look at the
>>> cpu addr and see if that can be used in direct map fashion(is
>>> bus_dma_limit the right restriction here?) if not fallback to dynamic
>>> IOMMU mapping.
>>
>> I don't think we can throw all these complications into the dma
>> mapping code. At some point I also wonder what the point is,
>> especially for scatterlist mappings, where the iommu can coalesce.
>
> This is for persistent memory which you can DMA to/from but yet it does
> not appear in the system as a normal memory and therefore requires
> special handling anyway (O_DIRECT or DAX, I do not know the exact
> mechanics). All other devices in the system should just run as usual,
> i.e. use 1:1 mapping if possible.
This is O_DIRECT with a user buffer that is actually mmap from a dax
mounted file system.
What we really need is something that will falback to iommu_map_page
based on dma_addr. ie. Something equivalent to current
dma_direct_map_page(), but instead of fallback to swiotlb_map page we
should fallback to iommu_map_page().
Something like?
dma_addr_t dma_direct_map_page(struct device *dev, struct page *page,
unsigned long offset, size_t size, enum dma_data_direction dir,
unsigned long attrs)
{
phys_addr_t phys = page_to_phys(page) + offset;
dma_addr_t dma_addr = phys_to_dma(dev, phys);
if (unlikely(!dma_capable(dev, dma_addr, size, true))) {
return iommu_map(dev, phys, size, dir, attrs);
return DMA_MAPPING_ERROR;
}
....
...
-aneesh
next prev parent reply other threads:[~2020-03-24 6:30 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-20 14:16 generic DMA bypass flag v2 Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
2020-03-20 14:16 ` [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to struct device Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
2020-03-20 15:02 ` Greg Kroah-Hartman
2020-03-20 15:02 ` Greg Kroah-Hartman
2020-03-20 15:02 ` Greg Kroah-Hartman
2020-03-23 1:28 ` Alexey Kardashevskiy
2020-03-23 1:28 ` Alexey Kardashevskiy
2020-03-23 1:28 ` Alexey Kardashevskiy
2020-03-23 8:37 ` Christoph Hellwig
2020-03-23 8:37 ` Christoph Hellwig
2020-03-23 8:37 ` Christoph Hellwig
2020-03-23 8:50 ` Christoph Hellwig
2020-03-23 8:50 ` Christoph Hellwig
2020-03-23 8:50 ` Christoph Hellwig
2020-03-23 15:37 ` Aneesh Kumar K.V
2020-03-23 15:37 ` Aneesh Kumar K.V
2020-03-23 15:37 ` Aneesh Kumar K.V
2020-03-23 17:22 ` Christoph Hellwig
2020-03-23 17:22 ` Christoph Hellwig
2020-03-23 17:22 ` Christoph Hellwig
2020-03-24 3:05 ` Alexey Kardashevskiy
2020-03-24 3:05 ` Alexey Kardashevskiy
2020-03-24 3:05 ` Alexey Kardashevskiy
2020-03-24 6:30 ` Aneesh Kumar K.V [this message]
2020-03-24 6:30 ` Aneesh Kumar K.V
2020-03-24 6:30 ` Aneesh Kumar K.V
2020-03-24 7:55 ` Christoph Hellwig
2020-03-24 7:55 ` Christoph Hellwig
2020-03-24 7:55 ` Christoph Hellwig
2020-03-24 7:54 ` Christoph Hellwig
2020-03-24 7:54 ` Christoph Hellwig
2020-03-24 7:54 ` Christoph Hellwig
2020-03-25 4:51 ` Alexey Kardashevskiy
2020-03-25 4:51 ` Alexey Kardashevskiy
2020-03-25 4:51 ` Alexey Kardashevskiy
2020-03-25 8:37 ` Christoph Hellwig
2020-03-25 8:37 ` Christoph Hellwig
2020-03-25 8:37 ` Christoph Hellwig
2020-03-26 1:26 ` Alexey Kardashevskiy
2020-03-26 1:26 ` Alexey Kardashevskiy
2020-03-26 1:26 ` Alexey Kardashevskiy
2020-04-03 8:38 ` Alexey Kardashevskiy
2020-04-03 8:38 ` Alexey Kardashevskiy
2020-04-03 8:38 ` Alexey Kardashevskiy
2020-04-06 11:50 ` Christoph Hellwig
2020-04-06 11:50 ` Christoph Hellwig
2020-04-06 11:50 ` Christoph Hellwig
2020-04-06 13:25 ` Alexey Kardashevskiy
2020-04-06 13:25 ` Alexey Kardashevskiy
2020-04-06 13:25 ` Alexey Kardashevskiy
2020-04-06 17:17 ` Christoph Hellwig
2020-04-06 17:17 ` Christoph Hellwig
2020-04-06 17:17 ` Christoph Hellwig
2020-04-07 10:12 ` Alexey Kardashevskiy
2020-04-07 10:12 ` Alexey Kardashevskiy
2020-04-07 10:12 ` Alexey Kardashevskiy
2020-04-14 6:21 ` Alexey Kardashevskiy
2020-04-14 6:21 ` Alexey Kardashevskiy
2020-04-14 6:21 ` Alexey Kardashevskiy
2020-04-14 6:30 ` Christoph Hellwig
2020-04-14 6:30 ` Christoph Hellwig
2020-04-14 6:30 ` Christoph Hellwig
2020-03-23 8:58 ` Alexey Kardashevskiy
2020-03-23 8:58 ` Alexey Kardashevskiy
2020-03-23 8:58 ` Alexey Kardashevskiy
2020-03-23 17:20 ` Christoph Hellwig
2020-03-23 17:20 ` Christoph Hellwig
2020-03-23 17:20 ` Christoph Hellwig
2020-03-24 3:37 ` Alexey Kardashevskiy
2020-03-24 3:37 ` Alexey Kardashevskiy
2020-03-24 3:37 ` Alexey Kardashevskiy
2020-03-24 4:55 ` Alexey Kardashevskiy
2020-03-24 4:55 ` Alexey Kardashevskiy
2020-03-24 4:55 ` Alexey Kardashevskiy
2020-03-24 7:52 ` Christoph Hellwig
2020-03-24 7:52 ` Christoph Hellwig
2020-03-24 7:52 ` Christoph Hellwig
2020-03-23 12:14 ` Robin Murphy
2020-03-23 12:14 ` Robin Murphy
2020-03-23 12:14 ` Robin Murphy
2020-03-23 12:55 ` Christoph Hellwig
2020-03-23 12:55 ` Christoph Hellwig
2020-03-23 12:55 ` Christoph Hellwig
2020-03-20 14:16 ` [PATCH 2/2] powerpc: use the generic dma_ops_bypass mode Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
2020-03-20 14:16 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2020-03-24 9:39 [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to, struct device Christian Zigotzky
2019-11-13 13:37 generic DMA bypass flag Christoph Hellwig
2019-11-13 13:37 ` [PATCH 1/2] dma-mapping: add a dma_ops_bypass flag to struct device Christoph Hellwig
2019-11-13 13:37 ` Christoph Hellwig
2019-11-13 13:37 ` Christoph Hellwig
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=87pnd22rke.fsf@linux.ibm.com \
--to=aneesh.kumar@linux.ibm.com \
--cc=aik@ozlabs.ru \
--cc=gregkh@linuxfoundation.org \
--cc=hch@lst.de \
--cc=iommu@lists.linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=robin.murphy@arm.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 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.