Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751263AbeAPQQF (ORCPT + 1 other); Tue, 16 Jan 2018 11:16:05 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:44388 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750772AbeAPQQE (ORCPT ); Tue, 16 Jan 2018 11:16:04 -0500 Subject: Re: [PATCH 3/3] powerpc/8xx: Increase the number of mm slices To: "Aneesh Kumar K.V" , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Scott Wood , Nicholas Piggin Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org References: <9a5dadc10f88e2fc0ac9fb5d18c5424df33f3f4c.1515169256.git.christophe.leroy@c-s.fr> <87zi5dajgj.fsf@linux.vnet.ibm.com> From: Christophe LEROY Message-ID: <61ade5ee-b72e-edf6-6b5d-0d1b03e27cab@c-s.fr> Date: Tue, 16 Jan 2018 17:16:02 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <87zi5dajgj.fsf@linux.vnet.ibm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Le 16/01/2018 à 16:53, Aneesh Kumar K.V a écrit : > Christophe Leroy writes: > >> On the 8xx, we can have as many slices as PMD entries. >> This means we could have 1024 slices in 4k size pages mode >> and 64 slices in 16k size pages. >> >> However, due to a stack overflow in slice_get_unmapped_area(), >> we limit to 512 slices. >> >> Signed-off-by: Christophe Leroy >> --- >> arch/powerpc/include/asm/mmu-8xx.h | 6 +++++- >> arch/powerpc/include/asm/page_32.h | 3 ++- >> 2 files changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/arch/powerpc/include/asm/mmu-8xx.h b/arch/powerpc/include/asm/mmu-8xx.h >> index d669d0062da4..40aa7b0cd0dc 100644 >> --- a/arch/powerpc/include/asm/mmu-8xx.h >> +++ b/arch/powerpc/include/asm/mmu-8xx.h >> @@ -171,7 +171,11 @@ typedef struct { >> unsigned long vdso_base; >> #ifdef CONFIG_PPC_MM_SLICES >> u16 user_psize; /* page size index */ >> - unsigned char low_slices_psize[8]; /* 16 slices */ >> +#if defined(CONFIG_PPC_16K_PAGES) >> + unsigned char low_slices_psize[32]; /* 64 slices */ >> +#else >> + unsigned char low_slices_psize[256]; /* 512 slices */ >> +#endif > > These #ifdef should be 8xx and then 16K. We are in file asm/mmu-8xx.h so it obviously only applies to 8xx Christophe > > >> unsigned char high_slices_psize[0]; >> unsigned long slb_addr_limit; >> #endif >> diff --git a/arch/powerpc/include/asm/page_32.h b/arch/powerpc/include/asm/page_32.h >> index f7d1bd1183c8..43695ce7ee07 100644 >> --- a/arch/powerpc/include/asm/page_32.h >> +++ b/arch/powerpc/include/asm/page_32.h >> @@ -62,7 +62,8 @@ extern void copy_page(void *to, void *from); >> >> #ifdef CONFIG_PPC_MM_SLICES >> >> -#define SLICE_LOW_SHIFT 28 >> +/* SLICE_LOW_SHIFT >= 23 to avoid stack overflow in slice_get_unmapped_area() */ >> +#define SLICE_LOW_SHIFT (PMD_SHIFT > 23 ? PMD_SHIFT : 23) >> #define SLICE_HIGH_SHIFT 0 >> >> #define SLICE_LOW_TOP (0xfffffffful) >> -- >> 2.13.3