From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl0-x243.google.com (mail-pl0-x243.google.com [IPv6:2607:f8b0:400e:c01::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3zpKLC456zzF1kP for ; Sat, 24 Feb 2018 18:22:43 +1100 (AEDT) Received: by mail-pl0-x243.google.com with SMTP id v3so6250402plg.3 for ; Fri, 23 Feb 2018 23:22:42 -0800 (PST) Date: Sat, 24 Feb 2018 17:22:26 +1000 From: Nicholas Piggin To: Christophe Leroy Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Scott Wood , aneesh.kumar@linux.vnet.ibm.com, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH v5 2/6] powerpc/mm/slice: create header files dedicated to slices Message-ID: <20180224172226.777c78bd@roar.ozlabs.ibm.com> In-Reply-To: References: <455276187b369bf019e91715b7488e86cd932d49.1519305410.git.christophe.leroy@c-s.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , On Thu, 22 Feb 2018 15:27:22 +0100 (CET) Christophe Leroy wrote: > In preparation for the following patch which will enhance 'slices' > for supporting PPC32 in order to fix an issue on hugepages on 8xx, > this patch takes out of page*.h all bits related to 'slices' and put > them into newly created slice.h header files. > While common parts go into asm/slice.h, subarch specific > parts go into respective books3s/64/slice.c and nohash/64/slice.c > 'slices' > > Signed-off-by: Christophe Leroy I don't see a problem with this. Even by itself it seems like a good cleanup. Reviewed-by: Nicholas Piggin > --- > v5: new - come from a split of patch 2 of v4 > > arch/powerpc/include/asm/book3s/64/slice.h | 27 ++++++++++++++ > arch/powerpc/include/asm/nohash/64/slice.h | 12 ++++++ > arch/powerpc/include/asm/page.h | 1 + > arch/powerpc/include/asm/page_64.h | 59 ------------------------------ > arch/powerpc/include/asm/slice.h | 40 ++++++++++++++++++++ > 5 files changed, 80 insertions(+), 59 deletions(-) > create mode 100644 arch/powerpc/include/asm/book3s/64/slice.h > create mode 100644 arch/powerpc/include/asm/nohash/64/slice.h > create mode 100644 arch/powerpc/include/asm/slice.h > > diff --git a/arch/powerpc/include/asm/book3s/64/slice.h b/arch/powerpc/include/asm/book3s/64/slice.h > new file mode 100644 > index 000000000000..db0dedab65ee > --- /dev/null > +++ b/arch/powerpc/include/asm/book3s/64/slice.h > @@ -0,0 +1,27 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_POWERPC_BOOK3S_64_SLICE_H > +#define _ASM_POWERPC_BOOK3S_64_SLICE_H > + > +#ifdef CONFIG_PPC_MM_SLICES > + > +#define SLICE_LOW_SHIFT 28 > +#define SLICE_LOW_TOP (0x100000000ul) > +#define SLICE_NUM_LOW (SLICE_LOW_TOP >> SLICE_LOW_SHIFT) > +#define GET_LOW_SLICE_INDEX(addr) ((addr) >> SLICE_LOW_SHIFT) > + > +#define SLICE_HIGH_SHIFT 40 > +#define SLICE_NUM_HIGH (H_PGTABLE_RANGE >> SLICE_HIGH_SHIFT) > +#define GET_HIGH_SLICE_INDEX(addr) ((addr) >> SLICE_HIGH_SHIFT) > + > +#else /* CONFIG_PPC_MM_SLICES */ > + > +#define get_slice_psize(mm, addr) ((mm)->context.user_psize) > +#define slice_set_user_psize(mm, psize) \ > +do { \ > + (mm)->context.user_psize = (psize); \ > + (mm)->context.sllp = SLB_VSID_USER | mmu_psize_defs[(psize)].sllp; \ > +} while (0) > + > +#endif /* CONFIG_PPC_MM_SLICES */ > + > +#endif /* _ASM_POWERPC_BOOK3S_64_SLICE_H */ > diff --git a/arch/powerpc/include/asm/nohash/64/slice.h b/arch/powerpc/include/asm/nohash/64/slice.h > new file mode 100644 > index 000000000000..ad0d6e3cc1c5 > --- /dev/null > +++ b/arch/powerpc/include/asm/nohash/64/slice.h > @@ -0,0 +1,12 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_POWERPC_NOHASH_64_SLICE_H > +#define _ASM_POWERPC_NOHASH_64_SLICE_H > + > +#ifdef CONFIG_PPC_64K_PAGES > +#define get_slice_psize(mm, addr) MMU_PAGE_64K > +#else /* CONFIG_PPC_64K_PAGES */ > +#define get_slice_psize(mm, addr) MMU_PAGE_4K > +#endif /* !CONFIG_PPC_64K_PAGES */ > +#define slice_set_user_psize(mm, psize) do { BUG(); } while (0) > + > +#endif /* _ASM_POWERPC_NOHASH_64_SLICE_H */ > diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h > index 8da5d4c1cab2..d5f1c41b7dba 100644 > --- a/arch/powerpc/include/asm/page.h > +++ b/arch/powerpc/include/asm/page.h > @@ -344,5 +344,6 @@ typedef struct page *pgtable_t; > > #include > #endif /* __ASSEMBLY__ */ > +#include > > #endif /* _ASM_POWERPC_PAGE_H */ > diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h > index 56234c6fcd61..af04acdb873f 100644 > --- a/arch/powerpc/include/asm/page_64.h > +++ b/arch/powerpc/include/asm/page_64.h > @@ -86,65 +86,6 @@ extern u64 ppc64_pft_size; > > #endif /* __ASSEMBLY__ */ > > -#ifdef CONFIG_PPC_MM_SLICES > - > -#define SLICE_LOW_SHIFT 28 > -#define SLICE_HIGH_SHIFT 40 > - > -#define SLICE_LOW_TOP (0x100000000ul) > -#define SLICE_NUM_LOW (SLICE_LOW_TOP >> SLICE_LOW_SHIFT) > -#define SLICE_NUM_HIGH (H_PGTABLE_RANGE >> SLICE_HIGH_SHIFT) > - > -#define GET_LOW_SLICE_INDEX(addr) ((addr) >> SLICE_LOW_SHIFT) > -#define GET_HIGH_SLICE_INDEX(addr) ((addr) >> SLICE_HIGH_SHIFT) > - > -#ifndef __ASSEMBLY__ > -struct mm_struct; > - > -extern unsigned long slice_get_unmapped_area(unsigned long addr, > - unsigned long len, > - unsigned long flags, > - unsigned int psize, > - int topdown); > - > -extern unsigned int get_slice_psize(struct mm_struct *mm, > - unsigned long addr); > - > -extern void slice_set_user_psize(struct mm_struct *mm, unsigned int psize); > -extern void slice_set_range_psize(struct mm_struct *mm, unsigned long start, > - unsigned long len, unsigned int psize); > - > -#endif /* __ASSEMBLY__ */ > -#else > -#define slice_init() > -#ifdef CONFIG_PPC_BOOK3S_64 > -#define get_slice_psize(mm, addr) ((mm)->context.user_psize) > -#define slice_set_user_psize(mm, psize) \ > -do { \ > - (mm)->context.user_psize = (psize); \ > - (mm)->context.sllp = SLB_VSID_USER | mmu_psize_defs[(psize)].sllp; \ > -} while (0) > -#else /* !CONFIG_PPC_BOOK3S_64 */ > -#ifdef CONFIG_PPC_64K_PAGES > -#define get_slice_psize(mm, addr) MMU_PAGE_64K > -#else /* CONFIG_PPC_64K_PAGES */ > -#define get_slice_psize(mm, addr) MMU_PAGE_4K > -#endif /* !CONFIG_PPC_64K_PAGES */ > -#define slice_set_user_psize(mm, psize) do { BUG(); } while(0) > -#endif /* CONFIG_PPC_BOOK3S_64 */ > - > -#define slice_set_range_psize(mm, start, len, psize) \ > - slice_set_user_psize((mm), (psize)) > -#endif /* CONFIG_PPC_MM_SLICES */ > - > -#ifdef CONFIG_HUGETLB_PAGE > - > -#ifdef CONFIG_PPC_MM_SLICES > -#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA > -#endif > - > -#endif /* !CONFIG_HUGETLB_PAGE */ > - > #define VM_DATA_DEFAULT_FLAGS \ > (is_32bit_task() ? \ > VM_DATA_DEFAULT_FLAGS32 : VM_DATA_DEFAULT_FLAGS64) > diff --git a/arch/powerpc/include/asm/slice.h b/arch/powerpc/include/asm/slice.h > new file mode 100644 > index 000000000000..17c5a5d8c418 > --- /dev/null > +++ b/arch/powerpc/include/asm/slice.h > @@ -0,0 +1,40 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef _ASM_POWERPC_SLICE_H > +#define _ASM_POWERPC_SLICE_H > + > +#ifdef CONFIG_PPC_BOOK3S_64 > +#include > +#else > +#include > +#endif > + > +#ifdef CONFIG_PPC_MM_SLICES > + > +#ifdef CONFIG_HUGETLB_PAGE > +#define HAVE_ARCH_HUGETLB_UNMAPPED_AREA > +#endif > +#define HAVE_ARCH_UNMAPPED_AREA > +#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN > + > +#ifndef __ASSEMBLY__ > + > +struct mm_struct; > + > +unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len, > + unsigned long flags, unsigned int psize, > + int topdown); > + > +unsigned int get_slice_psize(struct mm_struct *mm, unsigned long addr); > + > +void slice_set_user_psize(struct mm_struct *mm, unsigned int psize); > +void slice_set_range_psize(struct mm_struct *mm, unsigned long start, > + unsigned long len, unsigned int psize); > +#endif /* __ASSEMBLY__ */ > + > +#else /* CONFIG_PPC_MM_SLICES */ > + > +#define slice_set_range_psize(mm, start, len, psize) \ > + slice_set_user_psize((mm), (psize)) > +#endif /* CONFIG_PPC_MM_SLICES */ > + > +#endif /* _ASM_POWERPC_SLICE_H */