Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751743AbeAPQLQ (ORCPT + 1 other); Tue, 16 Jan 2018 11:11:16 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:34106 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751653AbeAPQLL (ORCPT ); Tue, 16 Jan 2018 11:11:11 -0500 From: "Aneesh Kumar K.V" To: Christophe Leroy , Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Scott Wood , Nicholas Piggin Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH 3/3] powerpc/8xx: Increase the number of mm slices In-Reply-To: References: <9a5dadc10f88e2fc0ac9fb5d18c5424df33f3f4c.1515169256.git.christophe.leroy@c-s.fr> Date: Tue, 16 Jan 2018 21:23:32 +0530 MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-GCONF: 00 x-cbid: 18011616-0040-0000-0000-0000040568A8 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18011616-0041-0000-0000-00002608D5BE Message-Id: <87zi5dajgj.fsf@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-16_05:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1801160225 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: 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. > 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