Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp4124331pxb; Mon, 8 Feb 2021 08:30:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJxrxQQ2tRRgf8sPmbmv7A3EnOuTvwsDwoCPaMNcGU6jlHC7n7zVtE6yrAiJqCB/MEU/LqjT X-Received: by 2002:a17:907:2bef:: with SMTP id gv47mr12500498ejc.457.1612801830863; Mon, 08 Feb 2021 08:30:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612801830; cv=none; d=google.com; s=arc-20160816; b=0ehUKUy+L7M3mcXuQwv8YGrLRjBKKHy/QTMV6k8tSNnzriVkJnxuBJMoxo9934FZHA SZSaj5k6MGZ6sU/2kdw7Rwukg4ifH6n+iyMaG3Z5Y+1BOqzwO5+FW3Q/l9DpwtEGW0Is uqkYyjamrTqVl7bhHHNZsb0sXI4kN03k7TGHqtnfvgSIx5jQzp43XLc7wJk5oepdnJX+ 5CrL2h2qCs4JZNIDeYmWlLqdyKSCOFRsyzUOeDBcgzG4MkiwaQvPzoRaaUTzhMxdN9Nk XaABDwj3/55/8WpF7fR19qSB224/ibn8M9GHP4ak1q1SNUVdhPs/MYwY6H5uG7XGblTk dXIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:cc:to:subject:from:references:in-reply-to :message-id; bh=lqg+JPm+prU+KgIBePbjDVjI/mmVVL5yziL9CFzyK4g=; b=vln3lV5sSr/jilP1GuJxgR0gTxwBVXJlEvww+utGdi7ijdRHG9WIxxavSKpAO2MwMx 35Rxf+A1hgS9Vj0HJh1ZkikbcqXgUqt5iJkV+NnMajIKht6HdRJAL68vanqYSt73pj7P iiTGhpB4tc1eeUaU7mKpXis6I9dKASWpJXFLrry4UAkkiuxnjiPxVDy0vPqffUa5ZaXD PBx8oKYOYYxoQghdCsXyl4smnE48He36cIKpmnGXiuEbLsMaxqi7we8NGu95TN7AcUOe gY1ABk+E1aXwR7Yb/vyrvj48UsL8iNH/p3OfBNss0eR1tEDavrxOtNhW8Dc8aPOD6pw3 Yedw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k3si11161751edh.390.2021.02.08.08.30.04; Mon, 08 Feb 2021 08:30:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233829AbhBHQ2B (ORCPT + 99 others); Mon, 8 Feb 2021 11:28:01 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:9653 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232620AbhBHPLF (ORCPT ); Mon, 8 Feb 2021 10:11:05 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4DZ8bF4M5yz9vBnD; Mon, 8 Feb 2021 16:10:17 +0100 (CET) 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 1veLJyV4V-wT; Mon, 8 Feb 2021 16:10:17 +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 4DZ8bF3K4Hz9vBn3; Mon, 8 Feb 2021 16:10:17 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id B95CA8B7BC; Mon, 8 Feb 2021 16:10:22 +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 Sn-bmjmkONes; Mon, 8 Feb 2021 16:10:22 +0100 (CET) Received: from po16121vm.idsi0.si.c-s.fr (po15451.idsi0.si.c-s.fr [172.25.230.103]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 845F98B7BA; Mon, 8 Feb 2021 16:10:22 +0100 (CET) Received: by po16121vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 78CC56733E; Mon, 8 Feb 2021 15:10:22 +0000 (UTC) Message-Id: <3fe8891c814103a3549efc1d4e7ffc828bba5993.1612796617.git.christophe.leroy@csgroup.eu> In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v5 03/22] powerpc/32: On syscall entry, enable instruction translation at the same time as data To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , npiggin@gmail.com, msuchanek@suse.de Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Mon, 8 Feb 2021 15:10:22 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 40x and 8xx, kernel text is pinned. On book3s/32, kernel text is mapped by BATs. Enable instruction translation at the same time as data translation, it makes things simpler. MSR_RI can also be set at the same time because srr0/srr1 are already saved and r1 is set properly. On booke, translation is always on, so at the end all PPC32 have translation on early. This reduces null_syscall benchmark by 13 cycles on 8xx (296 ==> 283 cycles). Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/head_32.h | 26 +++++++++----------------- arch/powerpc/kernel/head_booke.h | 7 ++----- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/arch/powerpc/kernel/head_32.h b/arch/powerpc/kernel/head_32.h index fdc07beab844..4029c51dce5d 100644 --- a/arch/powerpc/kernel/head_32.h +++ b/arch/powerpc/kernel/head_32.h @@ -125,9 +125,13 @@ lwz r1,TASK_STACK-THREAD(r12) beq- 99f addi r1, r1, THREAD_SIZE - INT_FRAME_SIZE - LOAD_REG_IMMEDIATE(r10, MSR_KERNEL & ~(MSR_IR | MSR_RI)) /* can take DTLB miss */ - mtmsr r10 - isync + LOAD_REG_IMMEDIATE(r10, MSR_KERNEL) /* can take exceptions */ + mtspr SPRN_SRR1, r10 + lis r10, 1f@h + ori r10, r10, 1f@l + mtspr SPRN_SRR0, r10 + rfi +1: tovirt(r12, r12) stw r11,GPR1(r1) stw r11,0(r1) @@ -141,9 +145,6 @@ stw r10,_CCR(r11) /* save registers */ #ifdef CONFIG_40x rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */ -#else - LOAD_REG_IMMEDIATE(r10, MSR_KERNEL & ~MSR_IR) /* can take exceptions */ - mtmsr r10 /* (except for mach check in rtas) */ #endif lis r10,STACK_FRAME_REGS_MARKER@ha /* exception frame marker */ stw r2,GPR2(r11) @@ -180,8 +181,6 @@ #endif 3: - lis r11, transfer_to_syscall@h - ori r11, r11, transfer_to_syscall@l #ifdef CONFIG_TRACE_IRQFLAGS /* * If MSR is changing we need to keep interrupts disabled at this point @@ -193,15 +192,8 @@ #else LOAD_REG_IMMEDIATE(r10, MSR_KERNEL | MSR_EE) #endif -#if defined(CONFIG_PPC_8xx) && defined(CONFIG_PERF_EVENTS) - mtspr SPRN_NRI, r0 -#endif - mtspr SPRN_SRR1,r10 - mtspr SPRN_SRR0,r11 - rfi /* jump to handler, enable MMU */ -#ifdef CONFIG_40x - b . /* Prevent prefetch past rfi */ -#endif + mtmsr r10 + b transfer_to_syscall /* jump to handler */ 99: b ret_from_kernel_syscall .endm diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h index 706cd9368992..b3c502c503a0 100644 --- a/arch/powerpc/kernel/head_booke.h +++ b/arch/powerpc/kernel/head_booke.h @@ -157,8 +157,6 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV) stw r12,4(r11) 3: - lis r11, transfer_to_syscall@h - ori r11, r11, transfer_to_syscall@l #ifdef CONFIG_TRACE_IRQFLAGS /* * If MSR is changing we need to keep interrupts disabled at this point @@ -172,9 +170,8 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_EMB_HV) lis r10, (MSR_KERNEL | MSR_EE)@h ori r10, r10, (MSR_KERNEL | MSR_EE)@l #endif - mtspr SPRN_SRR1,r10 - mtspr SPRN_SRR0,r11 - rfi /* jump to handler, enable MMU */ + mtmsr r10 + b transfer_to_syscall /* jump to handler */ 99: b ret_from_kernel_syscall .endm -- 2.25.0