* Re: [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach
[not found] ` <1370889285-22799-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
@ 2013-06-11 5:34 ` Hiroshi Doyu
[not found] ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Hiroshi Doyu @ 2013-06-11 5:34 UTC (permalink / raw)
To: m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
will.deacon-5wv7dgnIgG8@public.gmane.org
Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Hi Will,
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Mon, 10 Jun 2013 20:34:40 +0200:
> The current code only clobbers a local variable, so the device is left
> with a stale mapping pointer.
True. This's my bad. Thanks.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach
[not found] ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
@ 2013-06-11 8:50 ` Will Deacon
[not found] ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Will Deacon @ 2013-06-11 8:50 UTC (permalink / raw)
To: Hiroshi Doyu
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
On Tue, Jun 11, 2013 at 06:34:55AM +0100, Hiroshi Doyu wrote:
> Hi Will,
>
> Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Mon, 10 Jun 2013 20:34:40 +0200:
>
> > The current code only clobbers a local variable, so the device is left
> > with a stale mapping pointer.
>
> True. This's my bad. Thanks.
That's alright, it's easy to fix. Mind if I add your ack please?
Will
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach
[not found] ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
@ 2013-06-11 9:39 ` Hiroshi Doyu
[not found] ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Hiroshi Doyu @ 2013-06-11 9:39 UTC (permalink / raw)
To: Will Deacon
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
On Tue, 11 Jun 2013 10:50:15 +0200
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote:
> On Tue, Jun 11, 2013 at 06:34:55AM +0100, Hiroshi Doyu wrote:
> > Hi Will,
> >
> > Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Mon, 10 Jun 2013 20:34:40 +0200:
> >
> > > The current code only clobbers a local variable, so the device is left
> > > with a stale mapping pointer.
> >
> > True. This's my bad. Thanks.
>
> That's alright, it's easy to fix. Mind if I add your ack please?
Feel free to add: Acked-by: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach
[not found] ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
@ 2013-06-19 8:59 ` Marek Szyprowski
0 siblings, 0 replies; 8+ messages in thread
From: Marek Szyprowski @ 2013-06-19 8:59 UTC (permalink / raw)
To: Hiroshi Doyu
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
Will Deacon,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Hello,
On 6/11/2013 11:39 AM, Hiroshi Doyu wrote:
> On Tue, 11 Jun 2013 10:50:15 +0200
> Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote:
>
> > On Tue, Jun 11, 2013 at 06:34:55AM +0100, Hiroshi Doyu wrote:
> > > Hi Will,
> > >
> > > Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Mon, 10 Jun 2013 20:34:40 +0200:
> > >
> > > > The current code only clobbers a local variable, so the device is left
> > > > with a stale mapping pointer.
> > >
> > > True. This's my bad. Thanks.
> >
> > That's alright, it's easy to fix. Mind if I add your ack please?
>
> Feel free to add: Acked-by: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Thanks for spotting the bug. I've taked the patch to my dma-mapping tree.
Best regards
--
Marek Szyprowski
Samsung R&D Institute Poland
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
[not found] ` <1370889285-22799-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
@ 2013-06-25 10:12 ` Hiroshi Doyu
[not found] ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Hiroshi Doyu @ 2013-06-25 10:12 UTC (permalink / raw)
To: Will Deacon
Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-tegra-u79uwXL29TY76Z2rM5mHXA
Hi Will,
On Mon, 10 Jun 2013 20:34:39 +0200
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote:
...
> @@ -1636,13 +1636,27 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *p
> {
> struct dma_iommu_mapping *mapping = dev->archdata.mapping;
> dma_addr_t dma_addr;
> - int ret, len = PAGE_ALIGN(size + offset);
> + int ret, prot, len = PAGE_ALIGN(size + offset);
>
> dma_addr = __alloc_iova(mapping, len);
> if (dma_addr == DMA_ERROR_CODE)
> return dma_addr;
>
> - ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, 0);
> + switch (dir) {
> + case DMA_BIDIRECTIONAL:
> + prot = IOMMU_READ | IOMMU_WRITE;
> + break;
> + case DMA_TO_DEVICE:
> + prot = IOMMU_READ;
> + break;
> + case DMA_FROM_DEVICE:
> + prot = IOMMU_WRITE;
> + break;
> + default:
> + prot = 0;
> + }
> +
> + ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, prot);
Do we need similar changes for map_sg case as well? They still passes '0' as prot.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
[not found] ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
@ 2013-06-25 11:37 ` Will Deacon
[not found] ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Will Deacon @ 2013-06-25 11:37 UTC (permalink / raw)
To: Hiroshi Doyu
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
On Tue, Jun 25, 2013 at 11:12:15AM +0100, Hiroshi Doyu wrote:
> Hi Will,
Hi Hiroshi,
> On Mon, 10 Jun 2013 20:34:39 +0200
> Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote:
> ...
> > @@ -1636,13 +1636,27 @@ static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *p
> > {
> > struct dma_iommu_mapping *mapping = dev->archdata.mapping;
> > dma_addr_t dma_addr;
> > - int ret, len = PAGE_ALIGN(size + offset);
> > + int ret, prot, len = PAGE_ALIGN(size + offset);
> >
> > dma_addr = __alloc_iova(mapping, len);
> > if (dma_addr == DMA_ERROR_CODE)
> > return dma_addr;
> >
> > - ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, 0);
> > + switch (dir) {
> > + case DMA_BIDIRECTIONAL:
> > + prot = IOMMU_READ | IOMMU_WRITE;
> > + break;
> > + case DMA_TO_DEVICE:
> > + prot = IOMMU_READ;
> > + break;
> > + case DMA_FROM_DEVICE:
> > + prot = IOMMU_WRITE;
> > + break;
> > + default:
> > + prot = 0;
> > + }
> > +
> > + ret = iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, prot);
>
> Do we need similar changes for map_sg case as well? They still passes '0' as prot.
Yes, we could use the same trick there (probably worth moving the logic into
a helper function for translating dma_data_direction into IOMMU_* values).
There are also iommu_map calls when allocating DMA buffers, but I think 0 is
the right thing to pass there (i.e. no permission until pages have been
explicitly mapped). Although, to be honest, I don't see why we need to map
the buffer at all when we allocate it.
Will
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
[not found] ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
@ 2013-06-25 11:52 ` Hiroshi Doyu
[not found] ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
0 siblings, 1 reply; 8+ messages in thread
From: Hiroshi Doyu @ 2013-06-25 11:52 UTC (permalink / raw)
To: will.deacon-5wv7dgnIgG8@public.gmane.org,
m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Tue, 25 Jun 2013 13:37:14 +0200:
...
> > Do we need similar changes for map_sg case as well? They still passes '0' as prot.
>
> Yes, we could use the same trick there (probably worth moving the logic into
> a helper function for translating dma_data_direction into IOMMU_* values).
>
> There are also iommu_map calls when allocating DMA buffers, but I think 0 is
> the right thing to pass there (i.e. no permission until pages have been
> explicitly mapped). Although, to be honest, I don't see why we need to map
> the buffer at all when we allocate it.
Yes, I thought too. I have a patch for that as below. If you like,
I'll rebase and send for merge with the one which changes
dma-mapping.c.
From 699e6bd4fef86383d197775486b47bcbdc594f4a Mon Sep 17 00:00:00 2001
From: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Date: Tue, 25 Jun 2013 13:43:29 +0300
Subject: [PATCH 1/2] iommu/core: convert DMA direction into IOMMU protection
attributes
Introduce a new function to convert DMA direction into IOMMU
protection attributes.
Signed-off-by: Hiroshi Doyu <hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
---
include/linux/iommu.h | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 00af00f..ce3be78 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -21,11 +21,26 @@
#include <linux/errno.h>
#include <linux/types.h>
+#include <linux/dma-direction.h>
#define IOMMU_READ (1)
#define IOMMU_WRITE (2)
#define IOMMU_CACHE (4) /* DMA cache coherency */
+static inline int to_iommu_prot(enum dma_data_direction dir)
+{
+ switch (dir) {
+ case DMA_BIDIRECTIONAL:
+ return IOMMU_READ | IOMMU_WRITE;
+ case DMA_TO_DEVICE:
+ return IOMMU_READ;
+ case DMA_FROM_DEVICE:
+ return IOMMU_WRITE;
+ default:
+ return 0;
+ }
+}
+
struct iommu_ops;
struct iommu_group;
struct bus_type;
--
1.8.1.5
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes
[not found] ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
@ 2013-06-25 12:34 ` Will Deacon
0 siblings, 0 replies; 8+ messages in thread
From: Will Deacon @ 2013-06-25 12:34 UTC (permalink / raw)
To: Hiroshi Doyu
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
On Tue, Jun 25, 2013 at 12:52:26PM +0100, Hiroshi Doyu wrote:
> Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> wrote @ Tue, 25 Jun 2013 13:37:14 +0200:
> ...
> > > Do we need similar changes for map_sg case as well? They still passes '0' as prot.
> >
> > Yes, we could use the same trick there (probably worth moving the logic into
> > a helper function for translating dma_data_direction into IOMMU_* values).
> >
> > There are also iommu_map calls when allocating DMA buffers, but I think 0 is
> > the right thing to pass there (i.e. no permission until pages have been
> > explicitly mapped). Although, to be honest, I don't see why we need to map
> > the buffer at all when we allocate it.
>
> Yes, I thought too. I have a patch for that as below. If you like,
> I'll rebase and send for merge with the one which changes
> dma-mapping.c.
Yes, please send the series and I'll take a look. Marek's already picked up
my original patch, so it's better if you can base against a stable branch
from him.
Will
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-06-25 12:34 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1370889285-22799-1-git-send-email-will.deacon@arm.com>
[not found] ` <1370889285-22799-5-git-send-email-will.deacon@arm.com>
[not found] ` <1370889285-22799-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-11 5:34 ` [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach Hiroshi Doyu
[not found] ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-11 8:50 ` Will Deacon
[not found] ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-11 9:39 ` Hiroshi Doyu
[not found] ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-19 8:59 ` Marek Szyprowski
[not found] ` <1370889285-22799-4-git-send-email-will.deacon@arm.com>
[not found] ` <1370889285-22799-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2013-06-25 10:12 ` [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes Hiroshi Doyu
[not found] ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 11:37 ` Will Deacon
[not found] ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org>
2013-06-25 11:52 ` Hiroshi Doyu
[not found] ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-06-25 12:34 ` Will Deacon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox