Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp140968iob; Tue, 17 May 2022 21:37:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwR+WHMAjZOBq6qpyE90cPCviB2eCDxeEhO/gNPhpA30/t8DngvpbTRTAveqMepbJSRN7dt X-Received: by 2002:a17:903:240c:b0:153:c452:f282 with SMTP id e12-20020a170903240c00b00153c452f282mr25187115plo.88.1652848660067; Tue, 17 May 2022 21:37:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652848660; cv=none; d=google.com; s=arc-20160816; b=t6Hdsn8e17JfgMr48iWa0T0SkdkPpzmZncdJMqbUo5oWRqJCv8CElvvGXYiyV/zicK 1LRcrLc0B3KsUo4bkw3GMUOJ+GzzBrmFM5gARoALcDxzMPmpL0wPYp6on09vir/t2dnO HWS8TOJubxTcrPDY2bY8RkwS7OpE46VZRVpfduy/Ncf49InSkspPYj+faYtor7iikoUz 1uE5aZkSV6ebf7Ijo3hOdtkmWg+PRRX7NXtMEsyjDBzc5hYXUTbMz4jSQ56n9zzDlwVI 76QlYJhWUanFEUrcZbbBoGh/UQtiFnjFKXhGelN2jSY3Sju20G4M+8M/V37sa5rGaqIx aX6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:dkim-signature; bh=TDeqjo10z/lPZ0BTlKdpVqFzl6dlu8tIpR5fp3YJtjE=; b=ldGJqIR2vmaZXOl9QcJyp1DVsi1jrAzn2ug0gg4Hlz7aac3ixk3rQ3gRj2YDtc0hWz d7LQqHfcHF2RtfEDCWRuNw4XZTkg3HenNZKHa6Xv+jD116uiEICXI97c+enEZwjEI5sR qsxxC5+cYVg6Kx224fQMBfXeQqtVLkUAGJAKLaItF0GOsK5h5LnvfDwVrreAzR+qbATy S6s4K9yuZkkAj0AEhx1uL1W1A2uwrH/hlyHdZaQobQtAKyU/u3y0/zg5vSlnLegoZUhF 2Dm4lpmDyaHdKGRCiUgpnzkE+PqjajLjF7j+XPpqz45gp8CsUq7fdDTUMHiZ9dQD8Pe+ 1fPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ellerman.id.au header.s=201909 header.b=QiiFptg0; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id u3-20020a056a00158300b0050d332b93b2si1700378pfk.18.2022.05.17.21.37.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 May 2022 21:37:40 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@ellerman.id.au header.s=201909 header.b=QiiFptg0; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id E8893C9EF3; Tue, 17 May 2022 20:55:04 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346373AbiEQMsm (ORCPT + 99 others); Tue, 17 May 2022 08:48:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243529AbiEQMsj (ORCPT ); Tue, 17 May 2022 08:48:39 -0400 Received: from gandalf.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B6883C70B for ; Tue, 17 May 2022 05:48:38 -0700 (PDT) Received: from authenticated.ozlabs.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mail.ozlabs.org (Postfix) with ESMTPSA id 4L2bX221Lwz4xZ2; Tue, 17 May 2022 22:48:34 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ellerman.id.au; s=201909; t=1652791714; bh=TDeqjo10z/lPZ0BTlKdpVqFzl6dlu8tIpR5fp3YJtjE=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=QiiFptg0D+ihDZM7seo2f+wYINfaOQNzMLR2VUHUpdeOE9fgLMzgZG8P6+JxAZ/EZ s9p7+wdZZVWhxWP+MfhjuHYudBMb/UAx8dzeYhWd0diY2cArjEdh5wsZzEkYcX3cmb 9tJUCVSHBHPpqLwbQMheLzEZzX3kcPFW+b2JIDzYWKapSFKpzGd+wnGbLMsx7cEGCO Hu1/l2PeemupH2wtS6DrVtVfhQwkPHPgYNkC5ukyXdHX2iahKgUglygE2HH9PgOKVL WNDGK6AT5tNxuDYULhkA/m1akdKYydLpFO1S65TSHdqOjwwz4zeVE6uLGr9aq/XGTC R4Ly3ybYFX18Q== From: Michael Ellerman To: Christophe Leroy , Benjamin Herrenschmidt , Paul Mackerras Cc: Christophe Leroy , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: Re: [PATCH] powerpc/irq: Remove arch_local_irq_restore() for !CONFIG_CC_HAS_ASM_GOTO In-Reply-To: <58df50c9e77e2ed945bacdead30412770578886b.1652715336.git.christophe.leroy@csgroup.eu> References: <58df50c9e77e2ed945bacdead30412770578886b.1652715336.git.christophe.leroy@csgroup.eu> Date: Tue, 17 May 2022 22:48:32 +1000 Message-ID: <871qwspbof.fsf@mpe.ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Christophe Leroy writes: > All supported versions of GCC support asm goto. I thought clang was the one that only recently added support for asm goto. Apparently clang added support in 2019, in clang 9. The earliest clang we claim to support is 11. So this patch is good, I'll just adjust the change log to say GCC/clang. cheers > diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c > index c768cde03e36..dd09919c3c66 100644 > --- a/arch/powerpc/kernel/irq.c > +++ b/arch/powerpc/kernel/irq.c > @@ -216,7 +216,6 @@ static inline void replay_soft_interrupts_irqrestore(void) > #define replay_soft_interrupts_irqrestore() replay_soft_interrupts() > #endif > > -#ifdef CONFIG_CC_HAS_ASM_GOTO > notrace void arch_local_irq_restore(unsigned long mask) > { > unsigned char irq_happened; > @@ -312,82 +311,6 @@ notrace void arch_local_irq_restore(unsigned long mask) > __hard_irq_enable(); > preempt_enable(); > } > -#else > -notrace void arch_local_irq_restore(unsigned long mask) > -{ > - unsigned char irq_happened; > - > - /* Write the new soft-enabled value */ > - irq_soft_mask_set(mask); > - if (mask) > - return; > - > - if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) > - WARN_ON_ONCE(in_nmi() || in_hardirq()); > - > - /* > - * From this point onward, we can take interrupts, preempt, > - * etc... unless we got hard-disabled. We check if an event > - * happened. If none happened, we know we can just return. > - * > - * We may have preempted before the check below, in which case > - * we are checking the "new" CPU instead of the old one. This > - * is only a problem if an event happened on the "old" CPU. > - * > - * External interrupt events will have caused interrupts to > - * be hard-disabled, so there is no problem, we > - * cannot have preempted. > - */ > - irq_happened = get_irq_happened(); > - if (!irq_happened) { > - if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) > - WARN_ON_ONCE(!(mfmsr() & MSR_EE)); > - return; > - } > - > - /* We need to hard disable to replay. */ > - if (!(irq_happened & PACA_IRQ_HARD_DIS)) { > - if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) > - WARN_ON_ONCE(!(mfmsr() & MSR_EE)); > - __hard_irq_disable(); > - local_paca->irq_happened |= PACA_IRQ_HARD_DIS; > - } else { > - /* > - * We should already be hard disabled here. We had bugs > - * where that wasn't the case so let's dbl check it and > - * warn if we are wrong. Only do that when IRQ tracing > - * is enabled as mfmsr() can be costly. > - */ > - if (IS_ENABLED(CONFIG_PPC_IRQ_SOFT_MASK_DEBUG)) { > - if (WARN_ON_ONCE(mfmsr() & MSR_EE)) > - __hard_irq_disable(); > - } > - > - if (irq_happened == PACA_IRQ_HARD_DIS) { > - local_paca->irq_happened = 0; > - __hard_irq_enable(); > - return; > - } > - } > - > - /* > - * Disable preempt here, so that the below preempt_enable will > - * perform resched if required (a replayed interrupt may set > - * need_resched). > - */ > - preempt_disable(); > - irq_soft_mask_set(IRQS_ALL_DISABLED); > - trace_hardirqs_off(); > - > - replay_soft_interrupts_irqrestore(); > - local_paca->irq_happened = 0; > - > - trace_hardirqs_on(); > - irq_soft_mask_set(IRQS_ENABLED); > - __hard_irq_enable(); > - preempt_enable(); > -} > -#endif > EXPORT_SYMBOL(arch_local_irq_restore); > > /* > -- > 2.35.1