* [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 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 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 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 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.