Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3792340ybz; Mon, 20 Apr 2020 09:31:50 -0700 (PDT) X-Google-Smtp-Source: APiQypIDiIk13eFz0rKpUR7Xmks65s7wPsoXxPMsHQ1WOLnMrVtn6zwPuIYcER5ZphEYkI9EVk9j X-Received: by 2002:a05:6402:6d7:: with SMTP id n23mr14068606edy.21.1587400310010; Mon, 20 Apr 2020 09:31:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587400310; cv=none; d=google.com; s=arc-20160816; b=vhOwkq5lSZmuN/vRDB/qqB8PYZ3O9pAN13Qvc8PWDT6D3uyWLlyy4Var8hZSxDSEYE S9GX3t/T1cVKDfkCpSx3xpIiaRREZ/gv4g6jxgYrmYCIIXBwflTdt27IdUAhCtcxzRGG eDyL8aqBEKthUw6mj6XMajnkXymYgL4+v+NNNLeXUay0oFhJs8NU7jy6uJ7rboEDWwP+ PhvdXzTFGMAFn+eYUa6I1yatOW7NHa93wCb3dUd55MxRIUZsJ1JWvM8eK1ZnlyOaaHBF d6/l2J03oLEefPBMrCBlvk+cBD22pLN0zO4N92DDb6NfzYjDnzq0CKSnxLjD6cUCHyc0 rojg== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=mISuMHhl9Le+pk/y2SKvydIH6OAfv+dK0eomErJ1YAs=; b=KHPKbSCB3l4B3FiCsWnDZpY/9rlmZDYAGfS5vDntZ/5vjFKtYbi1B268ZbQ0ij6Uty QbtaLkVFlDtDkaRQJ0sLR97Iw6NfQs924ysEmq7tNB5XYNiGC2XbgXSejzc5658S8oqn rEinbzWErSr2Rrer10TfCE+IZY7rhKtuJU0vY7e4VuRVg8q6HDDqlsaQBpellqSqOGR0 Yq+bO1mydzJE5NXaWVG38Py35PzLNMqCiDqwRatH1Hg9TqiyQPZ314RHzguxlxzeyb1d G842IGCYp+Yecq9cxX8XCviOAnmEAY9p63UfkMLNdKGDPn1TuNUHUEn6ErteB2G8QM46 HCgQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HjhzUJtC; 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 s8si856225edj.463.2020.04.20.09.31.26; Mon, 20 Apr 2020 09:31:49 -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; dkim=pass header.i=@kernel.org header.s=default header.b=HjhzUJtC; 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 S1727014AbgDTMri (ORCPT + 99 others); Mon, 20 Apr 2020 08:47:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:43714 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728192AbgDTMrg (ORCPT ); Mon, 20 Apr 2020 08:47:36 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 27081206DD; Mon, 20 Apr 2020 12:47:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587386855; bh=2Ie6yKzF7v/mul/AuyrteBRsfgDx4BWHEpn8CwEjUOA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HjhzUJtCALfRhW4fq7ojPoMDN5KFPJDvzMsOAQgDMBBHD5w33IcMhRvjeqvx7JsE8 B87rscNuH2pmvCo+1VIEM5t/8JRoLt/eZEo3A/PwFUX9E/4IzbkBy49zj+EC/WzLDC y3TwpO014l4OjNdkmrqlxw1pQ3W/lfNwzatuWfh8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Grygorii Strashko , Marc Zyngier , Lokesh Vutla Subject: [PATCH 5.4 55/60] irqchip/ti-sci-inta: Fix processing of masked irqs Date: Mon, 20 Apr 2020 14:39:33 +0200 Message-Id: <20200420121515.114222770@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200420121500.490651540@linuxfoundation.org> References: <20200420121500.490651540@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Grygorii Strashko commit 3688b0db5c331f4ec3fa5eb9f670a4b04f530700 upstream. 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 Signed-off-by: Greg Kroah-Hartman --- drivers/irqchip/irq-ti-sci-inta.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- 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(stru 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);