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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 94CBFC3DA4A for ; Sun, 28 Jul 2024 00:49:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=WDO8xMnHN+a0OhXGEoPFm27PrGMqEqy5k/MuQ0w6/n8=; b=CAj8Z4qoYRrWzBkBiLQDNm2n2J EwKEyM5nobNpvTXsHAIOAPAxf90R5z+Ib98kZhrQMpHpcw2f58Y2n+0XszEkH/DJiFQt+HHqhdI+n mBMJMW98uMuFo7Jhhq8/mWhzUq/hrQFy41LkmHwTj1i7qwjtQvQgKohUcBgXlYXA0WhTLdjvGxqEO rbOSqxlgmYqQSlxj1pdACVuKIjyh2cdWYzpvIZUfoFyelnGFJJRP0/gYfKNismffY7WWFqT/ozoOA X7adJ6LaxLj+A+6cBEXMQgr7UL78ZtX55+gpYjU7dNS/nI3SCIYs+5kHSNxPGKhUb8AuwOy9Ny8ti s214fWBw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sXs5o-00000007Z69-0SwX; Sun, 28 Jul 2024 00:48:56 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sXs53-00000007Yr1-1Bgn for linux-arm-kernel@lists.infradead.org; Sun, 28 Jul 2024 00:48:12 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 9F51FCE0924; Sun, 28 Jul 2024 00:48:07 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 72785C4AF09; Sun, 28 Jul 2024 00:48:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1722127686; bh=lItotgKCa+r1uULXTz9TQ0z1LBqfvJJEZVGeuzFOkUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pgvxUSwjUnJSB7HWTCnL7HEV06MDe7Evu6nUz9BQgQWqi7/tMwoggH1YbyfzT/2xq 4Knazyedf+fvWhF6Vh1ikN89Hw34GDW9qvYpizyFP54RUjOloXwXJ9piyAKV/bSRu8 AniAN0NdN5okBN+7o/odG3/t70/EZuo6NJgo+D7mUxM+lK+7tXUnFpsMR0lZP8D6H7 TGAfpXqTB0WTvDQJ07H+4mfRUU6+X7WaJkYwdUUtY12SoYcxTbDGAQSn5v2w5qE8vf hF03K9Ha9605wvDUfZza2Dp3qrKCHLoCvIaQnRzHdr4oGf76ANn8KpT4PYf+CdXVtK JnmkvSIa+3oBQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: James Morse , Gavin Shan , Miguel Luis , Russell King , Jonathan Cameron , Marc Zyngier , Catalin Marinas , Sasha Levin , tglx@linutronix.de, linux-arm-kernel@lists.infradead.org Subject: [PATCH AUTOSEL 6.10 14/16] irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc() Date: Sat, 27 Jul 2024 20:47:31 -0400 Message-ID: <20240728004739.1698541-14-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240728004739.1698541-1-sashal@kernel.org> References: <20240728004739.1698541-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.10.2 Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240727_174809_950691_7D0B29D6 X-CRM114-Status: GOOD ( 14.96 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: James Morse [ Upstream commit fa2dabe57220e6af78ed7a2f7016bf250a618204 ] gic_acpi_match_gicc() is only called via gic_acpi_count_gicr_regions(). It should only count the number of enabled redistributors, but it also tries to sanity check the GICC entry, currently returning an error if the Enabled bit is set, but the gicr_base_address is zero. Adding support for the online-capable bit to the sanity check will complicate it, for no benefit. The existing check implicitly depends on gic_acpi_count_gicr_regions() previous failing to find any GICR regions (as it is valid to have gicr_base_address of zero if the redistributors are described via a GICR entry). Instead of complicating the check, remove it. Failures that happen at this point cause the irqchip not to register, meaning no irqs can be requested. The kernel grinds to a panic() pretty quickly. Without the check, MADT tables that exhibit this problem are still caught by gic_populate_rdist(), which helpfully also prints what went wrong: | CPU4: mpidr 100 has no re-distributor! Signed-off-by: James Morse Reviewed-by: Gavin Shan Tested-by: Miguel Luis Signed-off-by: Russell King (Oracle) Reviewed-by: Jonathan Cameron Signed-off-by: Jonathan Cameron Reviewed-by: Marc Zyngier Link: https://lore.kernel.org/r/20240529133446.28446-14-Jonathan.Cameron@huawei.com Signed-off-by: Catalin Marinas Signed-off-by: Sasha Levin --- drivers/irqchip/irq-gic-v3.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index 6fb276504bcc8..10af15f93d4d4 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c @@ -2415,19 +2415,10 @@ static int __init gic_acpi_match_gicc(union acpi_subtable_headers *header, * If GICC is enabled and has valid gicr base address, then it means * GICR base is presented via GICC */ - if (acpi_gicc_is_usable(gicc) && gicc->gicr_base_address) { + if (acpi_gicc_is_usable(gicc) && gicc->gicr_base_address) acpi_data.enabled_rdists++; - return 0; - } - /* - * It's perfectly valid firmware can pass disabled GICC entry, driver - * should not treat as errors, skip the entry instead of probe fail. - */ - if (!acpi_gicc_is_usable(gicc)) - return 0; - - return -ENODEV; + return 0; } static int __init gic_acpi_count_gicr_regions(void) -- 2.43.0