From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B2511C433E9 for ; Tue, 9 Feb 2021 16:14:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 792E064EAA for ; Tue, 9 Feb 2021 16:14:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230359AbhBIQOf (ORCPT ); Tue, 9 Feb 2021 11:14:35 -0500 Received: from pegase1.c-s.fr ([93.17.236.30]:23375 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232788AbhBIQOR (ORCPT ); Tue, 9 Feb 2021 11:14:17 -0500 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4DZnxl0tRtz9v0Jx; Tue, 9 Feb 2021 17:13:31 +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 VNxI6Xy2d8lS; Tue, 9 Feb 2021 17:13:31 +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 4DZnxk6yd8z9v0JL; Tue, 9 Feb 2021 17:13:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 7ED6B8B764; Tue, 9 Feb 2021 17:13:32 +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 SpEj3Si2q6SX; Tue, 9 Feb 2021 17:13:32 +0100 (CET) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id BE8778B7EA; Tue, 9 Feb 2021 17:13:31 +0100 (CET) Subject: Re: [PATCH v5 16/22] powerpc/syscall: Avoid stack frame in likely part of system_call_exception() To: Nicholas Piggin , Benjamin Herrenschmidt , Michael Ellerman , msuchanek@suse.de, Paul Mackerras Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org References: <981edfd50d4c980634b74c4bb76b765c499a87ec.1612796617.git.christophe.leroy@csgroup.eu> <1612834634.qle1lc7n6y.astroid@bobo.none> From: Christophe Leroy Message-ID: Date: Tue, 9 Feb 2021 17:13:17 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <1612834634.qle1lc7n6y.astroid@bobo.none> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 09/02/2021 à 02:55, Nicholas Piggin a écrit : > Excerpts from Christophe Leroy's message of February 9, 2021 1:10 am: >> When r3 is not modified, reload it from regs->orig_r3 to free >> volatile registers. This avoids a stack frame for the likely part >> of system_call_exception() > > This doesn't on my 64s build, but it does reduce one non volatile > register save/restore. With quite a bit more register pressure > reduction 64s can avoid the stack frame as well. The stack frame is not due to the registers because on PPC64 you have the redzone that you don't have on PPC32. As far as I can see, this is due to a call to .arch_local_irq_restore(). On ppc32 arch_local_irq_restore() is just a write to MSR. > > It's a cool trick but quite code and compiler specific so I don't know > how worthwhile it is to keep considering we're calling out into random > kernel C code after this. > > Maybe just keep it PPC32 specific for the moment, will have to do more > tuning for 64 and we have other stuff to do there first. > > If you are happy to make it 32-bit only then I think we can leave without this, that's only one or two cycles won. > > Reviewed-by: Nicholas Piggin > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 111EAC433DB for ; Tue, 9 Feb 2021 16:16:07 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3218164E99 for ; Tue, 9 Feb 2021 16:16:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3218164E99 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=csgroup.eu Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 4DZp0g0q8gzDsk7 for ; Wed, 10 Feb 2021 03:16:03 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=csgroup.eu (client-ip=93.17.236.30; helo=pegase1.c-s.fr; envelope-from=christophe.leroy@csgroup.eu; receiver=) Received: from pegase1.c-s.fr (pegase1.c-s.fr [93.17.236.30]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4DZnxz2hJhzDsmy for ; Wed, 10 Feb 2021 03:13:36 +1100 (AEDT) Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4DZnxl0tRtz9v0Jx; Tue, 9 Feb 2021 17:13:31 +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 VNxI6Xy2d8lS; Tue, 9 Feb 2021 17:13:31 +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 4DZnxk6yd8z9v0JL; Tue, 9 Feb 2021 17:13:30 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 7ED6B8B764; Tue, 9 Feb 2021 17:13:32 +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 SpEj3Si2q6SX; Tue, 9 Feb 2021 17:13:32 +0100 (CET) Received: from [192.168.4.90] (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id BE8778B7EA; Tue, 9 Feb 2021 17:13:31 +0100 (CET) Subject: Re: [PATCH v5 16/22] powerpc/syscall: Avoid stack frame in likely part of system_call_exception() To: Nicholas Piggin , Benjamin Herrenschmidt , Michael Ellerman , msuchanek@suse.de, Paul Mackerras References: <981edfd50d4c980634b74c4bb76b765c499a87ec.1612796617.git.christophe.leroy@csgroup.eu> <1612834634.qle1lc7n6y.astroid@bobo.none> From: Christophe Leroy Message-ID: Date: Tue, 9 Feb 2021 17:13:17 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <1612834634.qle1lc7n6y.astroid@bobo.none> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" Le 09/02/2021 à 02:55, Nicholas Piggin a écrit : > Excerpts from Christophe Leroy's message of February 9, 2021 1:10 am: >> When r3 is not modified, reload it from regs->orig_r3 to free >> volatile registers. This avoids a stack frame for the likely part >> of system_call_exception() > > This doesn't on my 64s build, but it does reduce one non volatile > register save/restore. With quite a bit more register pressure > reduction 64s can avoid the stack frame as well. The stack frame is not due to the registers because on PPC64 you have the redzone that you don't have on PPC32. As far as I can see, this is due to a call to .arch_local_irq_restore(). On ppc32 arch_local_irq_restore() is just a write to MSR. > > It's a cool trick but quite code and compiler specific so I don't know > how worthwhile it is to keep considering we're calling out into random > kernel C code after this. > > Maybe just keep it PPC32 specific for the moment, will have to do more > tuning for 64 and we have other stuff to do there first. > > If you are happy to make it 32-bit only then I think we can leave without this, that's only one or two cycles won. > > Reviewed-by: Nicholas Piggin >