Received: by 2002:ac0:a679:0:0:0:0:0 with SMTP id p54csp786997imp; Thu, 21 Feb 2019 11:09:53 -0800 (PST) X-Google-Smtp-Source: AHgI3IbGJJxylNTy5gC9cPBcujQVBEGFHLJ0hO+D2LG8NfDjEyTn2qp20zK02SkA4hXc9zPf8EDS X-Received: by 2002:a63:d4f:: with SMTP id 15mr84650pgn.162.1550776193714; Thu, 21 Feb 2019 11:09:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550776193; cv=none; d=google.com; s=arc-20160816; b=XcCKn8ze97t+osmpdhzWqY69xf3TVfoUnBxdjf72jmS0s8DqPlcFcdfrWeBuPQmiiM 1AlROhAKGoSp2RS3esXDK25uYl1ZZMvoACTwX+WT/1BWpYMft0qCRsTOTdiwM3cO6k6a TUzjRaU/+Hu0odZvpNCiP84dkxLx7Xnk58MX82zUD3unXOF9WP/5bdL9CAv0OgN91wk9 A827+NXOrWOqXz6lGhMLIiUwKveU9NUMSIIzx/tBvCh+5EhCra0doBCVj0Daj8izRSb5 XPEhm175MvvPoa7DpTgW+xCswHn9helf4e6C0/s8rn0yx9bZuatBfbm5a08Rwry17fpO Qmvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:references :in-reply-to:message-id:dkim-signature; bh=QyluC/3wRlKw8Mq1z/4mj/rTBv2DhqiZpxBqmcvCH1s=; b=dMduuZQXf5dSVAMWi/OnR/jo5jdvg3+Vj4AZ2ofnx4RAfaE4sL8alynGRLyEAtx1aA gD1Wo1SaCKVyx46SvE1zZlD8hwQcQ3INpcNL0I7Bj8ueKwhE3qOJcQHWT0qWUflt7Ozb pO1DORDLXNEPSwn3cLH7DXP/iUvOWGIiSdDj7mwSFmzYktnzeGVf30cAbvuYvfSi/kL0 AgdIeg/zKZzEHUE/4oVbly0Qj8WTWQmxz5SwRLPnGZK+aBB37fRzH0pFG8wcj6CN6YPG NtD8gC++OhbuRcC8pvHlbwPJMO42puteTqTdfKL0uuHAF0tn2nqcU2n8UAbVPWQGjnIG oepA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=VaqE2geA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e9si10961663pgg.199.2019.02.21.11.09.38; Thu, 21 Feb 2019 11:09:53 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@c-s.fr header.s=mail header.b=VaqE2geA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726851AbfBUTJB (ORCPT + 99 others); Thu, 21 Feb 2019 14:09:01 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:46380 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726701AbfBUTIz (ORCPT ); Thu, 21 Feb 2019 14:08:55 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4453sx2XJLz9v9DH; Thu, 21 Feb 2019 20:08:53 +0100 (CET) Authentication-Results: localhost; dkim=pass reason="1024-bit key; insecure key" header.d=c-s.fr header.i=@c-s.fr header.b=VaqE2geA; dkim-adsp=pass; dkim-atps=neutral X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id 8AiBhz-sgqYT; Thu, 21 Feb 2019 20:08:53 +0100 (CET) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4453sx1Qfdz9v9DG; Thu, 21 Feb 2019 20:08:53 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=c-s.fr; s=mail; t=1550776133; bh=QyluC/3wRlKw8Mq1z/4mj/rTBv2DhqiZpxBqmcvCH1s=; h=In-Reply-To:References:From:Subject:To:Cc:Date:From; b=VaqE2geAiEsAQPP5GlaIds9R6cMXG9DsuubWFKJsdPaAK77JItwymv9CYtAFTaSzN /Yf8vSsDvmby+HQptmfjkQPKyCC115D/O6tQYAR0t66NJNIZ68laQmz/L7I8Qpmk2u o8i5S/DWHMqFqpIIESLFlgIxqRcDyvogETmjLoEs= Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 362798B86A; Thu, 21 Feb 2019 20:08:53 +0100 (CET) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id V_HV48MlqOfD; Thu, 21 Feb 2019 20:08:53 +0100 (CET) Received: from po16846vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id F2F698B852; Thu, 21 Feb 2019 20:08:52 +0100 (CET) Received: by po16846vm.idsi0.si.c-s.fr (Postfix, from userid 0) id BE4F76EF61; Thu, 21 Feb 2019 19:08:52 +0000 (UTC) Message-Id: <9f81d57c0c61d21f58293e8d82b101f6775e9b3e.1550775950.git.christophe.leroy@c-s.fr> In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v5 16/16] powerpc/kconfig: make _etext and data areas alignment configurable on 8xx To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , j.neuschaefer@gmx.net Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Thu, 21 Feb 2019 19:08:52 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8xx, large pages (512kb or 8M) are used to map kernel linear memory. Aligning to 8M reduces TLB misses as only 8M pages are used in that case. We make 8M the default for data. This patchs allows the user to do it via Kconfig. Signed-off-by: Christophe Leroy --- arch/powerpc/Kconfig | 18 +++++++++++++++--- arch/powerpc/kernel/head_8xx.S | 4 ++-- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c4d6c97d7699..cf30a8f522b9 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -726,7 +726,8 @@ config THREAD_SHIFT want. Only change this if you know what you are doing. config ETEXT_SHIFT_BOOL - bool "Set custom etext alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32 + bool "Set custom etext alignment" if STRICT_KERNEL_RWX && \ + (PPC_BOOK3S_32 || PPC_8xx) depends on ADVANCED_OPTIONS help This option allows you to set the kernel end of text alignment. When @@ -738,6 +739,7 @@ config ETEXT_SHIFT_BOOL config ETEXT_SHIFT int "_etext shift" if ETEXT_SHIFT_BOOL range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 + range 19 23 if STRICT_KERNEL_RWX && PPC_8xx default 17 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 default 19 if STRICT_KERNEL_RWX && PPC_8xx default PPC_PAGE_SHIFT @@ -745,8 +747,13 @@ config ETEXT_SHIFT On Book3S 32 (603+), IBATs are used to map kernel text. Smaller is the alignment, greater is the number of necessary IBATs. + On 8xx, large pages (512kb or 8M) are used to map kernel linear + memory. Aligning to 8M reduces TLB misses as only 8M pages are used + in that case. + config DATA_SHIFT_BOOL - bool "Set custom data alignment" if STRICT_KERNEL_RWX && PPC_BOOK3S_32 + bool "Set custom data alignment" if STRICT_KERNEL_RWX && \ + (PPC_BOOK3S_32 || PPC_8xx) depends on ADVANCED_OPTIONS help This option allows you to set the kernel data alignment. When @@ -759,13 +766,18 @@ config DATA_SHIFT int "Data shift" if DATA_SHIFT_BOOL default 24 if STRICT_KERNEL_RWX && PPC64 range 17 28 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 + range 19 23 if STRICT_KERNEL_RWX && PPC_8xx default 22 if STRICT_KERNEL_RWX && PPC_BOOK3S_32 - default 19 if STRICT_KERNEL_RWX && PPC_8xx + default 23 if STRICT_KERNEL_RWX && PPC_8xx default PPC_PAGE_SHIFT help On Book3S 32 (603+), DBATs are used to map kernel text and rodata RO. Smaller is the alignment, greater is the number of necessary DBATs. + On 8xx, large pages (512kb or 8M) are used to map kernel linear + memory. Aligning to 8M reduces TLB misses as only 8M pages are used + in that case. + config FORCE_MAX_ZONEORDER int "Maximum zone order" range 8 9 if PPC64 && PPC_64K_PAGES diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index 01ed8f3c95c8..63f1b7eec3f0 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S @@ -416,7 +416,7 @@ InstructionTLBMiss: #ifndef CONFIG_PIN_TLB_TEXT ITLBMissLinear: mtcr r11 -#ifdef CONFIG_STRICT_KERNEL_RWX +#if defined(CONFIG_STRICT_KERNEL_RWX) && CONFIG_ETEXT_SHIFT < 23 patch_site 0f, patch__itlbmiss_linmem_top8 mfspr r10, SPRN_SRR0 @@ -537,7 +537,7 @@ DTLBMissIMMR: DTLBMissLinear: mtcr r11 rlwinm r10, r10, 20, 0x0f800000 /* 8xx supports max 256Mb RAM */ -#ifdef CONFIG_STRICT_KERNEL_RWX +#if defined(CONFIG_STRICT_KERNEL_RWX) && CONFIG_DATA_SHIFT < 23 patch_site 0f, patch__dtlbmiss_romem_top8 0: subis r11, r10, (PAGE_OFFSET - 0x80000000)@ha -- 2.13.3