All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
@ 2010-01-11  7:46 Hiroshi DOYU
  2010-01-11  7:46 ` [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry Hiroshi DOYU
  2010-01-11 21:53 ` [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Aguirre, Sergio
  0 siblings, 2 replies; 10+ messages in thread
From: Hiroshi DOYU @ 2010-01-11  7:46 UTC (permalink / raw)
  To: linux-omap; +Cc: hnagalla, Hiroshi DOYU

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
---
 arch/arm/plat-omap/iopgtable.h |   50 +++++++++++++++++++++++++++++++--------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/arch/arm/plat-omap/iopgtable.h b/arch/arm/plat-omap/iopgtable.h
index 37dac43..ab23b6a 100644
--- a/arch/arm/plat-omap/iopgtable.h
+++ b/arch/arm/plat-omap/iopgtable.h
@@ -1,7 +1,7 @@
 /*
  * omap iommu: pagetable definitions
  *
- * Copyright (C) 2008-2009 Nokia Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
  *
  * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
  *
@@ -13,26 +13,52 @@
 #ifndef __PLAT_OMAP_IOMMU_H
 #define __PLAT_OMAP_IOMMU_H
 
+/*
+ * "L2 table" address mask and size definitions.
+ */
 #define IOPGD_SHIFT		20
-#define IOPGD_SIZE		(1 << IOPGD_SHIFT)
+#define IOPGD_SIZE		(1UL << IOPGD_SHIFT)
 #define IOPGD_MASK		(~(IOPGD_SIZE - 1))
-#define IOSECTION_MASK		IOPGD_MASK
-#define PTRS_PER_IOPGD		(1 << (32 - IOPGD_SHIFT))
-#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
 
-#define IOSUPER_SIZE		(IOPGD_SIZE << 4)
+/*
+ * "section" address mask and size definitions.
+ */
+#define IOSECTION_SHIFT		20
+#define IOSECTION_SIZE		(1UL << IOSECTION_SHIFT)
+#define IOSECTION_MASK		(~(IOSECTION_SIZE - 1))
+
+/*
+ * "supersection" address mask and size definitions.
+ */
+#define IOSUPER_SHIFT		24
+#define IOSUPER_SIZE		(1UL << IOSUPER_SHIFT)
 #define IOSUPER_MASK		(~(IOSUPER_SIZE - 1))
 
+#define PTRS_PER_IOPGD		(1UL << (32 - IOPGD_SHIFT))
+#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
+
+/*
+ * "small page" address mask and size definitions.
+ */
 #define IOPTE_SHIFT		12
-#define IOPTE_SIZE		(1 << IOPTE_SHIFT)
+#define IOPTE_SIZE		(1UL << IOPTE_SHIFT)
 #define IOPTE_MASK		(~(IOPTE_SIZE - 1))
-#define IOPAGE_MASK		IOPTE_MASK
-#define PTRS_PER_IOPTE		(1 << (IOPGD_SHIFT - IOPTE_SHIFT))
-#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
 
-#define IOLARGE_SIZE		(IOPTE_SIZE << 4)
+/*
+ * "large page" address mask and size definitions.
+ */
+#define IOLARGE_SHIFT		16
+#define IOLARGE_SIZE		(1UL << IOLARGE_SHIFT)
 #define IOLARGE_MASK		(~(IOLARGE_SIZE - 1))
 
+#define PTRS_PER_IOPTE		(1UL << (IOPGD_SHIFT - IOPTE_SHIFT))
+#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
+
+#define IOPAGE_MASK		IOPTE_MASK
+
+/*
+ * some descriptor attributes.
+ */
 #define IOPGD_TABLE		(1 << 0)
 #define IOPGD_SECTION		(2 << 0)
 #define IOPGD_SUPER		(1 << 18 | 2 << 0)
@@ -40,12 +66,14 @@
 #define IOPTE_SMALL		(2 << 0)
 #define IOPTE_LARGE		(1 << 0)
 
+/* to find an entry in a page-table-directory */
 #define iopgd_index(da)		(((da) >> IOPGD_SHIFT) & (PTRS_PER_IOPGD - 1))
 #define iopgd_offset(obj, da)	((obj)->iopgd + iopgd_index(da))
 
 #define iopte_paddr(iopgd)	(*iopgd & ~((1 << 10) - 1))
 #define iopte_vaddr(iopgd)	((u32 *)phys_to_virt(iopte_paddr(iopgd)))
 
+/* to find an entry in the second-level page table. */
 #define iopte_index(da)		(((da) >> IOPTE_SHIFT) & (PTRS_PER_IOPTE - 1))
 #define iopte_offset(iopgd, da)	(iopte_vaddr(iopgd) + iopte_index(da))
 
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry
  2010-01-11  7:46 [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Hiroshi DOYU
@ 2010-01-11  7:46 ` Hiroshi DOYU
  2010-01-11  7:46   ` [PATCH 3/3] omap iommu: fix incorrect address for supersection " Hiroshi DOYU
  2010-01-11 21:57   ` [PATCH 2/3] omap iommu: fix incorrect address for large page " Aguirre, Sergio
  2010-01-11 21:53 ` [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Aguirre, Sergio
  1 sibling, 2 replies; 10+ messages in thread
From: Hiroshi DOYU @ 2010-01-11  7:46 UTC (permalink / raw)
  To: linux-omap; +Cc: hnagalla, Hiroshi DOYU

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

Reported-by: Hari Nagalla <hnagalla@ti.com>
Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Hari Nagalla <hnagalla@ti.com>
---
 arch/arm/plat-omap/iommu.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index c0ff1e3..ccf25b3 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -1,7 +1,7 @@
 /*
  * omap iommu: tlb and pagetable primitives
  *
- * Copyright (C) 2008-2009 Nokia Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
  *
  * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
  *		Paul Mundt and Toshihiro Kobayashi
@@ -646,7 +646,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
 		if (*iopte & IOPTE_LARGE) {
 			nent *= 16;
 			/* rewind to the 1st entry */
-			iopte = (u32 *)((u32)iopte & IOLARGE_MASK);
+			iopte = iopte_offset(iopgd, (da & IOLARGE_MASK));
 		}
 		bytes *= nent;
 		memset(iopte, 0, nent * sizeof(*iopte));
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry
  2010-01-11  7:46 ` [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry Hiroshi DOYU
@ 2010-01-11  7:46   ` Hiroshi DOYU
  2010-01-11 22:00     ` Aguirre, Sergio
  2010-01-11 21:57   ` [PATCH 2/3] omap iommu: fix incorrect address for large page " Aguirre, Sergio
  1 sibling, 1 reply; 10+ messages in thread
From: Hiroshi DOYU @ 2010-01-11  7:46 UTC (permalink / raw)
  To: linux-omap; +Cc: hnagalla, Hiroshi DOYU

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Hari Nagalla <hnagalla@ti.com>
---
 arch/arm/plat-omap/iommu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index ccf25b3..ce0072a 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -667,7 +667,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
 		if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) {
 			nent *= 16;
 			/* rewind to the 1st entry */
-			iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK);
+			iopgd = iopgd_offset(obj, (da & IOSUPER_MASK));
 		}
 		bytes *= nent;
 	}
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* RE: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
  2010-01-11  7:46 [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Hiroshi DOYU
  2010-01-11  7:46 ` [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry Hiroshi DOYU
@ 2010-01-11 21:53 ` Aguirre, Sergio
  2010-01-13  6:52   ` Hiroshi DOYU
  1 sibling, 1 reply; 10+ messages in thread
From: Aguirre, Sergio @ 2010-01-11 21:53 UTC (permalink / raw)
  To: Hiroshi DOYU, linux-omap@vger.kernel.org; +Cc: Nagalla, Hari

Hi Hiroshi,

> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
> Sent: Monday, January 11, 2010 1:47 AM
> To: linux-omap@vger.kernel.org
> Cc: Nagalla, Hari; Hiroshi DOYU
> Subject: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> definitions
> 
> From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

Maybe a small description would help here...

Are you just reshuffling defines, or are you also adding new ones?

Is this just a cleanup or is it fixing a hidden bug?

Regards,
Sergio
> 
> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> ---
>  arch/arm/plat-omap/iopgtable.h |   50 +++++++++++++++++++++++++++++++----
> ----
>  1 files changed, 39 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/iopgtable.h b/arch/arm/plat-
> omap/iopgtable.h
> index 37dac43..ab23b6a 100644
> --- a/arch/arm/plat-omap/iopgtable.h
> +++ b/arch/arm/plat-omap/iopgtable.h
> @@ -1,7 +1,7 @@
>  /*
>   * omap iommu: pagetable definitions
>   *
> - * Copyright (C) 2008-2009 Nokia Corporation
> + * Copyright (C) 2008-2010 Nokia Corporation
>   *
>   * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
>   *
> @@ -13,26 +13,52 @@
>  #ifndef __PLAT_OMAP_IOMMU_H
>  #define __PLAT_OMAP_IOMMU_H
> 
> +/*
> + * "L2 table" address mask and size definitions.
> + */
>  #define IOPGD_SHIFT		20
> -#define IOPGD_SIZE		(1 << IOPGD_SHIFT)
> +#define IOPGD_SIZE		(1UL << IOPGD_SHIFT)
>  #define IOPGD_MASK		(~(IOPGD_SIZE - 1))
> -#define IOSECTION_MASK		IOPGD_MASK
> -#define PTRS_PER_IOPGD		(1 << (32 - IOPGD_SHIFT))
> -#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
> 
> -#define IOSUPER_SIZE		(IOPGD_SIZE << 4)
> +/*
> + * "section" address mask and size definitions.
> + */
> +#define IOSECTION_SHIFT		20
> +#define IOSECTION_SIZE		(1UL << IOSECTION_SHIFT)
> +#define IOSECTION_MASK		(~(IOSECTION_SIZE - 1))
> +
> +/*
> + * "supersection" address mask and size definitions.
> + */
> +#define IOSUPER_SHIFT		24
> +#define IOSUPER_SIZE		(1UL << IOSUPER_SHIFT)
>  #define IOSUPER_MASK		(~(IOSUPER_SIZE - 1))
> 
> +#define PTRS_PER_IOPGD		(1UL << (32 - IOPGD_SHIFT))
> +#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
> +
> +/*
> + * "small page" address mask and size definitions.
> + */
>  #define IOPTE_SHIFT		12
> -#define IOPTE_SIZE		(1 << IOPTE_SHIFT)
> +#define IOPTE_SIZE		(1UL << IOPTE_SHIFT)
>  #define IOPTE_MASK		(~(IOPTE_SIZE - 1))
> -#define IOPAGE_MASK		IOPTE_MASK
> -#define PTRS_PER_IOPTE		(1 << (IOPGD_SHIFT - IOPTE_SHIFT))
> -#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
> 
> -#define IOLARGE_SIZE		(IOPTE_SIZE << 4)
> +/*
> + * "large page" address mask and size definitions.
> + */
> +#define IOLARGE_SHIFT		16
> +#define IOLARGE_SIZE		(1UL << IOLARGE_SHIFT)
>  #define IOLARGE_MASK		(~(IOLARGE_SIZE - 1))
> 
> +#define PTRS_PER_IOPTE		(1UL << (IOPGD_SHIFT - IOPTE_SHIFT))
> +#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
> +
> +#define IOPAGE_MASK		IOPTE_MASK
> +
> +/*
> + * some descriptor attributes.
> + */
>  #define IOPGD_TABLE		(1 << 0)
>  #define IOPGD_SECTION		(2 << 0)
>  #define IOPGD_SUPER		(1 << 18 | 2 << 0)
> @@ -40,12 +66,14 @@
>  #define IOPTE_SMALL		(2 << 0)
>  #define IOPTE_LARGE		(1 << 0)
> 
> +/* to find an entry in a page-table-directory */
>  #define iopgd_index(da)		(((da) >> IOPGD_SHIFT) &
> (PTRS_PER_IOPGD - 1))
>  #define iopgd_offset(obj, da)	((obj)->iopgd + iopgd_index(da))
> 
>  #define iopte_paddr(iopgd)	(*iopgd & ~((1 << 10) - 1))
>  #define iopte_vaddr(iopgd)	((u32 *)phys_to_virt(iopte_paddr(iopgd)))
> 
> +/* to find an entry in the second-level page table. */
>  #define iopte_index(da)		(((da) >> IOPTE_SHIFT) &
> (PTRS_PER_IOPTE - 1))
>  #define iopte_offset(iopgd, da)	(iopte_vaddr(iopgd) + iopte_index(da))
> 
> --
> 1.6.0.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry
  2010-01-11  7:46 ` [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry Hiroshi DOYU
  2010-01-11  7:46   ` [PATCH 3/3] omap iommu: fix incorrect address for supersection " Hiroshi DOYU
@ 2010-01-11 21:57   ` Aguirre, Sergio
  1 sibling, 0 replies; 10+ messages in thread
From: Aguirre, Sergio @ 2010-01-11 21:57 UTC (permalink / raw)
  To: Hiroshi DOYU, linux-omap@vger.kernel.org; +Cc: Nagalla, Hari

Hi Hiroshi,

> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
> Sent: Monday, January 11, 2010 1:47 AM
> To: linux-omap@vger.kernel.org
> Cc: Nagalla, Hari; Hiroshi DOYU
> Subject: [PATCH 2/3] omap iommu: fix incorrect address for large page 1st
> entry
> 
> From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

Description missing here aswell.

Regards,
Sergio
> 
> Reported-by: Hari Nagalla <hnagalla@ti.com>
> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> Signed-off-by: Hari Nagalla <hnagalla@ti.com>
> ---
>  arch/arm/plat-omap/iommu.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
> index c0ff1e3..ccf25b3 100644
> --- a/arch/arm/plat-omap/iommu.c
> +++ b/arch/arm/plat-omap/iommu.c
> @@ -1,7 +1,7 @@
>  /*
>   * omap iommu: tlb and pagetable primitives
>   *
> - * Copyright (C) 2008-2009 Nokia Corporation
> + * Copyright (C) 2008-2010 Nokia Corporation
>   *
>   * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
>   *		Paul Mundt and Toshihiro Kobayashi
> @@ -646,7 +646,7 @@ static size_t iopgtable_clear_entry_core(struct iommu
> *obj, u32 da)
>  		if (*iopte & IOPTE_LARGE) {
>  			nent *= 16;
>  			/* rewind to the 1st entry */
> -			iopte = (u32 *)((u32)iopte & IOLARGE_MASK);
> +			iopte = iopte_offset(iopgd, (da & IOLARGE_MASK));
>  		}
>  		bytes *= nent;
>  		memset(iopte, 0, nent * sizeof(*iopte));
> --
> 1.6.0.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry
  2010-01-11  7:46   ` [PATCH 3/3] omap iommu: fix incorrect address for supersection " Hiroshi DOYU
@ 2010-01-11 22:00     ` Aguirre, Sergio
  0 siblings, 0 replies; 10+ messages in thread
From: Aguirre, Sergio @ 2010-01-11 22:00 UTC (permalink / raw)
  To: Hiroshi DOYU, linux-omap@vger.kernel.org; +Cc: Nagalla, Hari

Hi Hiroshi,

> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
> Sent: Monday, January 11, 2010 1:47 AM
> To: linux-omap@vger.kernel.org
> Cc: Nagalla, Hari; Hiroshi DOYU
> Subject: [PATCH 3/3] omap iommu: fix incorrect address for supersection
> 1st entry
> 
> From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

... and description missing here too.

Regards,
Sergio
> 
> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> Signed-off-by: Hari Nagalla <hnagalla@ti.com>
> ---
>  arch/arm/plat-omap/iommu.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
> index ccf25b3..ce0072a 100644
> --- a/arch/arm/plat-omap/iommu.c
> +++ b/arch/arm/plat-omap/iommu.c
> @@ -667,7 +667,7 @@ static size_t iopgtable_clear_entry_core(struct iommu
> *obj, u32 da)
>  		if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) {
>  			nent *= 16;
>  			/* rewind to the 1st entry */
> -			iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK);
> +			iopgd = iopgd_offset(obj, (da & IOSUPER_MASK));
>  		}
>  		bytes *= nent;
>  	}
> --
> 1.6.0.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
  2010-01-11 21:53 ` [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Aguirre, Sergio
@ 2010-01-13  6:52   ` Hiroshi DOYU
  2010-01-13 12:18     ` Hiroshi DOYU
  0 siblings, 1 reply; 10+ messages in thread
From: Hiroshi DOYU @ 2010-01-13  6:52 UTC (permalink / raw)
  To: saaguirre; +Cc: linux-omap, hnagalla

Hi Sergio,

From: "ext Aguirre, Sergio" <saaguirre@ti.com>
Subject: RE: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
Date: Mon, 11 Jan 2010 22:53:16 +0100

> Hi Hiroshi,
> 
> > -----Original Message-----
> > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> > owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
> > Sent: Monday, January 11, 2010 1:47 AM
> > To: linux-omap@vger.kernel.org
> > Cc: Nagalla, Hari; Hiroshi DOYU
> > Subject: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> > definitions
> > 
> > From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> 
> Maybe a small description would help here...
> 
> Are you just reshuffling defines, or are you also adding new ones?
> 
> Is this just a cleanup or is it fixing a hidden bug?

It's just a cleanup, but added a few macros here, This patch is
necessary for the proceeding patches which are the ones to fix a bug.

I'll add some description on them.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
  2010-01-13  6:52   ` Hiroshi DOYU
