Re: [PATCH v2 07/25] powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together
On Tue, 2015-10-06 at 16:02 +0200, Christophe Leroy wrote: > Le 29/09/2015 01:47, Scott Wood a écrit : > > On Tue, Sep 22, 2015 at 06:50:42PM +0200, Christophe Leroy wrote: > > > x_mapped_by_bats() and x_mapped_by_tlbcam() serve the same kind of > > > purpose, so lets group them into a single function. > > > > > > Signed-off-by: Christophe Leroy> > > --- > > > No change in v2 > > > > > > arch/powerpc/mm/pgtable_32.c | 33 ++--- > > > 1 file changed, 26 insertions(+), 7 deletions(-) > > > > > > diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c > > > index 03a073a..3fd9083 100644 > > > --- a/arch/powerpc/mm/pgtable_32.c > > > +++ b/arch/powerpc/mm/pgtable_32.c > > > @@ -67,6 +67,28 @@ extern unsigned long p_mapped_by_tlbcam(phys_addr_t > > > pa); > > > #define p_mapped_by_tlbcam(x) (0UL) > > > #endif /* HAVE_TLBCAM */ > > > > > > +static inline unsigned long p_mapped_by_other(phys_addr_t pa) > > > +{ > > > + unsigned long v; > > > + > > > + v = p_mapped_by_bats(pa); > > > + if (v /*&& p_mapped_by_bats(p+size-1)*/) > > > + return v; > > > + > > > + return p_mapped_by_tlbcam(pa); > > > +} > > Did you forget to remove that comment? > > > > > No I didn't, I though it was there for a reason, it has been there since > 2005. > Do you think I should remove it ? Oh, you took it from __ioremap_caller. Commented-out code is generally frowned upon, and it makes even less sense now because there's no "size" in p_mapped_by_other. -Scott ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH v2 07/25] powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together
Le 29/09/2015 01:47, Scott Wood a écrit : On Tue, Sep 22, 2015 at 06:50:42PM +0200, Christophe Leroy wrote: x_mapped_by_bats() and x_mapped_by_tlbcam() serve the same kind of purpose, so lets group them into a single function. Signed-off-by: Christophe Leroy--- No change in v2 arch/powerpc/mm/pgtable_32.c | 33 ++--- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 03a073a..3fd9083 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c @@ -67,6 +67,28 @@ extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa); #define p_mapped_by_tlbcam(x) (0UL) #endif /* HAVE_TLBCAM */ +static inline unsigned long p_mapped_by_other(phys_addr_t pa) +{ + unsigned long v; + + v = p_mapped_by_bats(pa); + if (v /*&& p_mapped_by_bats(p+size-1)*/) + return v; + + return p_mapped_by_tlbcam(pa); +} Did you forget to remove that comment? No I didn't, I though it was there for a reason, it has been there since 2005. Do you think I should remove it ? Christophe ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
Re: [PATCH v2 07/25] powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together
On Tue, Sep 22, 2015 at 06:50:42PM +0200, Christophe Leroy wrote: > x_mapped_by_bats() and x_mapped_by_tlbcam() serve the same kind of > purpose, so lets group them into a single function. > > Signed-off-by: Christophe Leroy> --- > No change in v2 > > arch/powerpc/mm/pgtable_32.c | 33 ++--- > 1 file changed, 26 insertions(+), 7 deletions(-) > > diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c > index 03a073a..3fd9083 100644 > --- a/arch/powerpc/mm/pgtable_32.c > +++ b/arch/powerpc/mm/pgtable_32.c > @@ -67,6 +67,28 @@ extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa); > #define p_mapped_by_tlbcam(x)(0UL) > #endif /* HAVE_TLBCAM */ > > +static inline unsigned long p_mapped_by_other(phys_addr_t pa) > +{ > + unsigned long v; > + > + v = p_mapped_by_bats(pa); > + if (v /*&& p_mapped_by_bats(p+size-1)*/) > + return v; > + > + return p_mapped_by_tlbcam(pa); > +} Did you forget to remove that comment? -Scott ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev
[PATCH v2 07/25] powerpc32: refactor x_mapped_by_bats() and x_mapped_by_tlbcam() together
x_mapped_by_bats() and x_mapped_by_tlbcam() serve the same kind of purpose, so lets group them into a single function. Signed-off-by: Christophe Leroy--- No change in v2 arch/powerpc/mm/pgtable_32.c | 33 ++--- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 03a073a..3fd9083 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c @@ -67,6 +67,28 @@ extern unsigned long p_mapped_by_tlbcam(phys_addr_t pa); #define p_mapped_by_tlbcam(x) (0UL) #endif /* HAVE_TLBCAM */ +static inline unsigned long p_mapped_by_other(phys_addr_t pa) +{ + unsigned long v; + + v = p_mapped_by_bats(pa); + if (v /*&& p_mapped_by_bats(p+size-1)*/) + return v; + + return p_mapped_by_tlbcam(pa); +} + +static inline phys_addr_t v_mapped_by_other(unsigned long va) +{ + phys_addr_t p; + + p = v_mapped_by_bats(va); + if (p) + return p; + + return v_mapped_by_tlbcam(va); +} + #define PGDIR_ORDER(32 + PGD_T_LOG2 - PGDIR_SHIFT) #ifndef CONFIG_PPC_4K_PAGES @@ -237,10 +259,8 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, unsigned long flags, * same virt address (and this is contiguous). * -- Cort */ - if ((v = p_mapped_by_bats(p)) /*&& p_mapped_by_bats(p+size-1)*/ ) - goto out; - - if ((v = p_mapped_by_tlbcam(p))) + v = p_mapped_by_other(p); + if (v) goto out; if (slab_is_available()) { @@ -278,8 +298,7 @@ void iounmap(volatile void __iomem *addr) * If mapped by BATs then there is nothing to do. * Calling vfree() generates a benign warning. */ - if (v_mapped_by_bats((unsigned long)addr) || - v_mapped_by_tlbcam((unsigned long)addr)) + if (v_mapped_by_other((unsigned long)addr)) return; if (addr > high_memory && (unsigned long) addr < ioremap_bot) @@ -405,7 +424,7 @@ static int __change_page_attr(struct page *page, pgprot_t prot) BUG_ON(PageHighMem(page)); address = (unsigned long)page_address(page); - if (v_mapped_by_bats(address) || v_mapped_by_tlbcam(address)) + if (v_mapped_by_other(address)) return 0; if (!get_pteptr(_mm, address, , )) return -EINVAL; -- 2.1.0 ___ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev