From nobody Mon Apr 20 09:53:39 2026 Received: from mail-pg1-f182.google.com (mail-pg1-f182.google.com [209.85.215.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC33F17A2EA for ; Thu, 24 Apr 2025 18:35:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519761; cv=none; b=ARzQrmZt61IKeK6/LF8YJs66YQT6KHLNHjq1pStc0vq1Bx8SbeA77GNXX1Re1UtAW3Z9nm5kqaS748EvebqN6ZTMDmb98kYOUUJyz5B9R3/rUGTFaQHtwQcuC7OSM3TJcHXZZ/j0C0kJQzbu5YWOCmhRQVNgywCLqBywXV1OABU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519761; c=relaxed/simple; bh=tSGH2p1izsSzRGjyaTk9F2yB01tgjf//IQcyliOLsVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=chjXzMdENZYpjzyleR4ecuundDavE9nNfmKrZyu/ybMmSQmwcDkiM1XI21aS0QGs5QFCME+ohclkMSmKhnnACFWn7Y9Ue4DQNKBn9f2KMlKrRiL9iQft84nDz/lQacl4WJ0csaX/48+iqshclPzThYV2B6XAcjR26jSdwfmvlJM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BUpGbwB0; arc=none smtp.client-ip=209.85.215.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BUpGbwB0" Received: by mail-pg1-f182.google.com with SMTP id 41be03b00d2f7-7fd35b301bdso1733438a12.2 for ; Thu, 24 Apr 2025 11:35:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745519759; x=1746124559; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=fDQ63XmeOhBW2hD0J5kGHPrC33sSQHadrxfLLtnklr0=; b=BUpGbwB0ouFOo124bO+dXDlTFTt4NBdUBJcr3NFJRVHmjO4IHgMlcYHD98hOXvRvcW xwdInp3bnD75G4DQbAS+Fihrbc8q+0rKBiCHL8mGkNXOhCKhEUPZ2+7N3alh73VnnTmh /L9hScausx2v/m14c8qkMsVBEs+tR0laBp/OY/stcnQ1KJaIW/itrW8WyeZ9QOKdSNZp 63XN3IIinOrE3/8v9uxJonfK6OX/U1B5mIf7sQShVU4+zAHaSGEiMxlvjnE3eoo9hYOf WxP3Uh5xYot4KSV6CPUbObdJhqqggfqkoXD6tIEkWGfuVKrA+kvnHfPvqw7dtFUTO6ju 8qng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745519759; x=1746124559; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fDQ63XmeOhBW2hD0J5kGHPrC33sSQHadrxfLLtnklr0=; b=FQsmNIo0cbsqkGcIqVXPQXLCW55TlsAOZJT4Soux6S0aZbRY2PpmMIAEi568UNoGro bNNoXhVVTziNcbQ9EhscyYzgFFbDEALjutQYrCId/mdHvHeVYb+vvSwU6hu31Okr78bs 2vOtF8uKUn/CcV8nc5hLEW8e457IhCFhDZPRjcn+BqdsIVvtgfqVtZ9CdSN9IjepG7dY 16FPRl3JrbMhPidE1JNI0KhGM0aoPIudjhGqCMb09HYSDZElh7TjZqx9OgnlF4Okhby3 VKyNzYykyUxA9ECZtTKrHDrIZA/yzxst6goSdIDdIU7otgxGlgJOMLbu4XZuWX7aGlFm JetA== X-Gm-Message-State: AOJu0YwOQsOT5hxvxnSA6q+yDoq3NYfsU+faUF7eOJt8YyFbffG/t4Ts /KKruFNu21TFkhtfvZNOazLaVjyppayBpssKVhyhRdXgNExnvmi1 X-Gm-Gg: ASbGncsWkMjuFf1DcmcVl2nIVhk9CJooLyd+/8dG6ApiLdP9Y5YSTYsNjTLlvmMtZ46 WhLzYC3fbTip+L4LfdwwSQCMq8Mdt14G55JKSCfM446/OFRHDbXbt5gGW/18Sioq2TSll0IsErg 2NvX7KYInS3xlJNR3e7zt7d7LcghxgOuiSYZAbL8nIWkIJURvnCh0yY6tOI5ZKkEnePuQz2JNcj GtJj9LdGjNxv/SIP7SPXqQ9h96FbDAm0JAU3lOFp0QsI3gq8wwDVWGY7ahvOS2P/tGr6kYVaKMU 5yOOOufMznjKvjq62Wd1RAkJcd7eHntJJq1KiQJW0V9Rx5XRqh4e X-Google-Smtp-Source: AGHT+IHqbGl3wWMgKMlmkpO3aAqia2AmQFa51dP1SBJA6i6zMBE2cj8gi6+YiNddbtygRemvXRa73Q== X-Received: by 2002:a17:90a:d006:b0:2ff:5ed8:83d1 with SMTP id 98e67ed59e1d1-309f555444amr889337a91.19.1745519759038; Thu, 24 Apr 2025 11:35:59 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef0b9df8sm1744660a91.35.2025.04.24.11.35.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 11:35:57 -0700 (PDT) From: Alexey Charkov Date: Thu, 24 Apr 2025 22:35:42 +0400 Subject: [PATCH 1/5] irqchip: vt8500: Split up ack/mask functions Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-vt8500-intc-updates-v1-1-4ab7397155b3@gmail.com> References: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> In-Reply-To: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> To: Thomas Gleixner , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Charkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745519768; l=2522; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=tSGH2p1izsSzRGjyaTk9F2yB01tgjf//IQcyliOLsVk=; b=j+S/3SxqUxx37jAiC0EshP0ayQNjwapgRbZyRm7sa+cleuMq8KQnMaIYOXEhj/xWPQ3KTGXJz oAig4ge8TpHDrfBhQtp3jRK2NDuBnwyAPWOKpax/mT0WqBUKfpoflGz X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=ltKbQzKLTJPiDgPtcHxdo+dzFthCCMtC3V9qf7+0rkc= Original vt8500_irq_mask function really did the ack for edge triggered interrupts and the mask for level triggered interrupts. Edge triggered interrupts never really got masked as a result, and there was unnecessary reading of the status register before the ack even though it's write-one-to-clear. Split it up into a proper standalone vt8500_irq_ack and an unconditional vt8500_irq_mask. No Fixes tag added, as it has survived this way for 15 years and nobody complained, so apparently nothing really used edge triggered interrupts anyway. Signed-off-by: Alexey Charkov --- drivers/irqchip/irq-vt8500.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c index e17dd3a8c2d5a488fedfdea55de842177c314baa..d0580f6577c88ffd7e374d64041= 8d1fc23db623e 100644 --- a/drivers/irqchip/irq-vt8500.c +++ b/drivers/irqchip/irq-vt8500.c @@ -67,25 +67,25 @@ struct vt8500_irq_data { static struct vt8500_irq_data intc[VT8500_INTC_MAX]; static u32 active_cnt =3D 0; =20 -static void vt8500_irq_mask(struct irq_data *d) +static void vt8500_irq_ack(struct irq_data *d) { struct vt8500_irq_data *priv =3D d->domain->host_data; void __iomem *base =3D priv->base; void __iomem *stat_reg =3D base + VT8500_ICIS + (d->hwirq < 32 ? 0 : 4); - u8 edge, dctr; - u32 status; - - edge =3D readb(base + VT8500_ICDC + d->hwirq) & VT8500_EDGE; - if (edge) { - status =3D readl(stat_reg); - - status |=3D (1 << (d->hwirq & 0x1f)); - writel(status, stat_reg); - } else { - dctr =3D readb(base + VT8500_ICDC + d->hwirq); - dctr &=3D ~VT8500_INT_ENABLE; - writeb(dctr, base + VT8500_ICDC + d->hwirq); - } + u32 status =3D (1 << (d->hwirq & 0x1f)); + + writel(status, stat_reg); +} + +static void vt8500_irq_mask(struct irq_data *d) +{ + struct vt8500_irq_data *priv =3D d->domain->host_data; + void __iomem *base =3D priv->base; + u8 dctr; + + dctr =3D readb(base + VT8500_ICDC + d->hwirq); + dctr &=3D ~VT8500_INT_ENABLE; + writeb(dctr, base + VT8500_ICDC + d->hwirq); } =20 static void vt8500_irq_unmask(struct irq_data *d) @@ -131,7 +131,7 @@ static int vt8500_irq_set_type(struct irq_data *d, unsi= gned int flow_type) =20 static struct irq_chip vt8500_irq_chip =3D { .name =3D "vt8500", - .irq_ack =3D vt8500_irq_mask, + .irq_ack =3D vt8500_irq_ack, .irq_mask =3D vt8500_irq_mask, .irq_unmask =3D vt8500_irq_unmask, .irq_set_type =3D vt8500_irq_set_type, --=20 2.49.0 From nobody Mon Apr 20 09:53:39 2026 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3241417A2EA for ; Thu, 24 Apr 2025 18:36:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519766; cv=none; b=HEVFbXbSticFkkj1L74rSBnvqzWDNzcScEwe1CcEoxAJEtk6FKLzN3deMZxHAt1BupLn1ImBIOaC634eJwAnuYikenlu2lZTGOfZq7wWDjYiWEWw5WHcQ9tcPqvQxirhXU6wQUU0chzM3uskcVv146mW5XKEZMMAhp5MeysdOz4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519766; c=relaxed/simple; bh=5NC/31HeV/bFV7gPszc2SfNMbyljqfXDlZ++AHm2h2E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AOGAN5sLCykNF+ct1vEf4Q58mj/8QN5UhlSLsctbTMbsznRgpFW+ODz3hPxksazrBGt5Xh0O9mOkCbR0ipGnKK3J6q7yLW/OrBi/MfissXFif6c6j+8CdJWxV6HwRtiDnDdHcxYZDZljWv4GUJhS8qk6rB5mBJL0oYMTgxJYnZo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BUHxgDqF; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BUHxgDqF" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-b07d607dc83so1194084a12.1 for ; Thu, 24 Apr 2025 11:36:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745519764; x=1746124564; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Jo+MK/ePKofkxSXm+5enVAsUVT3cb/LUo2cfbFkW5So=; b=BUHxgDqFmDt+10L419rtHDEvjDQfqDYxsrGkiVY6w1HBCzA+gT7QcTkZiXDBgJlGpj GFv8B/4SwNeXL5TLfy/nFLx3+Qqp6DMMwEqz/kavzbxsIVjj2OuZzNxKHAFvOukvnK48 Qwoj4SiO8aXNVP0pix+e2uIArJJvPZxeVQg8RYwyQUuzpZblOnD5XopCLBtnYInckSeG uyBWaOBJEgUMZWn+QbiNUyXeENPg7kU052pUGi/RgzbTCTbEk+4hK7gbOZnrdLNpezjH F8y2zLUOls15US50t7BC1fvBNM/VCFz/IaS3YsbSX1Yn321ZqqW9fbu7f0vD5rR0PPAV kgwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745519764; x=1746124564; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Jo+MK/ePKofkxSXm+5enVAsUVT3cb/LUo2cfbFkW5So=; b=lt0SAsUIHvHFSuicMt3QfEhb9SkAkc1qZeB9njVCyRp5ZxNehTqrU5425UcM5yYB/U r8S3BxvhvrNYSWke/LjiHqkEEcmmCS8LI0pKR2z7PvaUmyswsNYtCzAW3i3JdLiBrDNU DiFVmRN41kvKknhXuYrfsGAimg74cX3w8NWHyGwMkRv61us2LQvyUQkzvgJxIbpw6pLU XdUNaMmplUmywS7UohUxZ4Etq2piBJPo1lnW8Mya/rDEbf8F7WACi0adJXJe/MLef0TX aJwCVZ6q1gxRUaeND8t+GNzcm4+OXTeEiSmeuNo8tKjvfFDOc2nfjmIiqlRYqWUwOwr5 0jVg== X-Gm-Message-State: AOJu0Yz2lbzIWhf5OdbjxJNxOysZQVExJvJhuHXXM2FoqV7sH3e/5INe sFuUalZtjY4yge9K9qyCKANWTGJP3df+AgIpYXY8KWKnztD2FSEZQZDhy/zq9qs= X-Gm-Gg: ASbGncuOLpQZDZ1q/2Q5THx0/uNRzbM32+A+rFVpgZFeeI971aNmy+gNPkkaJk2cB5z qotNrMzIw9qqs9ur2ClaUIQZWtnHqlC+Cgu5TiXPgIyUqhXgYNC6p5gHxvlzlzttmE46rbObY4K dTWGZmvSDr3gyzqgxOSvbFSTK1uJ0RbuOj2HTFaXFjWCkAbMxUX5GIL+1vdi1qUbqJuGjeom9gs U8ns3r2+xfpimhzTVHcmKK4+xIq/q8xtI0OBWwDPxMm5G057S5+GPUwdCmOCj9ZqTL0dMhgSdoH hSwbbJmvLzFlgXNv6jPJ51xMZ/5HU32izuTbp/L9daoHGgRDJiPdLbjqcl0L+Kk= X-Google-Smtp-Source: AGHT+IGCSXn9IY6DXLjgv7TaEaRMForSpf5piyeU0bRjjr8ZKnekj7GpjXcUSx9E35YhE6n9xka1lw== X-Received: by 2002:a17:90b:51c7:b0:2f9:c144:9d13 with SMTP id 98e67ed59e1d1-309f56b5079mr982684a91.24.1745519764364; Thu, 24 Apr 2025 11:36:04 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef0b9df8sm1744660a91.35.2025.04.24.11.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 11:36:03 -0700 (PDT) From: Alexey Charkov Date: Thu, 24 Apr 2025 22:35:43 +0400 Subject: [PATCH 2/5] irqchip: vt8500: Drop redundant copy of the device node pointer Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-vt8500-intc-updates-v1-2-4ab7397155b3@gmail.com> References: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> In-Reply-To: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> To: Thomas Gleixner , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Charkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745519768; l=1647; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=5NC/31HeV/bFV7gPszc2SfNMbyljqfXDlZ++AHm2h2E=; b=KLGt7ovQtPKKPs+n2tdAi90cNKFX2aFELZydig0i1+axAIZqPnlWa8YajigkPInouyOgxQr5I ZSDurVYZrEVB2wrj7T47o8y8Z4ZWfgawNj4g915UIT0Bga4Dlb2dIQi X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=ltKbQzKLTJPiDgPtcHxdo+dzFthCCMtC3V9qf7+0rkc= Inside vt8500_irq_init, np is the same as node. Drop it. Signed-off-by: Alexey Charkov --- drivers/irqchip/irq-vt8500.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c index d0580f6577c88ffd7e374d640418d1fc23db623e..6d46e1a0fda953d76679ad23186= 74fdf0a977f0b 100644 --- a/drivers/irqchip/irq-vt8500.c +++ b/drivers/irqchip/irq-vt8500.c @@ -191,7 +191,6 @@ static int __init vt8500_irq_init(struct device_node *n= ode, struct device_node *parent) { int irq, i; - struct device_node *np =3D node; =20 if (active_cnt =3D=3D VT8500_INTC_MAX) { pr_err("%s: Interrupt controllers > VT8500_INTC_MAX\n", @@ -199,7 +198,7 @@ static int __init vt8500_irq_init(struct device_node *n= ode, goto out; } =20 - intc[active_cnt].base =3D of_iomap(np, 0); + intc[active_cnt].base =3D of_iomap(node, 0); intc[active_cnt].domain =3D irq_domain_add_linear(node, 64, &vt8500_irq_domain_ops, &intc[active_cnt]); =20 @@ -222,16 +221,16 @@ static int __init vt8500_irq_init(struct device_node = *node, active_cnt++; =20 /* check if this is a slaved controller */ - if (of_irq_count(np) !=3D 0) { + if (of_irq_count(node) !=3D 0) { /* check that we have the correct number of interrupts */ - if (of_irq_count(np) !=3D 8) { + if (of_irq_count(node) !=3D 8) { pr_err("%s: Incorrect IRQ map for slaved controller\n", __func__); return -EINVAL; } =20 for (i =3D 0; i < 8; i++) { - irq =3D irq_of_parse_and_map(np, i); + irq =3D irq_of_parse_and_map(node, i); enable_irq(irq); } =20 --=20 2.49.0 From nobody Mon Apr 20 09:53:39 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E990128F92A for ; Thu, 24 Apr 2025 18:36:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519772; cv=none; b=cjsRMcUY8WMCJ8CIcGjH10sdBPX4SPYw0sf0UaCTRg2EQ/msnHWqXomJXaMswth0kSn57e3zjMkuTjtvgfBbIjTfkhpVf2UjyDipQPsI48t/DJEpDkh6cfrUUJeCJKoDP+Ttbe+Nh8XmpDh0gSIbgbgSrVh+V7Yui9EPBbHY+38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519772; c=relaxed/simple; bh=PJOB22Kv3PJwwTTW6D5ax3TpHEhXSzaZpTr6rXL+klk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RpsYL0u4pNDzMhosVftzbtQIqg+B0EIThEiuYKnwnDBybZfNTT6jBuXSrB222I41NFTKYKx9yQYW64QY3OZV6JQ/ZkY5uC2af+LdZI1F05Aoyx/VRKEK7+HhMM+VZluSnxgGWoCI/8prElDcbMqO9bOkfcU/mmSYPKZQOZ/TMh0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fq/K59FK; arc=none smtp.client-ip=209.85.214.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fq/K59FK" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-225477548e1so16330625ad.0 for ; Thu, 24 Apr 2025 11:36:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745519770; x=1746124570; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rWBrjH6js2nFce+bLoPB/th2NWEOtvdRjUhQW1smgG0=; b=fq/K59FKIu6BDdcCXACme86ytZqKi6EUAeLPZXaGRTwBPau/bm+aMB1q8OaQ1Bzuiy PDhl/GvOZDzbxUrle0ULPGTkmJBdJTISuoPre4tVxVHY8V+upfVUwjbzF35fqS9Um3Sk Kucpp/NfR4uDTqYmg3o4HNVQQkscoLlFkcJwf9ytDgXUcG+1JsGTuaPUaImxE7YQuYnu aILbEp3Fu2vbSEIgQuvzj+I9/CHL1+ffNiWY0d50ejWGa7teuEimCmNtNuZ2c3bAn8df 4p6PBSF7kWuSHhFGctAZ56qP0WfRf9kBKlt5VWNFi7Lx+f6Rvrj1OEx+lIw0NeronVtu xL8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745519770; x=1746124570; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rWBrjH6js2nFce+bLoPB/th2NWEOtvdRjUhQW1smgG0=; b=BjLcqRfuYc0CTdhkhXFl99fVoU27/leeESFfgdjb67wQAVXrFFrdMWm6v3mDJm9PzM qaJHAd/nP0oVwsAF3/KwBhEMsy+3idswGjFo54Z32cc79mvOGtIjW3z9/UBuWUHXA4m6 fulYLTIQAwQc8I/V6HfhKcMyMlewyMYyZlGPwpPg9hHKFFhDeoK9qFcuG0CHMNLN7gZb Ko9KrhwXn9/4dytad73Wf1M3CMvsbmd4a2/FdJE05gZWUeEAYwG8YL6tykmHWNEjj7L5 uW8jUu/UL68Lsdezq97L4vfRTlYci30Mcr556aLLxDISRh30mJ9/Ea9Vevw5CkUFAAq6 rnjQ== X-Gm-Message-State: AOJu0Yy/+sDdXhO22ZvwM5NDEYYeWOnMDj3xpwtGfFUAQFgNgfwfQz6n tww2dutDMD8ZbD8rD2cYWRTSds+IbE7ua5G3mSi7/EQ3DDrcCgAY X-Gm-Gg: ASbGncuCVxQi44dGZOhCyCvG7fizbOOYlPwl0NMxLEsipdvw+ezHioBMcY69wGLtcNA 9XJ55zd3UwuWkH7MEL0vC+S7cAup5V/L3kpah+1tW2vTBJoYRtIvjGezgQm9CDrDaaQEDHt+HOG /MTB8SBG+vlbx7J5g6Nk3o6kmvwCOkSXW25YZ1jl8D+M2FVsdXstSQa+2zdi+FNtdxOfy3Fn2r9 CdRaOcAQ0WjRNwt8SOgBTBjaQdSVdEBYW/DktQcB7IFIC6vvZUOvLNRT+jrC6pP7LZE5w5IyIAU expDCT6rMcHFQA6AX4Aau/RB0EWiSqRxJ/y6py+1TrW8wQhbde3e X-Google-Smtp-Source: AGHT+IHqLH2t4islHCN7Xsxvq/NEq6ccj520erbcioNpl3nA4bpgChYKH6CToUgPC/7beqqrzgGCyg== X-Received: by 2002:a17:902:ec81:b0:223:fabd:4f99 with SMTP id d9443c01a7336-22dbd43fc8emr7760115ad.5.1745519770146; Thu, 24 Apr 2025 11:36:10 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef0b9df8sm1744660a91.35.2025.04.24.11.36.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 11:36:08 -0700 (PDT) From: Alexey Charkov Date: Thu, 24 Apr 2025 22:35:44 +0400 Subject: [PATCH 3/5] irqchip: vt8500: Don't require 8 interrupts from a chained controller Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-vt8500-intc-updates-v1-3-4ab7397155b3@gmail.com> References: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> In-Reply-To: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> To: Thomas Gleixner , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Charkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745519768; l=1330; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=PJOB22Kv3PJwwTTW6D5ax3TpHEhXSzaZpTr6rXL+klk=; b=Glbq3otvptbFSsdcQRjXjts5iEYe4uLGA6irB9favgR/xaAVY7e0Cm+voNcmZtDw3B2tcydc8 RUPsx0DVE4IAre19Fw2E5tie81ktqVAIrYohjUOogGNvhu5CN2C0TNC X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=ltKbQzKLTJPiDgPtcHxdo+dzFthCCMtC3V9qf7+0rkc= VT8500 chained controller can route its interrupts to either or all of its 8 interrupt outputs. Current code actually routes all of them to the first output, so there is no need to create mappings for all eight. Drop redundant checks, and only map as many chained controller interrupts as are defined in the device tree. Signed-off-by: Alexey Charkov --- drivers/irqchip/irq-vt8500.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c index 6d46e1a0fda953d76679ad2318674fdf0a977f0b..cf24a88f52d1b90f033d429288c= 88398439b92d1 100644 --- a/drivers/irqchip/irq-vt8500.c +++ b/drivers/irqchip/irq-vt8500.c @@ -220,16 +220,9 @@ static int __init vt8500_irq_init(struct device_node *= node, =20 active_cnt++; =20 - /* check if this is a slaved controller */ + /* check if this is a chained controller */ if (of_irq_count(node) !=3D 0) { - /* check that we have the correct number of interrupts */ - if (of_irq_count(node) !=3D 8) { - pr_err("%s: Incorrect IRQ map for slaved controller\n", - __func__); - return -EINVAL; - } - - for (i =3D 0; i < 8; i++) { + for (i =3D 0; i < of_irq_count(node); i++) { irq =3D irq_of_parse_and_map(node, i); enable_irq(irq); } --=20 2.49.0 From nobody Mon Apr 20 09:53:39 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4F84C28EA4A for ; Thu, 24 Apr 2025 18:36:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519777; cv=none; b=PIh9F7v3gOqYwZhYq6ae9fSS/iSgF1bd3wh0jkhPl75WnwBL9VT6OHQt9Ho+nwZCcCZBt32QYwHr2Fy5iMlQgCaqJKk3XE1B+kw4GtsnzNfy/OR8UoSmx7PioYx9Sp46bK8s+JY0NiCQkPeMa8a3HvkK7KoWub4HPNLfre16uZ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519777; c=relaxed/simple; bh=GOA+u85tduWxVv4ECfMp+FDaLJ7imscZ/xPP/oEH2eQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kotB8k6FYjUlbv3lzffcLWo7kGIxD4O4cicNo6BUPOlwf3WRB7+thU1dHesVMznXDCLqRfwHsgrysLg+jI6K+70+ttHKeGFVElfcyFI1yAdkyq+d/kb17qqdj7nzOJ44ACfsD400/yjC9Ke+b6uKnB+roLR0Ot1x7d8Y3W0tsu0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CPN80D90; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CPN80D90" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-308702998fbso1298330a91.1 for ; Thu, 24 Apr 2025 11:36:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745519775; x=1746124575; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Scd2MmOA1DSZdiJ7FCQoAOF/Qr/pLl/Af07JEkoCX94=; b=CPN80D900ENxWn06n27UEutbG1iqNAEQUF2g5KISwoXAGjCpeVtkge/AYuAx9+9Cc4 FmFBh3RmEVhZUugixPgOB+hl90jNrovgXnv97IcKC3yUbMcC+ha2698MOEYRQQzYVA7K Na0R8GmhYbBWGTG5Fd1E9YzXsFgp9ycbPDbJ0zpJ+lJXGiN9slEIWzrwU0N+7Ja1kZOz +V0VDkaS7X54/e3n1PZ040ei68pdw0kbUTExg42HVpHwHqYumY4zKaea+tygYUZNtQlp rbCeYRTB1MjXiwaRxrAvoe7KTo14um/IRhH52JmasoFQgRbSqLZzVukQp2Y36sYMJEzg PZEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745519775; x=1746124575; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Scd2MmOA1DSZdiJ7FCQoAOF/Qr/pLl/Af07JEkoCX94=; b=xK804UQx0VKtT1HZxhMTy3dFPy+IUW35bNcASY1vY/gD6Qt42L8n4ZK1vkdWx84+KO 88iZjnrC8OawPJ9DDRMmtgdGPWzj77lvQL6cwwEbLLT2GgYnoVWXEMtf8uBoUSfYIXln z1zWiEnWUKN/05yUlPZq1jMx6rKhzFpsTAcyHcCwHYggOKTQQbFF2aoX8XhoxfFsVRmm MecGNOEX6IGMjX98AITT1uRzXpfVNfaoQ260Pszn0YTmNGnfof0cSR7rzyh/AvCgoHox Bi1j1Si05zA4DiQ4gaNjXmXi5DQVFHsW/vB43SYMkRsKqUZewYi4oOsqDRuWMB0ZxKoH 2HAg== X-Gm-Message-State: AOJu0YzEXGX8itolwVV0hHEy8xyY8t7Tb6VpKG9tGgFRhNK+KFE6QULQ WLy1Yps6lSvU7J0kxHzWLm2mmEhGZRdoqRDDRmhi/cVdTMDqDDlP X-Gm-Gg: ASbGncuelkxXOmkvV47CpiFizpAxsv6iPXcrVERmYSWHOYnev9ohEREbiHMuGTSzRpy 3qStME2aCW1svDK1Blpr90rFZt8mQv78/0hTCTCkYxFVdneRwFRr/6fMUGCxDxfHzsXcrpHYIlI d1IemmiSBH4fDRlNvOQVKImc6+TJcod2f688nloupN7dlRX8BToi8aaw/DuiEHZ14Ca7Fyoqk4X aGQMPuBsr2ggC99YbJkpwEjIIYXvLyd9QCXuQVqsZQxcwjntGd+lqi3qbvbQg7z4FjVJ3qw0ICi XfRAxyffr6e2RuEVUaKHSCudVhRE9t+yuW7v5I5JKvAn8vUxY3KF X-Google-Smtp-Source: AGHT+IEEDtoVXgeW00/znJ03dj8QOc2rEKTzqVN9hbM25x/CWolg0jP+EcqxTj1n7m0VR4tpCdRWBQ== X-Received: by 2002:a17:90a:bf06:b0:2f9:d9fe:e72e with SMTP id 98e67ed59e1d1-309f554b8b4mr905191a91.16.1745519775450; Thu, 24 Apr 2025 11:36:15 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef0b9df8sm1744660a91.35.2025.04.24.11.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 11:36:14 -0700 (PDT) From: Alexey Charkov Date: Thu, 24 Apr 2025 22:35:45 +0400 Subject: [PATCH 4/5] irqchip: vt8500: Use a dedicated chained handler function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-vt8500-intc-updates-v1-4-4ab7397155b3@gmail.com> References: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> In-Reply-To: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> To: Thomas Gleixner , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Charkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745519768; l=3948; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=GOA+u85tduWxVv4ECfMp+FDaLJ7imscZ/xPP/oEH2eQ=; b=c1oXrgxD03TnBoaePI33Tc1myEsrAfQwBvAQZvufdR8bybKZOnqTxGMc2cJhH1vZdUthW0kAq soR6657v3wxCQQZxRDW1WBKZ5292wsw3YCeJheMinobjUNqT1K29lNy X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=ltKbQzKLTJPiDgPtcHxdo+dzFthCCMtC3V9qf7+0rkc= Current code for the chained interrupt controller maps its interrupts on the parent but doesn't register a separate chained handler, instead needlessly calling enable_irq on an unactivated parent interrupt, causing a boot time WARN_ON from the common code. The common handler meanwhile loops through all registered interrupt controllers in an arbitrary order and tries to handle active interrupts in each of them, which is fragile. Use common infrastructure for handling chained interrupts instead. Signed-off-by: Alexey Charkov --- drivers/irqchip/irq-vt8500.c | 60 ++++++++++++++++++++++++++++------------= ---- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c index cf24a88f52d1b90f033d429288c88398439b92d1..aea43c838430d2a541aa9b3127a= 215531abecad8 100644 --- a/drivers/irqchip/irq-vt8500.c +++ b/drivers/irqchip/irq-vt8500.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -66,6 +67,8 @@ struct vt8500_irq_data { /* Global variable for accessing io-mem addresses */ static struct vt8500_irq_data intc[VT8500_INTC_MAX]; static u32 active_cnt =3D 0; +/* Primary interrupt controller data */ +static struct vt8500_irq_data *primary_intc; =20 static void vt8500_irq_ack(struct irq_data *d) { @@ -163,28 +166,38 @@ static const struct irq_domain_ops vt8500_irq_domain_= ops =3D { .xlate =3D irq_domain_xlate_onecell, }; =20 +static inline void vt8500_handle_irq_common(struct vt8500_irq_data *intc) +{ + unsigned long irqnr =3D readl_relaxed(intc->base) & 0x3F; + unsigned long stat; + + /* + * Highest Priority register default =3D 63, so check that this + * is a real interrupt by checking the status register + */ + if (irqnr =3D=3D 63) { + stat =3D readl_relaxed(intc->base + VT8500_ICIS + 4); + if (!(stat & BIT(31))) + return; + } + + generic_handle_domain_irq(intc->domain, irqnr); +} + static void __exception_irq_entry vt8500_handle_irq(struct pt_regs *regs) { - u32 stat, i; - int irqnr; - void __iomem *base; - - /* Loop through each active controller */ - for (i=3D0; ihost_data; + + chained_irq_enter(chip, desc); + vt8500_handle_irq_common(intc); + chained_irq_exit(chip, desc); } =20 static int __init vt8500_irq_init(struct device_node *node, @@ -212,8 +225,6 @@ static int __init vt8500_irq_init(struct device_node *n= ode, goto out; } =20 - set_handle_irq(vt8500_handle_irq); - vt8500_init_irq_hw(intc[active_cnt].base); =20 pr_info("vt8500-irq: Added interrupt controller\n"); @@ -224,10 +235,15 @@ static int __init vt8500_irq_init(struct device_node = *node, if (of_irq_count(node) !=3D 0) { for (i =3D 0; i < of_irq_count(node); i++) { irq =3D irq_of_parse_and_map(node, i); - enable_irq(irq); + irq_set_chained_handler_and_data(irq, + vt8500_handle_irq_chained, + &intc[active_cnt]); } =20 pr_info("vt8500-irq: Enabled slave->parent interrupts\n"); + } else { + primary_intc =3D &intc[active_cnt]; + set_handle_irq(vt8500_handle_irq); } out: return 0; --=20 2.49.0 From nobody Mon Apr 20 09:53:39 2026 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 93C7728EA4A for ; Thu, 24 Apr 2025 18:36:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519783; cv=none; b=Nv+mjBAmle8ZfPP4wgOkt/zvxroARaCvr37jX0oDlZFV/x/bUtpPjRJYe0WQPCfUHAnZUV7bA527YYl3ReVerGOZWGyJQlrqwsPIDu4Nbg2HhTY3H8XdB0COoSXmDYDQw53ks9e0ej3W4flOjZDh3eEVcWtTH4GFxxcbI5mVjss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745519783; c=relaxed/simple; bh=ZvhDtpu1XnYczmFh42T13jRZysqmiKlyJitHmezAOec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DNMbV9cbSYrvX/aJdygtBP9OyNAWdJ2F4X+XUDBZgvisSEMhIopNoe2WKAILFVe8POfi5pYfsw3MG1M4/l8QOOWp+2nC4QqoRtoNAYQItJXE68XPV4Mih3LI1STu0XLAZqs6X7SbcV+W6Msa473ACxTckKFGo7OrHe56vcXHTdA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cT3jF2I4; arc=none smtp.client-ip=209.85.214.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cT3jF2I4" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-223fd89d036so18209835ad.1 for ; Thu, 24 Apr 2025 11:36:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745519781; x=1746124581; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=V7d2y3ul5N0Mf7A+x8KbqIBRsyxegjHYdT7Sjr9I/BQ=; b=cT3jF2I4SedIegVrGt9jCeA7HeQkWeqDxpNw67UxUwTRj4lYwKwtrF85yHDTf9xT5t 5WR6BqGLoUIpYobinQ9LCrvFX3thwgm0qram7zt2eJH7va38ovrDWaKyiOhw5jKVOOxx ptRAxQY9K7mGCzcj77nhmGY7BMh2qadC50ceaeb/RLnxawlTLU+DccjlTa2Y0v+htzKs U9OxBjO6yJv5jXM31QtqbNi7+4OgQIsVaJRtdGNP89pch+TwYtw+fifVR6tf2C07M/NV w1SzuH4vLpT0Tbwrc/xtT9+MarQQGPUVUixOHlsdr2y+tUcSZODOpWYx31vjUME8u2Be mzoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745519781; x=1746124581; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V7d2y3ul5N0Mf7A+x8KbqIBRsyxegjHYdT7Sjr9I/BQ=; b=Z2qpSZ+yTLerAPY6LxvYrDOaeR+ykovYW6lSn31H7EwWzbeI/bJM79ACeZIEzxDFys jJhi/GvhDkN5cPcJZx1aKNNlaplrDuOiRNU2ZBpMHJ9Wpg7WfI+cXTBOgHxu/6wUybuw NsOVc1jSXgniN7Mefr8OklvFDqJNOwKgqP9kQfnZV3OIqGsoFF/wWkNBWP5FcfOIatke W4JK9+6kfLSxFv8rWPMjuQ/KJI5O+rljNZRt9QE6aH9Kbyy36pc8FB0LHHDL4EfXjkbo 8zsoRAaE6QG84ad2aI9cdHQdqT0WoKgawtujgs9C2Tb6DioVKAuKuiKKdJ2DIT73ieo+ ETZA== X-Gm-Message-State: AOJu0Yz5ghVhTKiLlS5LgmmZOMg2sokTMuub/GcdQcVcOjwLuw9D5IR6 IKsyd39R+qeudwWAlEEcFuQppCN6daFA3vQTYQ9uSyC+TEAX/7AilCbno4cPfcU= X-Gm-Gg: ASbGncs+oBAVKYJWZz0gKJCVbDtjt3bzO5048bMjlLhZTRLvnE+DBpIpGPEPNPadoKl WJKYo/pstrTSpopLgSeblD+FmJX8C3lLTlB9fSv6sb6bXy+FR6QC4mxcPNCpxCD+UJQOY7InTZw fG5DL7dxj62F3F3ivAwjHetehwC1CtpviOjHF2+Ixh7HBD1ReOUlAYpjNIDscfR7zFs5zZlZwCC Lluhky1RY0OIBFGzMBT8IzDNoqEC9CEvNkoJoaaciWDVZmTTOtZUqEXWNsMZVkfa+G0xrWbzJSA RyGt5HYDXdAtlWMFUKNVgVK7qAlzaWhXvKfiBh6plLAWoQIKLeXW X-Google-Smtp-Source: AGHT+IEvTVhxG/HEpoGdmUvZL3DCkshSAemk2nnUG/eNuUy+xBFFooJCg81CWaxVrYyBfyYOjuULjA== X-Received: by 2002:a17:90b:5252:b0:305:2d27:7cb0 with SMTP id 98e67ed59e1d1-309f554f7b3mr796266a91.21.1745519780757; Thu, 24 Apr 2025 11:36:20 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-309ef0b9df8sm1744660a91.35.2025.04.24.11.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Apr 2025 11:36:20 -0700 (PDT) From: Alexey Charkov Date: Thu, 24 Apr 2025 22:35:46 +0400 Subject: [PATCH 5/5] irqchip: vt8500: Use fewer global variables and add error handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250424-vt8500-intc-updates-v1-5-4ab7397155b3@gmail.com> References: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> In-Reply-To: <20250424-vt8500-intc-updates-v1-0-4ab7397155b3@gmail.com> To: Thomas Gleixner , Krzysztof Kozlowski Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexey Charkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1745519768; l=3067; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=ZvhDtpu1XnYczmFh42T13jRZysqmiKlyJitHmezAOec=; b=bxYbJszU9Ih3oQcgQ22sUUyhzKZ5U10yKce/YCYZElGTjmrBbnI76TANVVuNwV0vHa5kjA9b1 7cWE9X3r1hGBvTgGKCrfwBkIuYZXGepvyYgpJCikl4fZqwKysm70/vL X-Developer-Key: i=alchark@gmail.com; a=ed25519; pk=ltKbQzKLTJPiDgPtcHxdo+dzFthCCMtC3V9qf7+0rkc= Controller private data doesn't really need to be in a global statically allocated array - kzalloc it per controller instead, keeping only one pointer to the primary controller global. While at that, also add proper error return statuses in the init path and respective cleanup of resources on errors. Signed-off-by: Alexey Charkov --- drivers/irqchip/irq-vt8500.c | 49 +++++++++++++++++++++++-----------------= ---- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/drivers/irqchip/irq-vt8500.c b/drivers/irqchip/irq-vt8500.c index aea43c838430d2a541aa9b3127a215531abecad8..0bf478c6541ede30719eb1e403d= 9cafe6474643a 100644 --- a/drivers/irqchip/irq-vt8500.c +++ b/drivers/irqchip/irq-vt8500.c @@ -64,9 +64,6 @@ struct vt8500_irq_data { struct irq_domain *domain; /* Domain for this controller */ }; =20 -/* Global variable for accessing io-mem addresses */ -static struct vt8500_irq_data intc[VT8500_INTC_MAX]; -static u32 active_cnt =3D 0; /* Primary interrupt controller data */ static struct vt8500_irq_data *primary_intc; =20 @@ -203,50 +200,56 @@ static void vt8500_handle_irq_chained(struct irq_desc= *desc) static int __init vt8500_irq_init(struct device_node *node, struct device_node *parent) { - int irq, i; + struct vt8500_irq_data *intc; + int irq, i, ret =3D 0; =20 - if (active_cnt =3D=3D VT8500_INTC_MAX) { - pr_err("%s: Interrupt controllers > VT8500_INTC_MAX\n", - __func__); - goto out; - } - - intc[active_cnt].base =3D of_iomap(node, 0); - intc[active_cnt].domain =3D irq_domain_add_linear(node, 64, - &vt8500_irq_domain_ops, &intc[active_cnt]); + intc =3D kzalloc(sizeof(*intc), GFP_KERNEL); + if (!intc) + return -ENOMEM; =20 - if (!intc[active_cnt].base) { + intc->base =3D of_iomap(node, 0); + if (!intc->base) { pr_err("%s: Unable to map IO memory\n", __func__); - goto out; + ret =3D -ENOMEM; + goto err_free; } =20 - if (!intc[active_cnt].domain) { + intc->domain =3D irq_domain_add_linear(node, + 64, + &vt8500_irq_domain_ops, + intc); + if (!intc->domain) { pr_err("%s: Unable to add irq domain!\n", __func__); - goto out; + ret =3D -ENOMEM; + goto err_unmap; } =20 - vt8500_init_irq_hw(intc[active_cnt].base); + vt8500_init_irq_hw(intc->base); =20 pr_info("vt8500-irq: Added interrupt controller\n"); =20 - active_cnt++; - /* check if this is a chained controller */ if (of_irq_count(node) !=3D 0) { for (i =3D 0; i < of_irq_count(node); i++) { irq =3D irq_of_parse_and_map(node, i); irq_set_chained_handler_and_data(irq, vt8500_handle_irq_chained, - &intc[active_cnt]); + intc); } =20 pr_info("vt8500-irq: Enabled slave->parent interrupts\n"); } else { - primary_intc =3D &intc[active_cnt]; + primary_intc =3D intc; set_handle_irq(vt8500_handle_irq); } -out: + return 0; + +err_unmap: + iounmap(intc->base); +err_free: + kfree(intc); + return ret; } =20 IRQCHIP_DECLARE(vt8500_irq, "via,vt8500-intc", vt8500_irq_init); --=20 2.49.0