@ 2010-01-13 12:18     ` Hiroshi DOYU
  2010-01-13 14:54       ` Aguirre, Sergio
  2010-02-03 18:07       ` [APPLIED] [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry Tony Lindgren
  0 siblings, 2 replies; 10+ messages in thread
From: Hiroshi DOYU @ 2010-01-13 12:18 UTC (permalink / raw)
  To: linux-omap; +Cc: hnagalla, saaguirre

[-- Attachment #1: Type: Text/Plain, Size: 1189 bytes --]

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Subject: Re: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
Date: Wed, 13 Jan 2010 08:52:52 +0200 (EET)

> Hi Sergio,
> 
> From: "ext Aguirre, Sergio" <saaguirre@ti.com>
> Subject: RE: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
> Date: Mon, 11 Jan 2010 22:53:16 +0100
> 
>> Hi Hiroshi,
>> 
>> > -----Original Message-----
>> > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
>> > owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
>> > Sent: Monday, January 11, 2010 1:47 AM
>> > To: linux-omap@vger.kernel.org
>> > Cc: Nagalla, Hari; Hiroshi DOYU
>> > Subject: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
>> > definitions
>> > 
>> > From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
>> 
>> Maybe a small description would help here...
>> 
>> Are you just reshuffling defines, or are you also adding new ones?
>> 
>> Is this just a cleanup or is it fixing a hidden bug?
> 
> It's just a cleanup, but added a few macros here, This patch is
> necessary for the proceeding patches which are the ones to fix a bug.
> 
> I'll add some description on them.

Here's the updates.

[-- Attachment #2: 0001-omap-iommu-cleanup-iommu-page-address-mask-and-defi.patch --]
[-- Type: Text/X-Patch, Size: 3422 bytes --]

>From 73251730aff0c9d53f0100a2166501eee370578f Mon Sep 17 00:00:00 2001
From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Date: Fri, 8 Jan 2010 18:49:00 +0200
Subject: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

This is just a cleanup, but adds a few macros here, which can be used
in the proceeding patches.

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
---
 arch/arm/plat-omap/iopgtable.h |   50 +++++++++++++++++++++++++++++++--------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/arch/arm/plat-omap/iopgtable.h b/arch/arm/plat-omap/iopgtable.h
index 37dac43..ab23b6a 100644
--- a/arch/arm/plat-omap/iopgtable.h
+++ b/arch/arm/plat-omap/iopgtable.h
@@ -1,7 +1,7 @@
 /*
  * omap iommu: pagetable definitions
  *
- * Copyright (C) 2008-2009 Nokia Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
  *
  * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
  *
@@ -13,26 +13,52 @@
 #ifndef __PLAT_OMAP_IOMMU_H
 #define __PLAT_OMAP_IOMMU_H
 
+/*
+ * "L2 table" address mask and size definitions.
+ */
 #define IOPGD_SHIFT		20
-#define IOPGD_SIZE		(1 << IOPGD_SHIFT)
+#define IOPGD_SIZE		(1UL << IOPGD_SHIFT)
 #define IOPGD_MASK		(~(IOPGD_SIZE - 1))
-#define IOSECTION_MASK		IOPGD_MASK
-#define PTRS_PER_IOPGD		(1 << (32 - IOPGD_SHIFT))
-#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
 
-#define IOSUPER_SIZE		(IOPGD_SIZE << 4)
+/*
+ * "section" address mask and size definitions.
+ */
+#define IOSECTION_SHIFT		20
+#define IOSECTION_SIZE		(1UL << IOSECTION_SHIFT)
+#define IOSECTION_MASK		(~(IOSECTION_SIZE - 1))
+
+/*
+ * "supersection" address mask and size definitions.
+ */
+#define IOSUPER_SHIFT		24
+#define IOSUPER_SIZE		(1UL << IOSUPER_SHIFT)
 #define IOSUPER_MASK		(~(IOSUPER_SIZE - 1))
 
+#define PTRS_PER_IOPGD		(1UL << (32 - IOPGD_SHIFT))
+#define IOPGD_TABLE_SIZE	(PTRS_PER_IOPGD * sizeof(u32))
+
+/*
+ * "small page" address mask and size definitions.
+ */
 #define IOPTE_SHIFT		12
-#define IOPTE_SIZE		(1 << IOPTE_SHIFT)
+#define IOPTE_SIZE		(1UL << IOPTE_SHIFT)
 #define IOPTE_MASK		(~(IOPTE_SIZE - 1))
-#define IOPAGE_MASK		IOPTE_MASK
-#define PTRS_PER_IOPTE		(1 << (IOPGD_SHIFT - IOPTE_SHIFT))
-#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
 
-#define IOLARGE_SIZE		(IOPTE_SIZE << 4)
+/*
+ * "large page" address mask and size definitions.
+ */
+#define IOLARGE_SHIFT		16
+#define IOLARGE_SIZE		(1UL << IOLARGE_SHIFT)
 #define IOLARGE_MASK		(~(IOLARGE_SIZE - 1))
 
+#define PTRS_PER_IOPTE		(1UL << (IOPGD_SHIFT - IOPTE_SHIFT))
+#define IOPTE_TABLE_SIZE	(PTRS_PER_IOPTE * sizeof(u32))
+
+#define IOPAGE_MASK		IOPTE_MASK
+
+/*
+ * some descriptor attributes.
+ */
 #define IOPGD_TABLE		(1 << 0)
 #define IOPGD_SECTION		(2 << 0)
 #define IOPGD_SUPER		(1 << 18 | 2 << 0)
@@ -40,12 +66,14 @@
 #define IOPTE_SMALL		(2 << 0)
 #define IOPTE_LARGE		(1 << 0)
 
+/* to find an entry in a page-table-directory */
 #define iopgd_index(da)		(((da) >> IOPGD_SHIFT) & (PTRS_PER_IOPGD - 1))
 #define iopgd_offset(obj, da)	((obj)->iopgd + iopgd_index(da))
 
 #define iopte_paddr(iopgd)	(*iopgd & ~((1 << 10) - 1))
 #define iopte_vaddr(iopgd)	((u32 *)phys_to_virt(iopte_paddr(iopgd)))
 
+/* to find an entry in the second-level page table. */
 #define iopte_index(da)		(((da) >> IOPTE_SHIFT) & (PTRS_PER_IOPTE - 1))
 #define iopte_offset(iopgd, da)	(iopte_vaddr(iopgd) + iopte_index(da))
 
-- 
1.6.0.4


[-- Attachment #3: 0002-omap-iommu-fix-incorrect-address-for-large-page-1st.patch --]
[-- Type: Text/X-Patch, Size: 1463 bytes --]

>From a3db27c46ec02b48d4fb3bac8b37be652a1d392c Mon Sep 17 00:00:00 2001
From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Date: Fri, 8 Jan 2010 18:52:05 +0200
Subject: [PATCH 2/3] omap iommu: fix incorrect address for largepage 1st entry

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

There was a potential risk that the following "memset" could override
its range if a given address was not the 1st entry of a
largepage. This is not the case for "iovmm".

Reported-by: Hari Nagalla <hnagalla@ti.com>
Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Hari Nagalla <hnagalla@ti.com>
---
 arch/arm/plat-omap/iommu.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index c0ff1e3..ccf25b3 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -1,7 +1,7 @@
 /*
  * omap iommu: tlb and pagetable primitives
  *
- * Copyright (C) 2008-2009 Nokia Corporation
+ * Copyright (C) 2008-2010 Nokia Corporation
  *
  * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
  *		Paul Mundt and Toshihiro Kobayashi
@@ -646,7 +646,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
 		if (*iopte & IOPTE_LARGE) {
 			nent *= 16;
 			/* rewind to the 1st entry */
-			iopte = (u32 *)((u32)iopte & IOLARGE_MASK);
+			iopte = iopte_offset(iopgd, (da & IOLARGE_MASK));
 		}
 		bytes *= nent;
 		memset(iopte, 0, nent * sizeof(*iopte));
-- 
1.6.0.4


[-- Attachment #4: 0003-omap-iommu-fix-incorrect-address-for-supersection-1.patch --]
[-- Type: Text/X-Patch, Size: 1139 bytes --]

>From 0f299c722404f367733da07125b6e4b6c722432b Mon Sep 17 00:00:00 2001
From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Date: Fri, 8 Jan 2010 18:54:25 +0200
Subject: [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry

From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>

There was a potential risk that the following "memset" could override
its range if a given address was not the 1st entry of a
supersection. This is not the case for "iovmm".

Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
Signed-off-by: Hari Nagalla <hnagalla@ti.com>
---
 arch/arm/plat-omap/iommu.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/plat-omap/iommu.c b/arch/arm/plat-omap/iommu.c
index ccf25b3..ce0072a 100644
--- a/arch/arm/plat-omap/iommu.c
+++ b/arch/arm/plat-omap/iommu.c
@@ -667,7 +667,7 @@ static size_t iopgtable_clear_entry_core(struct iommu *obj, u32 da)
 		if ((*iopgd & IOPGD_SUPER) == IOPGD_SUPER) {
 			nent *= 16;
 			/* rewind to the 1st entry */
-			iopgd = (u32 *)((u32)iopgd & IOSUPER_MASK);
+			iopgd = iopgd_offset(obj, (da & IOSUPER_MASK));
 		}
 		bytes *= nent;
 	}
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* RE: [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions
  2010-01-13 12:18     ` Hiroshi DOYU
