Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2498925pxb; Tue, 9 Mar 2021 04:14:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJxtgPLjY+JTIUdaU9cdKTSQjBKMzrUgAAnvLaCSC9XyYGdxiu8F5RQcQbMsVyuLnsDMrFMo X-Received: by 2002:aa7:cd8c:: with SMTP id x12mr3775265edv.355.1615292045790; Tue, 09 Mar 2021 04:14:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615292045; cv=none; d=google.com; s=arc-20160816; b=xpfZlnuHeakrg6GVWXfarCtAlECc5i61mRGitycnjp6M2nu/RHbNaM178l3Jb1R2DN Fzjh0DG/V6/0mvb7IXEy4JqWHiVyPhQiQHdgEQeK4JtbdD1DjdCI0wvXJ5zGYNZq+I89 /9kJjEsoQ/ljE7dhnIC2ocHkdBXDPylhArhC3BrFuweT9FflwF1tJ8Os9UX/x/w2Nnt0 lU6IanybKqBSp0CvPbrOIPbT7giKYVFlPsDwSP2FiqSXiZJI++y0t1Q+6wB7WTFKfIjS EmnL/gLLn9oPnmNH8knFFlaTP8HaES/crRvrap94Yy63tr2CHSC7W8pr0RQx85PR0Ei+ KYrg== 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=rSzTawwC0qc5FjF3WWVQnhiK9fwSiXO9zilRQu0Yv24=; b=lwUjvubdT+HhkUjXbuxPGVx2z6hEqHWTwn3FDSgz2eVc7AyyzVYnjAZSjLlbfrkWaM B+cDfLi8XQ7ihAd6Cx8ehL/zTtRCf90d3JCHNzses+apG5CsAkxOaADNloi4teLrHgny rAna6zm8dCxGn249Ty1NvtPenx1DCsZDimQ937ZDjRn2YEs4lJnv5e5iI0e9rUzBJXlB 706G/C8WdrJvF8qAiR93zKWFkfaxvj36zmXeoG8GcJ1dQ6ruTyF6u2+hXXOtyPcBo457 7mlbrqF3WMELAEdLHhHzEBmkHTDNFzqx1yhpSnZTmP6NHHW0nC/ZbA5U2BdpEparXhxJ XJIw== 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 f4si8732897edm.126.2021.03.09.04.13.43; Tue, 09 Mar 2021 04:14:05 -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 S231712AbhCIMKl (ORCPT + 99 others); Tue, 9 Mar 2021 07:10:41 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:40249 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231307AbhCIMJ4 (ORCPT ); Tue, 9 Mar 2021 07:09:56 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4DvvCj6RSxz9tyjH; Tue, 9 Mar 2021 13:09:53 +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 tUGXqfuo8RMi; Tue, 9 Mar 2021 13:09: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 4DvvCj5fBvz9tyjG; Tue, 9 Mar 2021 13:09:53 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 0F7E68B802; Tue, 9 Mar 2021 13:09:55 +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 rsZM9YlbXIn1; Tue, 9 Mar 2021 13:09:54 +0100 (CET) Received: from po16121vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id B91EB8B7FC; Tue, 9 Mar 2021 13:09:54 +0100 (CET) Received: by po16121vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 9A72367555; Tue, 9 Mar 2021 12:09:54 +0000 (UTC) Message-Id: In-Reply-To: References: From: Christophe Leroy Subject: [PATCH v2 28/43] powerpc/64e: Call bad_page_fault() from do_page_fault() To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , npiggin@gmail.com Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 9 Mar 2021 12:09:54 +0000 (UTC) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org book3e/64 is the last one calling __bad_page_fault() from assembly. Save non volatile registers before calling do_page_fault() and modify do_page_fault() to call __bad_page_fault() for all platforms. Then it can be refactored by the call of bad_page_fault() which avoids the duplication of the exception table search. Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/exceptions-64e.S | 8 +------- arch/powerpc/mm/fault.c | 17 ++++------------- 2 files changed, 5 insertions(+), 20 deletions(-) diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S index e8eb9992a270..b60f89078a3f 100644 --- a/arch/powerpc/kernel/exceptions-64e.S +++ b/arch/powerpc/kernel/exceptions-64e.S @@ -1010,15 +1010,9 @@ storage_fault_common: addi r3,r1,STACK_FRAME_OVERHEAD ld r14,PACA_EXGEN+EX_R14(r13) ld r15,PACA_EXGEN+EX_R15(r13) + bl save_nvgprs bl do_page_fault - cmpdi r3,0 - bne- 1f b ret_from_except_lite -1: bl save_nvgprs - mr r4,r3 - addi r3,r1,STACK_FRAME_OVERHEAD - bl __bad_page_fault - b ret_from_except /* * Alignment exception doesn't fit entirely in the 0x100 bytes so it diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 2e54bac99a22..7bcff3fca110 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@ -541,24 +541,15 @@ NOKPROBE_SYMBOL(___do_page_fault); static long __do_page_fault(struct pt_regs *regs) { - const struct exception_table_entry *entry; long err; err = ___do_page_fault(regs, regs->dar, regs->dsisr); if (likely(!err)) - return err; - - entry = search_exception_tables(regs->nip); - if (likely(entry)) { - instruction_pointer_set(regs, extable_fixup(entry)); return 0; - } else if (!IS_ENABLED(CONFIG_PPC_BOOK3E_64)) { - __bad_page_fault(regs, err); - return 0; - } else { - /* 32 and 64e handle the bad page fault in asm */ - return err; - } + + bad_page_fault(regs, err); + + return 0; } NOKPROBE_SYMBOL(__do_page_fault); -- 2.25.0