From patchwork Tue Nov 24 14:14:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929129 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 B3B7EC2D0E4 for ; Tue, 24 Nov 2020 14:16:38 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 3ED722063A for ; Tue, 24 Nov 2020 14:16:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="eiY0VbM8"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="z7J/st1f" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3ED722063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=EUeLSUBycnbvnGA8BWJnGqBRfwB51AjSIkDLYi/EJAc=; b=eiY0VbM8wZxVrUih7MS/KPIJQ pFSwUsSlyS/cKM4KQlwK599JMr8/qaYTXzgL54Z2+m5iuugQaoHXHCUj9NKyLuSiteNp4FT8n5fNe 3kCahk5yO1jBFk/0Ejx8PxsjBLCU3ix2UihoC+pCfQHlh5GKkFlW95tvRnNYha/zisl6rHPxTwpPA LheyqJ+owANb5VNO9y2M8/LAmd9crpurxoMjSK9wiaMwX9cYkyTO2HAGCa/Al5ZzqZByEo4Y5MZpm DiNEWcKN+SBEIOGLV63awN3liYOAsg5Ap4EXLN5FTvP9ixYPk2kylbDh4ZPjHEPisHHxf/yZM8XGP pkIYzqL2Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ67-0004Xa-8I; Tue, 24 Nov 2020 14:15:11 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5t-0004R5-2q for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:14:58 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 113482076B; Tue, 24 Nov 2020 14:14:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227296; bh=+rG5SNZYbcFtY3MLFgwny2sPTFB4xCGZc4NSf/NRIs8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=z7J/st1fc+p1OP01zR/e3032fDqvIEza2mRMm48l53Ioub2V0xS8uMJW9nVdOs1Px S6nDQnhXASLpFyLmBA6W4cCIAO6sjvR35gyF5HrFeL5xR2v/BXkgGWqKSWp3GheqMo ZjR2Ht0aNnR4iy75x3k/N29WiKYTHeSiNHjmdzT8= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5q-00DGcy-6t; Tue, 24 Nov 2020 14:14:54 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 1/6] genirq: Add __irq_modify_status() helper to clear/set special flags Date: Tue, 24 Nov 2020 14:14:44 +0000 Message-Id: <20201124141449.572446-2-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091457_352070_A863516A X-CRM114-Status: GOOD ( 17.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Some arch-specific flags need to be set/cleared, but not exposed to random device drivers. Introduce a new helper (__irq_modify_status()) that takes an arbitrary mask, and rewrite irq_modify_status() to use this new helper. No functionnal change. Signed-off-by: Marc Zyngier --- include/linux/irq.h | 3 +++ kernel/irq/chip.c | 12 ++++++++++-- kernel/irq/settings.h | 10 ++++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/include/linux/irq.h b/include/linux/irq.h index c54365309e97..c55f218d5b61 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -751,6 +751,9 @@ void irq_set_chained_handler_and_data(unsigned int irq, irq_flow_handler_t handle, void *data); +void __irq_modify_status(unsigned int irq, unsigned long clr, + unsigned long set, unsigned long mask); + void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set); static inline void irq_set_status_flags(unsigned int irq, unsigned long set) diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index b9b9618e1aca..85176712a484 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -1107,7 +1107,8 @@ irq_set_chip_and_handler_name(unsigned int irq, struct irq_chip *chip, } EXPORT_SYMBOL_GPL(irq_set_chip_and_handler_name); -void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) +void __irq_modify_status(unsigned int irq, unsigned long clr, + unsigned long set, unsigned long mask) { unsigned long flags, trigger, tmp; struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); @@ -1121,7 +1122,9 @@ void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) */ WARN_ON_ONCE(!desc->depth && (set & _IRQ_NOAUTOEN)); - irq_settings_clr_and_set(desc, clr, set); + /* Warn when trying to clear or set a bit disallowed by the mask */ + WARN_ON((clr | set) & ~mask); + __irq_settings_clr_and_set(desc, clr, set, mask); trigger = irqd_get_trigger_type(&desc->irq_data); @@ -1144,6 +1147,11 @@ void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) irq_put_desc_unlock(desc, flags); } + +void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) +{ + __irq_modify_status(irq, clr, set, _IRQF_MODIFY_MASK); +} EXPORT_SYMBOL_GPL(irq_modify_status); /** diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h index 403378b9947b..51acdf43eadc 100644 --- a/kernel/irq/settings.h +++ b/kernel/irq/settings.h @@ -36,11 +36,17 @@ enum { #undef IRQF_MODIFY_MASK #define IRQF_MODIFY_MASK GOT_YOU_MORON +static inline void +__irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set, u32 mask) +{ + desc->status_use_accessors &= ~(clr & mask); + desc->status_use_accessors |= (set & mask); +} + static inline void irq_settings_clr_and_set(struct irq_desc *desc, u32 clr, u32 set) { - desc->status_use_accessors &= ~(clr & _IRQF_MODIFY_MASK); - desc->status_use_accessors |= (set & _IRQF_MODIFY_MASK); + __irq_settings_clr_and_set(desc, clr, set, _IRQF_MODIFY_MASK); } static inline bool irq_settings_is_per_cpu(struct irq_desc *desc) From patchwork Tue Nov 24 14:14:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929131 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 6A7EDC2D0E4 for ; Tue, 24 Nov 2020 14:16:54 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 E04302063A for ; Tue, 24 Nov 2020 14:16:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="0nTLN4Iq"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="qr9RDw53" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E04302063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Hd2sIQ7ecMtbaScqfX+pIslIS7yEn//AHYPpAMb/Pt4=; b=0nTLN4IqPpIWd3IVsF+9OxiqR C1rce3F3/1geqfigpHQkFcVV1Hv589wJQjfJe0nMKFJYQQkrJw8ERogeqQhzakO7TNRjmElhn2wp8 N1kAv131A6nKF2pqRhLujTTxyAjOWN40uiy/K7w9bjLfhBBPWDCCts+DboCXekcSgPLxBNgOzU5En J8DnSZCT2yWb720+YUGzk4/pLYQGeGYsyzjaan89mCZ5iGFUZdjmDyjnA5U2sPYKd0QtPIhHFTzra dQsBamdulfb9rLu1FT/yxxcey88r76H55svwrFMq22TEY1mxc7S4HAAsaA+ZE012RIYLksPAWwFwk /jH+l+/Sg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ6R-0004de-2J; Tue, 24 Nov 2020 14:15:31 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5t-0004RH-MH for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:15:01 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CABD82083E; Tue, 24 Nov 2020 14:14:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227297; bh=enfZjxQRfmwzAt9rTt0EM0f2Ef5i7mBRCVbttaT5h34=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qr9RDw53iJk0TC/b/Ar6GGahhPJ4hbpob0ITh/fE7tJdtoZJFuZx2LvlHQ9mRgoJb l9EI9j/UpbTlYGmHO6NxUu2xR36xmtgQBANd0ITryILGL73sU8NqehBPBFPVFpPuGm ba29rsH6FVPVKbKbZfnob73EPQJMbTjLdcRX0uCE= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5q-00DGcy-T3; Tue, 24 Nov 2020 14:14:55 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 2/6] genirq: Allow an interrupt to be marked as 'raw' Date: Tue, 24 Nov 2020 14:14:45 +0000 Message-Id: <20201124141449.572446-3-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091457_980585_2CA95D46 X-CRM114-Status: GOOD ( 24.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Some interrupts (such as the rescheduling IPI) rely on not going through the irq_enter()/irq_exit() calls. To distinguish such interrupts, add a new IRQ flag that allows the low-level handling code to sidestep the enter()/exit() calls. Only the architecture code is expected to use this. It will do the wrong thing on normal interrupts. Note that this is a band-aid until we can move to some more correct infrastructure (such as kernel/entry/common.c). Signed-off-by: Marc Zyngier --- include/linux/irq.h | 2 ++ kernel/irq/Kconfig | 3 +++ kernel/irq/debugfs.c | 1 + kernel/irq/irqdesc.c | 17 ++++++++++++----- kernel/irq/settings.h | 15 +++++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/include/linux/irq.h b/include/linux/irq.h index c55f218d5b61..605ba5949255 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -72,6 +72,7 @@ enum irqchip_irq_state; * mechanism and from core side polling. * IRQ_DISABLE_UNLAZY - Disable lazy irq disable * IRQ_HIDDEN - Don't show up in /proc/interrupts + * IRQ_RAW - Skip tick management and irqtime accounting */ enum { IRQ_TYPE_NONE = 0x00000000, @@ -99,6 +100,7 @@ enum { IRQ_IS_POLLED = (1 << 18), IRQ_DISABLE_UNLAZY = (1 << 19), IRQ_HIDDEN = (1 << 20), + IRQ_RAW = (1 << 21), }; #define IRQF_MODIFY_MASK \ diff --git a/kernel/irq/Kconfig b/kernel/irq/Kconfig index 164a031cfdb6..ae9b13d5ee91 100644 --- a/kernel/irq/Kconfig +++ b/kernel/irq/Kconfig @@ -109,6 +109,9 @@ config GENERIC_IRQ_MATRIX_ALLOCATOR config GENERIC_IRQ_RESERVATION_MODE bool +config ARCH_WANTS_IRQ_RAW + bool + # Support forced irq threading config IRQ_FORCED_THREADING bool diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c index e4cff358b437..f53475d88072 100644 --- a/kernel/irq/debugfs.c +++ b/kernel/irq/debugfs.c @@ -140,6 +140,7 @@ static const struct irq_bit_descr irqdesc_states[] = { BIT_MASK_DESCR(_IRQ_IS_POLLED), BIT_MASK_DESCR(_IRQ_DISABLE_UNLAZY), BIT_MASK_DESCR(_IRQ_HIDDEN), + BIT_MASK_DESCR(_IRQ_RAW), }; static const struct irq_bit_descr irqdesc_istates[] = { diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index 1a7723604399..f5beee546a6f 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -667,10 +667,9 @@ int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq, { struct pt_regs *old_regs = set_irq_regs(regs); unsigned int irq = hwirq; + struct irq_desc *desc; int ret = 0; - irq_enter(); - #ifdef CONFIG_IRQ_DOMAIN if (lookup) irq = irq_find_mapping(domain, hwirq); @@ -680,14 +679,22 @@ int __handle_domain_irq(struct irq_domain *domain, unsigned int hwirq, * Some hardware gives randomly wrong interrupts. Rather * than crashing, do something sensible. */ - if (unlikely(!irq || irq >= nr_irqs)) { + if (unlikely(!irq || irq >= nr_irqs || !(desc = irq_to_desc(irq)))) { ack_bad_irq(irq); ret = -EINVAL; + goto out; + } + + if (IS_ENABLED(CONFIG_ARCH_WANTS_IRQ_RAW) && + unlikely(irq_settings_is_raw(desc))) { + generic_handle_irq_desc(desc); } else { - generic_handle_irq(irq); + irq_enter(); + generic_handle_irq_desc(desc); + irq_exit(); } - irq_exit(); +out: set_irq_regs(old_regs); return ret; } diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h index 51acdf43eadc..0033d459fdac 100644 --- a/kernel/irq/settings.h +++ b/kernel/irq/settings.h @@ -18,6 +18,7 @@ enum { _IRQ_IS_POLLED = IRQ_IS_POLLED, _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY, _IRQ_HIDDEN = IRQ_HIDDEN, + _IRQ_RAW = IRQ_RAW, _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK, }; @@ -33,6 +34,7 @@ enum { #define IRQ_IS_POLLED GOT_YOU_MORON #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON #define IRQ_HIDDEN GOT_YOU_MORON +#define IRQ_RAW GOT_YOU_MORON #undef IRQF_MODIFY_MASK #define IRQF_MODIFY_MASK GOT_YOU_MORON @@ -180,3 +182,16 @@ static inline bool irq_settings_is_hidden(struct irq_desc *desc) { return desc->status_use_accessors & _IRQ_HIDDEN; } + +static inline bool irq_settings_is_raw(struct irq_desc *desc) +{ + if (IS_ENABLED(CONFIG_ARCH_WANTS_IRQ_RAW)) + return desc->status_use_accessors & _IRQ_RAW; + + /* + * Using IRQ_RAW on architectures that don't expect it is + * likely to be wrong. + */ + WARN_ON_ONCE(1); + return false; +} From patchwork Tue Nov 24 14:14:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929123 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 4A8B7C56201 for ; Tue, 24 Nov 2020 14:15:57 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 B5A3E2063A for ; Tue, 24 Nov 2020 14:15:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="ROkwFCGl"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="nrKyAJat" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B5A3E2063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ti+A7mn4PgqmB5/062VhKLU2bHK83acZw2Df0z3NnOE=; b=ROkwFCGlz5zIuO4tmOt11NVmB E9KPkKbVOwk+XTfFYaeU4NSBU1bNFUrGvHYA0isLSQUyS5z6cmUSfLCVT0CzoE0a+1Ga9yvFhkSHd EHo6fxWf4KaqgqhL/AoFbLffNwY7l3ZKLG2rZuceZOvmyRtFP+jeKqVIuEVQc7gz4OZ2b6AeWpM9D lpQaec6j+vDtcCBz3HWJBgmVJlDgOvS2YiEUwbPczYuTbBH9YPQsmOtTw5IKfG2SEAGetHO/lGDsg YgocEeg98i0cQ9WaZ8Ba7uLHpk4KNbQgPwo2mZ++JON2PlqEw8p4Ico6GAxgy7gqxC0VIDRd7Iyw2 Vc1fZZlKw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ6M-0004cU-ES; Tue, 24 Nov 2020 14:15:26 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5u-0004Ri-8b for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:15:00 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 669FB206FB; Tue, 24 Nov 2020 14:14:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227297; bh=PrUzHkuQSWZIMZxZ+NQmmORR5bj7LQLhBBz/VO5uZHg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nrKyAJat45aUAhmn5/X5YWpFMTe3Djlzp7SmpOl7yqUrNwuG3fEdjYYnPCPgNngo0 AYQrAaRkmyapMI2bZMafFCYNAmOT/cGjN9fvOR1VNwi3LEjnRJww0sTO/nB4HfjwwH 7eaGO3t0fjm3SnPMZvkO4BnJES8RZrWNleJZqces= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5r-00DGcy-Hz; Tue, 24 Nov 2020 14:14:55 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 3/6] arm64: Mark the recheduling IPI as raw interrupt Date: Tue, 24 Nov 2020 14:14:46 +0000 Message-Id: <20201124141449.572446-4-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091458_493135_6A84F793 X-CRM114-Status: GOOD ( 15.70 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Flag the rescheduling IPI as 'raw', making sure such interrupt skips both tick management and irqtime accounting. Signed-off-by: Marc Zyngier Acked-by: Will Deacon --- arch/arm64/Kconfig | 1 + arch/arm64/kernel/smp.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 1515f6f153a0..d18c2c15848d 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -108,6 +108,7 @@ config ARM64 select GENERIC_EARLY_IOREMAP select GENERIC_IDLE_POLL_SETUP select GENERIC_IRQ_IPI + select ARCH_WANTS_IRQ_RAW select GENERIC_IRQ_MULTI_HANDLER select GENERIC_IRQ_PROBE select GENERIC_IRQ_SHOW diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 18e9727d3f64..bad51f7f7ffe 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -995,6 +995,10 @@ void __init set_smp_ipi_range(int ipi_base, int n) ipi_desc[i] = irq_to_desc(ipi_base + i); irq_set_status_flags(ipi_base + i, IRQ_HIDDEN); + + /* The recheduling IPI is special... */ + if (i == IPI_RESCHEDULE) + __irq_modify_status(ipi_base + i, 0, IRQ_RAW, ~0); } ipi_irq_base = ipi_base; From patchwork Tue Nov 24 14:14:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929127 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 BC835C2D0E4 for ; Tue, 24 Nov 2020 14:16:25 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 4FD442063A for ; Tue, 24 Nov 2020 14:16:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="0ibAiOin"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="uwd1qIUy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4FD442063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=lzRxuUfO3o8fQLNpLdfb1Cqpkm7vdlSlGIxcGrUHBFs=; b=0ibAiOin2qwiEn5Y1RIpNHAIz W5W1QfRM7woPJHYdprKGX8DsBToM16py4o+qNX2zKEDV7a8GKdlmc3grXjmRkso4rVyy23D79iwyZ WC1nqbPfxdu8i7KGJonltS8N8MpDuA1WL+6GPxOXctimMKXOA1LP/I5z8ybjADuuXDIl2OyQAkVEu Hk+UQoB+cWGt0s6jUD1B/hz9ijBgema92t79bBg3I/nVe4a6qYhN6y/E6ncTAnVz46YhBTSN8HEAS b+zILJcpHqz6mlcSPZOQN0nBndV5urlAYx7GnT8RoHFzBzDbtqWH7AASMlPl1XS1WDONjLvz3DnAG bio2kavXg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ6g-0004gW-U3; Tue, 24 Nov 2020 14:15:47 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5v-0004SV-2e for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:15:05 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 00A842076E; Tue, 24 Nov 2020 14:14:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227298; bh=+lmTg9V6v6xiZd+sEaTBflIDj0fWKFnCwApiSlJWWuU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uwd1qIUy2yT9OqlqXWsFER4zsrIklH6YxGr9WtaoyrCEsEOr2uFX5v56NB+/Lbum9 QIEZCF2KWV2okvJhVaj6aX9YKlIo3bCG3PIsV38RaVEhkDITh4/x7l+YFZUHnQSwtU JnX7Zq4Nmtqmr1FRMkLkmtwfryrV/v8MuvDK6dhg= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5s-00DGcy-5x; Tue, 24 Nov 2020 14:14:56 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 4/6] arm: Mark the recheduling IPI as raw interrupt Date: Tue, 24 Nov 2020 14:14:47 +0000 Message-Id: <20201124141449.572446-5-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091459_361208_924514DB X-CRM114-Status: GOOD ( 16.22 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Flag the rescheduling IPI as 'raw', making sure such interrupt skips both tick management and irqtime accounting. Signed-off-by: Marc Zyngier --- arch/arm/Kconfig | 1 + arch/arm/kernel/smp.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index fe2f17eb2b50..a5e3e9963ba4 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -50,6 +50,7 @@ config ARM select GENERIC_ATOMIC64 if CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI select GENERIC_CLOCKEVENTS_BROADCAST if SMP select GENERIC_IRQ_IPI if SMP + select ARCH_WANTS_IRQ_RAW if GENERIC_IRQ_IPI select GENERIC_CPU_AUTOPROBE select GENERIC_EARLY_IOREMAP select GENERIC_IDLE_POLL_SETUP diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 48099c6e1e4a..0e09c8320caf 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -738,6 +738,10 @@ void __init set_smp_ipi_range(int ipi_base, int n) ipi_desc[i] = irq_to_desc(ipi_base + i); irq_set_status_flags(ipi_base + i, IRQ_HIDDEN); + + /* The recheduling IPI is special... */ + if (i == IPI_RESCHEDULE) + __irq_modify_status(ipi_base + i, 0, IRQ_RAW, ~0); } ipi_irq_base = ipi_base; From patchwork Tue Nov 24 14:14:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929135 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 3AD59C2D0E4 for ; Tue, 24 Nov 2020 14:17:43 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 AD6222063A for ; Tue, 24 Nov 2020 14:17:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rCjsJbeO"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="uLXfpeHp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AD6222063A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=XRd0BQ2BqGgcxAWB0QSNciRRVG3z/aVVydWfbRt6OqQ=; b=rCjsJbeOvw0JNBp4/44S6z9xT GFUcPV5Zke5r6G3F0jvrVNJElDKM2rctVB4bfKcp+pVfhulJy1TFTLPi5SojnKK82/8rGTKlqLcDS 5iufHm1UCHfoNZbgWT+jflKuewkqJMEa7NzUGU+QCsrbg9qDjQ/1G5uP6Y5rhq/DOiaYUJxuLP/FR 4zMzWQBp0WEKJWsYzoD7VUBKI953R5ChFbbB3JeqN1ZsdmuFZGEK4JPdQOUTeRAoxr1NzYhADjqQ+ +CnCdQh66t1g++07vUq/HUDZA2TGw1cecQhHMZGXIrVgYd1L85Ryyn22pz33ZYC23dgy60ne4DE7S Q2JYOQqZA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ6z-0004on-8c; Tue, 24 Nov 2020 14:16:05 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5w-0004Ty-Bp for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:15:09 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8690120866; Tue, 24 Nov 2020 14:14:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227299; bh=wPxwPSYUJQvenwuxZ8Stbfu0z1HC9dk+8Z9jU6IDIhQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uLXfpeHpaZ9aPQRFVdueYCQZ8dNyAd3w6YeeFmVIdMbvh1NO1kn5CzctmCH/56bOs MWsdtLWLPKO4LFd1TpuAoVO4HPMp2/69yCGpDdTNTeeZNdItO6uTMfvXgYJR2khCWo ps7UyOyqxB6xOBm8Wu6k5n/TUTRqouP58f85mbVY= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5s-00DGcy-PH; Tue, 24 Nov 2020 14:14:57 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 5/6] genirq: Drop IRQ_HIDDEN from IRQF_MODIFY_MASK Date: Tue, 24 Nov 2020 14:14:48 +0000 Message-Id: <20201124141449.572446-6-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091500_582389_FD2A6C83 X-CRM114-Status: GOOD ( 15.04 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org IRQ_HIDDEN is hardly a flag generic code should use, so let's drop it from IRQF_MODIFY_MASK. In turn, update both arm and arm64 to use __irq_modify_status() when setting this flag. Signed-off-by: Marc Zyngier --- arch/arm/kernel/smp.c | 2 +- arch/arm64/kernel/smp.c | 2 +- include/linux/irq.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 0e09c8320caf..dc746f808400 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -737,7 +737,7 @@ void __init set_smp_ipi_range(int ipi_base, int n) WARN_ON(err); ipi_desc[i] = irq_to_desc(ipi_base + i); - irq_set_status_flags(ipi_base + i, IRQ_HIDDEN); + __irq_modify_status(ipi_base + i, 0, IRQ_HIDDEN, ~0); /* The recheduling IPI is special... */ if (i == IPI_RESCHEDULE) diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index bad51f7f7ffe..684f41a3ba58 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -994,7 +994,7 @@ void __init set_smp_ipi_range(int ipi_base, int n) WARN_ON(err); ipi_desc[i] = irq_to_desc(ipi_base + i); - irq_set_status_flags(ipi_base + i, IRQ_HIDDEN); + __irq_modify_status(ipi_base + i, 0, IRQ_HIDDEN, ~0); /* The recheduling IPI is special... */ if (i == IPI_RESCHEDULE) diff --git a/include/linux/irq.h b/include/linux/irq.h index 605ba5949255..0e71227fd3ec 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -107,7 +107,7 @@ enum { (IRQ_TYPE_SENSE_MASK | IRQ_NOPROBE | IRQ_NOREQUEST | \ IRQ_NOAUTOEN | IRQ_MOVE_PCNTXT | IRQ_LEVEL | IRQ_NO_BALANCING | \ IRQ_PER_CPU | IRQ_NESTED_THREAD | IRQ_NOTHREAD | IRQ_PER_CPU_DEVID | \ - IRQ_IS_POLLED | IRQ_DISABLE_UNLAZY | IRQ_HIDDEN) + IRQ_IS_POLLED | IRQ_DISABLE_UNLAZY) #define IRQ_NO_BALANCING_MASK (IRQ_PER_CPU | IRQ_NO_BALANCING) From patchwork Tue Nov 24 14:14:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Zyngier X-Patchwork-Id: 11929133 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=-17.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 74662C63798 for ; Tue, 24 Nov 2020 14:16:54 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 E44052076B for ; Tue, 24 Nov 2020 14:16:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="sW9G8oai"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="wkg4aPfu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E44052076B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=vZmMBlVc1kZgnIoePJS3wEwJ1Zs1fOVqWcuEvmHwyFQ=; b=sW9G8oai5hBceemCS85Q2gV5s e19dMUu43nlN0D1bO2gpf9hIjJN55x+Fk819lkMrUeCMvbmF6cGYKkH4+JNjRxl7xhJj3a5Uttv2z IqoBXpgx3wiknzNavDyj1EC4abgE6hgMFT3SfYkorZ1MBrLv3/3FaQsdn8QfUYVp0PxA3iaXzxBqg 70yEHZO96WrMLSg2dvRs7FpqS3XUpDdtmkewSDse4pcHpoFe5zwu7rbhdUKXhtpWSKsteweIDky8Y owbZv6Qz531LNVDESr0yJGkSRWI6EdYk50A0xDtT0iMDYhMgTEiwkiasgUHx1mB4Xy0QnOEcgINLN VDe07Ahog==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ77-0004sF-7j; Tue, 24 Nov 2020 14:16:13 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1khZ5x-0004UA-45 for linux-arm-kernel@lists.infradead.org; Tue, 24 Nov 2020 14:15:09 +0000 Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 32D962087D; Tue, 24 Nov 2020 14:15:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1606227300; bh=KDb8p/armZtxz11aQu8//JYvtmjfjrEFuV9QVgGqRxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wkg4aPfug+fkN2rV94H7/JHMonpVeNz61GcGP39Am291StkPu+ympXYiM2XHm0CBx /04OKomC4/BibQT3PdvVNVVug0KDlxWTk0hSNwfnikUWycumvgN/Rpgu6pdZ1ElBwt iIsPP6HjyqvwPtXu1PtMgxJ9enh3+tGbT7Hq9is8= Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] helo=why.lan) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1khZ5u-00DGcy-9N; Tue, 24 Nov 2020 14:14:58 +0000 From: Marc Zyngier To: LAK , linux-kernel Subject: [PATCH v2 6/6] genirq: Rename IRQ_HIDDEN to IRQ_IPI Date: Tue, 24 Nov 2020 14:14:49 +0000 Message-Id: <20201124141449.572446-7-maz@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201124141449.572446-1-maz@kernel.org> References: <20201124141449.572446-1-maz@kernel.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 62.31.163.78 X-SA-Exim-Rcpt-To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, will@kernel.org, catalin.marinas@arm.com, tglx@linutronix.de, Valentin.Schneider@arm.com, peterz@infradead.org, mark.rutland@arm.com, linux@arm.linux.org.uk, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201124_091501_438953_813A7C09 X-CRM114-Status: GOOD ( 18.80 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Android Kernel Team , Russell King , Peter Zijlstra , Catalin Marinas , Thomas Gleixner , Will Deacon , Valentin Schneider Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org IRQ_HIDDEN was probably the wrong name, so let's rename it to IRQ_IPI, which more accurately describe an IPI with special arch code handling. Signed-off-by: Marc Zyngier --- arch/arm/kernel/smp.c | 2 +- arch/arm64/kernel/smp.c | 2 +- include/linux/irq.h | 4 ++-- kernel/irq/debugfs.c | 2 +- kernel/irq/proc.c | 2 +- kernel/irq/settings.h | 8 ++++---- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index dc746f808400..7fc43f64a2d2 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -737,7 +737,7 @@ void __init set_smp_ipi_range(int ipi_base, int n) WARN_ON(err); ipi_desc[i] = irq_to_desc(ipi_base + i); - __irq_modify_status(ipi_base + i, 0, IRQ_HIDDEN, ~0); + __irq_modify_status(ipi_base + i, 0, IRQ_IPI, ~0); /* The recheduling IPI is special... */ if (i == IPI_RESCHEDULE) diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index 684f41a3ba58..048d0d1df88a 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -994,7 +994,7 @@ void __init set_smp_ipi_range(int ipi_base, int n) WARN_ON(err); ipi_desc[i] = irq_to_desc(ipi_base + i); - __irq_modify_status(ipi_base + i, 0, IRQ_HIDDEN, ~0); + __irq_modify_status(ipi_base + i, 0, IRQ_IPI, ~0); /* The recheduling IPI is special... */ if (i == IPI_RESCHEDULE) diff --git a/include/linux/irq.h b/include/linux/irq.h index 0e71227fd3ec..d61f5ecd6938 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -71,7 +71,7 @@ enum irqchip_irq_state; * it from the spurious interrupt detection * mechanism and from core side polling. * IRQ_DISABLE_UNLAZY - Disable lazy irq disable - * IRQ_HIDDEN - Don't show up in /proc/interrupts + * IRQ_IPI - Don't show up in /proc/interrupts * IRQ_RAW - Skip tick management and irqtime accounting */ enum { @@ -99,7 +99,7 @@ enum { IRQ_PER_CPU_DEVID = (1 << 17), IRQ_IS_POLLED = (1 << 18), IRQ_DISABLE_UNLAZY = (1 << 19), - IRQ_HIDDEN = (1 << 20), + IRQ_IPI = (1 << 20), IRQ_RAW = (1 << 21), }; diff --git a/kernel/irq/debugfs.c b/kernel/irq/debugfs.c index f53475d88072..8e128253cf0e 100644 --- a/kernel/irq/debugfs.c +++ b/kernel/irq/debugfs.c @@ -139,7 +139,7 @@ static const struct irq_bit_descr irqdesc_states[] = { BIT_MASK_DESCR(_IRQ_PER_CPU_DEVID), BIT_MASK_DESCR(_IRQ_IS_POLLED), BIT_MASK_DESCR(_IRQ_DISABLE_UNLAZY), - BIT_MASK_DESCR(_IRQ_HIDDEN), + BIT_MASK_DESCR(_IRQ_IPI), BIT_MASK_DESCR(_IRQ_RAW), }; diff --git a/kernel/irq/proc.c b/kernel/irq/proc.c index 72513ed2a5fc..19114dafb5db 100644 --- a/kernel/irq/proc.c +++ b/kernel/irq/proc.c @@ -485,7 +485,7 @@ int show_interrupts(struct seq_file *p, void *v) rcu_read_lock(); desc = irq_to_desc(i); - if (!desc || irq_settings_is_hidden(desc)) + if (!desc || irq_settings_is_ipi(desc)) goto outsparse; if (desc->kstat_irqs) diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h index 0033d459fdac..46e5c2802388 100644 --- a/kernel/irq/settings.h +++ b/kernel/irq/settings.h @@ -17,7 +17,7 @@ enum { _IRQ_PER_CPU_DEVID = IRQ_PER_CPU_DEVID, _IRQ_IS_POLLED = IRQ_IS_POLLED, _IRQ_DISABLE_UNLAZY = IRQ_DISABLE_UNLAZY, - _IRQ_HIDDEN = IRQ_HIDDEN, + _IRQ_IPI = IRQ_IPI, _IRQ_RAW = IRQ_RAW, _IRQF_MODIFY_MASK = IRQF_MODIFY_MASK, }; @@ -33,7 +33,7 @@ enum { #define IRQ_PER_CPU_DEVID GOT_YOU_MORON #define IRQ_IS_POLLED GOT_YOU_MORON #define IRQ_DISABLE_UNLAZY GOT_YOU_MORON -#define IRQ_HIDDEN GOT_YOU_MORON +#define IRQ_IPI GOT_YOU_MORON #define IRQ_RAW GOT_YOU_MORON #undef IRQF_MODIFY_MASK #define IRQF_MODIFY_MASK GOT_YOU_MORON @@ -178,9 +178,9 @@ static inline void irq_settings_clr_disable_unlazy(struct irq_desc *desc) desc->status_use_accessors &= ~_IRQ_DISABLE_UNLAZY; } -static inline bool irq_settings_is_hidden(struct irq_desc *desc) +static inline bool irq_settings_is_ipi(struct irq_desc *desc) { - return desc->status_use_accessors & _IRQ_HIDDEN; + return desc->status_use_accessors & _IRQ_IPI; } static inline bool irq_settings_is_raw(struct irq_desc *desc)