@ 2010-01-13 14:54       ` Aguirre, Sergio
  2010-02-03 18:07       ` [APPLIED] [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry Tony Lindgren
  1 sibling, 0 replies; 10+ messages in thread
From: Aguirre, Sergio @ 2010-01-13 14:54 UTC (permalink / raw)
  To: Hiroshi DOYU, linux-omap@vger.kernel.org; +Cc: Nagalla, Hari

Hi Hiroshi,

> -----Original Message-----
> From: Hiroshi DOYU [mailto:Hiroshi.DOYU@nokia.com]
> Sent: Wednesday, January 13, 2010 6:18 AM
> To: linux-omap@vger.kernel.org
> Cc: Nagalla, Hari; Aguirre, Sergio
> Subject: Re: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> definitions
> 
> From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> Subject: Re: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> definitions
> Date: Wed, 13 Jan 2010 08:52:52 +0200 (EET)
> 
> > Hi Sergio,
> >
> > From: "ext Aguirre, Sergio" <saaguirre@ti.com>
> > Subject: RE: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> definitions
> > Date: Mon, 11 Jan 2010 22:53:16 +0100
> >
> >> Hi Hiroshi,
> >>
> >> > -----Original Message-----
> >> > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> >> > owner@vger.kernel.org] On Behalf Of Hiroshi DOYU
> >> > Sent: Monday, January 11, 2010 1:47 AM
> >> > To: linux-omap@vger.kernel.org
> >> > Cc: Nagalla, Hari; Hiroshi DOYU
> >> > Subject: [PATCH 1/3] omap iommu: cleanup iommu page address mask and
> >> > definitions
> >> >
> >> > From: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
> >>
> >> Maybe a small description would help here...
> >>
> >> Are you just reshuffling defines, or are you also adding new ones?
> >>
> >> Is this just a cleanup or is it fixing a hidden bug?
> >
> > It's just a cleanup, but added a few macros here, This patch is
> > necessary for the proceeding patches which are the ones to fix a bug.
> >
> > I'll add some description on them.
> 
> Here's the updates.

