Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp383778ybz; Fri, 17 Apr 2020 02:58:12 -0700 (PDT) X-Google-Smtp-Source: APiQypKfFhlzAOXkklp7Iq5ZR/Edw6cAPDCApbIHzfS+mDweYYiWc0ktyPZIMxVp9Sal9uqdF6Gi X-Received: by 2002:a17:906:bcec:: with SMTP id op12mr2197429ejb.245.1587117491932; Fri, 17 Apr 2020 02:58:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587117491; cv=none; d=google.com; s=arc-20160816; b=x7mxdGdupU92/GmpSM9YR8T17GRZRORUcTJGo+yAe6Rb6z4e7+TD6zA//TQRrJQLWU cXYuakQbvNeuJibXAtorEgzPTJq4MzP7KRjJNVdMkO2nx6zortc//9HZ7KIJgQfTpIgL 38H6sIAUluPDbcrkqyQEAEW7/gr8e7nUzVhEoXT4JBhpyJ9vJprgXbhq3lXjbkmPQ1MI 06BzDFNJHXhlqEi8vVzhf0397weHEqPDV3s9UjO5R/0VqblgVkPdgo2ROX2Jnwe+hZVP Ek40/UeOFDb8IKiUoEqj/QJp8r/r65MWYjSz22W5ejg0wn5l5RhK19gLKUD/LdcOKOyw gAbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :robot-unsubscribe:robot-id:message-id:mime-version:references :in-reply-to:cc:subject:to:reply-to:from:date; bh=H9mYm2HqX3c8aK4N8y+eV2rA0QJQ9Llc5FviRYZNjLQ=; b=Iw9vwtg8ifqELa0+VZYaHKT1c7pLFjac/SP9qRUAJ9u5ykryqTbE5w8aCp7kkMpAcg Ei44nS3m/++1QVY+S5xUmko378A8HLIrvX0ghDobcPz/5Pa7Msa89+4ESYG7uh23WLXd QpNufjXJVU0SZ5OFoFXl91h+ttLxobjFAACw2S2iFCn3Eirk+imQ4BQUbKgqedPN4Flg 0WFPpn6I+Jl9iaE8ATlIeZUZ1h7z15XxtFkf7/jlqzajVlpMJwTNa6BbHopk1mFcZIQX 1S9MHCx40ePZ8yRaJivDoS2eI9hecZbV44/Q6zAsNvQD5nAxBEH7zkd3h4dF0HOqpfRd y7MA== 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 s7si13370923ejj.248.2020.04.17.02.57.48; Fri, 17 Apr 2020 02:58:11 -0700 (PDT) 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 S1728253AbgDQJ4w (ORCPT + 99 others); Fri, 17 Apr 2020 05:56:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727976AbgDQJ4t (ORCPT ); Fri, 17 Apr 2020 05:56:49 -0400 Received: from Galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0470CC061A0C; Fri, 17 Apr 2020 02:56:49 -0700 (PDT) Received: from [5.158.153.53] (helo=tip-bot2.lab.linutronix.de) by Galois.linutronix.de with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1jPNjp-0005er-Dm; Fri, 17 Apr 2020 11:56:45 +0200 Received: from [127.0.1.1] (localhost [IPv6:::1]) by tip-bot2.lab.linutronix.de (Postfix) with ESMTP id 12C621C0072; Fri, 17 Apr 2020 11:56:45 +0200 (CEST) Date: Fri, 17 Apr 2020 09:56:44 -0000 From: "tip-bot2 for Grygorii Strashko" Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: irq/urgent] irqchip/ti-sci-inta: Fix processing of masked irqs Cc: Grygorii Strashko , Marc Zyngier , Lokesh Vutla , stable@vger.kernel.org, x86 , LKML In-Reply-To: <20200408191532.31252-1-grygorii.strashko@ti.com> References: <20200408191532.31252-1-grygorii.strashko@ti.com> MIME-Version: 1.0 Message-ID: <158711740470.28353.5640568811566417444.tip-bot2@tip-bot2> X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1,SHORTCIRCUIT=-0.0001 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the irq/urgent branch of tip: Commit-ID: 3688b0db5c331f4ec3fa5eb9f670a4b04f530700 Gitweb: https://git.kernel.org/tip/3688b0db5c331f4ec3fa5eb9f670a4b04f530700 Author: Grygorii Strashko AuthorDate: Wed, 08 Apr 2020 22:15:32 +03:00 Committer: Marc Zyngier CommitterDate: Fri, 17 Apr 2020 08:59:28 +01:00 irqchip/ti-sci-inta: Fix processing of masked irqs The ti_sci_inta_irq_handler() does not take into account INTA IRQs state (masked/unmasked) as it uses INTA_STATUS_CLEAR_j register to get INTA IRQs status, which provides raw status value. This causes hard IRQ handlers to be called or threaded handlers to be scheduled many times even if corresponding INTA IRQ is masked. Above, first of all, affects the LEVEL interrupts processing and causes unexpected behavior up the system stack or crash. Fix it by using the Interrupt Masked Status INTA_STATUSM_j register which provides masked INTA IRQs status. Fixes: 9f1463b86c13 ("irqchip/ti-sci-inta: Add support for Interrupt Aggregator driver") Signed-off-by: Grygorii Strashko Signed-off-by: Marc Zyngier Reviewed-by: Lokesh Vutla Link: https://lore.kernel.org/r/20200408191532.31252-1-grygorii.strashko@ti.com Cc: stable@vger.kernel.org --- drivers/irqchip/irq-ti-sci-inta.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-ti-sci-inta.c b/drivers/irqchip/irq-ti-sci-inta.c index 8f6e6b0..7e3ebf6 100644 --- a/drivers/irqchip/irq-ti-sci-inta.c +++ b/drivers/irqchip/irq-ti-sci-inta.c @@ -37,6 +37,7 @@ #define VINT_ENABLE_SET_OFFSET 0x0 #define VINT_ENABLE_CLR_OFFSET 0x8 #define VINT_STATUS_OFFSET 0x18 +#define VINT_STATUS_MASKED_OFFSET 0x20 /** * struct ti_sci_inta_event_desc - Description of an event coming to @@ -116,7 +117,7 @@ static void ti_sci_inta_irq_handler(struct irq_desc *desc) chained_irq_enter(irq_desc_get_chip(desc), desc); val = readq_relaxed(inta->base + vint_desc->vint_id * 0x1000 + - VINT_STATUS_OFFSET); + VINT_STATUS_MASKED_OFFSET); for_each_set_bit(bit, &val, MAX_EVENTS_PER_VINT) { virq = irq_find_mapping(domain, vint_desc->events[bit].hwirq);