Great! Now looks better ;)

Thanks for that.

Regards,
Sergio

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [APPLIED] [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry
  2010-01-13 12:18     ` Hiroshi DOYU
  2010-01-13 14:54       ` Aguirre, Sergio
@ 2010-02-03 18:07       ` Tony Lindgren
  1 sibling, 0 replies; 10+ messages in thread
From: Tony Lindgren @ 2010-02-03 18:07 UTC (permalink / raw)
  To: linux-omap

This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: for-next

Initial commit ID (Likely to change): b816b551d730ef50548cf35031832c4882823808

PatchWorks
http://patchwork.kernel.org/patch/72616/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=b816b551d730ef50548cf35031832c4882823808



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2010-02-03 18:07 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-11  7:46 [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Hiroshi DOYU
2010-01-11  7:46 ` [PATCH 2/3] omap iommu: fix incorrect address for large page 1st entry Hiroshi DOYU
2010-01-11  7:46   ` [PATCH 3/3] omap iommu: fix incorrect address for supersection " Hiroshi DOYU
2010-01-11 22:00     ` Aguirre, Sergio
2010-01-11 21:57   ` [PATCH 2/3] omap iommu: fix incorrect address for large page " Aguirre, Sergio
2010-01-11 21:53 ` [PATCH 1/3] omap iommu: cleanup iommu page address mask and definitions Aguirre, Sergio
2010-01-13  6:52   ` Hiroshi DOYU
2010-01-13 12:18     ` Hiroshi DOYU
2010-01-13 14:54       ` Aguirre, Sergio
2010-02-03 18:07       ` [APPLIED] [PATCH 3/3] omap iommu: fix incorrect address for supersection 1st entry Tony Lindgren

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.