From nobody Tue Dec 16 15:26:57 2025 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (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 4260424E014 for ; Tue, 6 May 2025 12:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535598; cv=none; b=WqpSrXKUnejs5XRD+cUp7DX060PwkZ627hwaS2EEIPlptZN+hU/lGWQDHtR2CHxpfdVmJekL2/3EVb0flfFaRMjOx4zjBVLMzW7TsoiJZsgDO4CNsbAsd5Sq3/+zx+B2u/sqAFs0vAjazmbqbYgPDx+r7iMUOWiezzjxsoxnLbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535598; c=relaxed/simple; bh=tSGH2p1izsSzRGjyaTk9F2yB01tgjf//IQcyliOLsVk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l11Xwa4jx8gvlhykm+sqhhiX3x2TC0Svd/+lo+4FwCXNzMh+OYWVOxlcU3+Zc9VntdT+QV0M6QathSLcTnxhzwxLUkc3WNFb7nBJQrxVC1hhLkXx0dLz9JOWt+mTkJ57XuBXJ/wNyfZw4WdSSsBuUTIGSZxsWE7xPiLksXQ2GSc= 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=CiVIrrKm; arc=none smtp.client-ip=209.85.210.178 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="CiVIrrKm" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-7369ce5d323so5001490b3a.1 for ; Tue, 06 May 2025 05:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746535596; x=1747140396; 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=CiVIrrKmo9YcgNzVr0TUoIsw7l2oGPfSW2RdKLqESowdu5y2nYjl895VbuQOU2Nrg2 4jJ237iup+mPJCsjZI1iv2o3glsuaJRSMYMzf3XyZf9DgVQAUahWQd+dSFq05bR23yOZ TBYA5K62BFfLAzbijQ8CMw9W2xmFdYPxarDe4cbuvp7gOaqaGCxfNFThTwgygqVtHGue jN90CZi/iPWrLxA4DrOtg1iVuuOhriLBCDaH8UBbn5NIOk4u7ssJCQMZIl95p0tjLlPz jlSLJsBpVllVY0cVIxrQDxNS44aQQa0BSXX9lexWGhitouqpppHeVWiw8uIJQ4kgpI3s StBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746535596; x=1747140396; 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=dibLYlGmdDedxyEYjcb3JI9Q3w63L9mp3j+hM+o5scoiElJhGsMF//Xb57qYjVcx/R Zy74Mdl0c5QJv+byWGy8ia0mp+XoAjGszs0lPF2xcGiVdMyHF7uRtNw3APGBvM30ZnTP W1Rpe1yquLnegumN/zIc81LouwDpvz6ej93tyny1hknzzd/F3qL6IztL5SezlL8NXKVM uUOxX/LZ1/LBJh0zI5nnZZ693qUPXgd+jal0c6AtYF8YQwwFvB8JUVkd3yJqxnWZ/+0H sEKQdpkR0YbQN9lRIxFUJwJlakygwZDbCQHYmoqgv7apCcXa7vCQ+IHhKzV4zJgDSeNk C3UQ== X-Gm-Message-State: AOJu0YybBHyVNLbqdTPj2qEIirkClbSTvn8N2T4GBn3SNpK8gSnQGCNS 10mQL31f2HcWNUN2ciPk28jfooL6eBCNPVzOD1iCq4NXNVXTXMAa X-Gm-Gg: ASbGnctF5hRO1Gm8GswFgyd1JEe95pg2MQWhz8lSvVWhqqj8x61m9tdSL4z1E1CzEEn IpsXLuGOFah7P+M/SeBgWMaH6YqJGpI2mIEYgfiPIYcYO8w3+U/cb5DwMfhQk4v5DSvZHDfMsWc sLqiT35qaT5pJ6L67SeS2BkLdTzRVBNkkqmeJ0UoZ+6xxZ/9LchW9EsQKc4zRUnAPwtmdCV8DYc HA9/a3gGtFZcI+NBBPoMVGT1mZ5oZNrLObWlE7NPszUVHrOaLWaRjtj0jnTEp3kR33IaudPyc5F V2nNV1gsdUkgi/ceAXphVgnf9iFkkWAAQhwB38xIONxqd6okhOyv X-Google-Smtp-Source: AGHT+IH17mxLxSA2PPD32ssm2/FIfNgX6IYtN/NMQKdYqAS/9zwe1/azeH9miKCZC0U7mivk5kWCBg== X-Received: by 2002:a05:6a00:4090:b0:73f:f623:55f8 with SMTP id d2e1a72fcca58-7406f08b86cmr14867749b3a.5.1746535596522; Tue, 06 May 2025 05:46:36 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7405909cd89sm8756817b3a.169.2025.05.06.05.46.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 05:46:36 -0700 (PDT) From: Alexey Charkov Date: Tue, 06 May 2025 16:46:14 +0400 Subject: [PATCH v2 1/5] irqchip/irq-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: <20250506-vt8500-intc-updates-v2-1-a3a0606cf92d@gmail.com> References: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@gmail.com> In-Reply-To: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@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=1746535586; l=2522; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=tSGH2p1izsSzRGjyaTk9F2yB01tgjf//IQcyliOLsVk=; b=zVTy0eAGf0nk6m25bKp+JZivOS1zpVtPTNs2BF9o/WLAqfw+yjEJaO9aqqF27dhamda08FM6t Ltl37TGFCdGBhdQJeaN2ER//sDC67QV5qkPi8RmmBuK7+Um6FH4JdV+ 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 Tue Dec 16 15:26:57 2025 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.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 58A8627FB31 for ; Tue, 6 May 2025 12:46:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535603; cv=none; b=hlQ2i2YVFjXcR7pF2c8CaalwnYmeWhNlZcsz88QLm/JjobNo60sAigCjVxI/h26KC7pNVVtzBBrroA/162nKkYgczSRZTFfX9kfc8qa+4XWsYVqg5aoKip9tIC8Yfnd26GkPEdsoQ8zhqisoufOoWg3GcCeC+vy1Mip/5XWdGCk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535603; 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=eTl0vwFcSnQ4FTi6BxMy9gEPUPNQVtEYqgzw96cy+1yzGMfc6Z42R1XAjOlG6Lm/EfzA80mnj6CvIFNtBAhGcTbwvj+om19djx7UzlhiuWyOXy4yNCHrzO63dI8CyHuZCnl2aOf5S3yLM48jft9nkMZtT0uNGyUPeVtkrdXh2w8= 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=BDVjKQcQ; arc=none smtp.client-ip=209.85.210.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="BDVjKQcQ" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7394945d37eso4628008b3a.3 for ; Tue, 06 May 2025 05:46:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746535601; x=1747140401; 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=BDVjKQcQPkjc2yg/lQY14CX8xY1XoKovfmB2JNKL+dIV5k3QtiNrIT4zmq9qOnksRK TRg+v000d2hu/hcmXR6hJ2NVRgCoZRwMRtc5TD/Atd4kypVd7KxS70XRueTHF7p45lLQ R/P6CSr4Xd+dl6/2LzYV4pk2AKXLRaYrSzd3Euic1jihyXBaAPsbArDlq2EkHihR3HSZ xnkyHA4q828kCPuRS3LsV7qXvBa7PUGbRVt2hbp7KLAkepnU8yht12jC6sG4Mhb60DAg v8bMnmiWpG/L1OKm96GMsjdcI6d/fFX/zLmpkjRD0ARiOQIem4ibyDvE4BPPCyW6c/YJ EP+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746535601; x=1747140401; 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=VPobOLZtdAcMI5x3+lXIeMjVtfKuMm8LjQI++mZBOS2LZY2P94JNEPrUfOkNf+cAaR be7BDSMoBDteiPd9cGV8E63KqMjAyqqLorSHQXeWnpe592F1B/GnBtaT0zlQvxLF1dvr v9zCt8JnUhVlJdZP48YrFGfpksntAEeqNjOf8C7R+vOlsPdiKKKalSMLtmn1A91Rc2FQ 2gTBdrKFF4WX4/VMIpjdMaHeZ5Lnz9QqHTH0LNOZpA6YrYMTX+7FP0tntHeWqJd/WsW2 YPoyOZHnERtCW2rz+y1M0gQ+/BqyxHglrCV3rmcoJ3MGvVSlR89MSKf3DCb+AOqXfq8D LsBQ== X-Gm-Message-State: AOJu0YxoJRk5vUNz33Vc2FCpJhNz1vGi4SVuOj/RwHLGauhsBYuhbvLn Cvc0P5/lLT2ngIuOLWBR8nHMRVgxF9glsD62jb092wfUQ4DYsZa4 X-Gm-Gg: ASbGnct0ynSs/QXD5sfRAB4vUTk+S1jp1nQdL21S9GjzReL46de8JErMAWjn1fxQVM+ zns5zm1+f8Dz98FAMOk6e/tdS2zP8lQXPf42rw4O9d9kdug/gtSyoJKxGtLRVdHeYPIQZ0ieK7S /n/Mncz+jKEyIWyiJugsKcmNOuCKzBKVYHQenIhsuqaUdI2mrkiabQt/KN2Z/BQqXpv7Kl/lnx3 plwqohQEzTI6s8qx+5KoDPtFWCRdYnFerVMDk7h8khTlN/lq2jy/zMrte9vcp2StM7/cuyFX4cj 8f2yMptQUUsAomLiaJiJcBQbouItCGOqv6UUyv0iQuQa79Qt8idA X-Google-Smtp-Source: AGHT+IGowFY2MVMfbMWWSCYh2dopuWBl9OWrkFvlshF/0V06/C6EkV/6AUrpLqlxmj7eZ06nAxOmnA== X-Received: by 2002:a05:6a00:369b:b0:740:3830:4119 with SMTP id d2e1a72fcca58-7406f177d74mr15436359b3a.18.1746535601545; Tue, 06 May 2025 05:46:41 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7405909cd89sm8756817b3a.169.2025.05.06.05.46.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 05:46:41 -0700 (PDT) From: Alexey Charkov Date: Tue, 06 May 2025 16:46:15 +0400 Subject: [PATCH v2 2/5] irqchip/irq-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: <20250506-vt8500-intc-updates-v2-2-a3a0606cf92d@gmail.com> References: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@gmail.com> In-Reply-To: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@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=1746535586; l=1647; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=5NC/31HeV/bFV7gPszc2SfNMbyljqfXDlZ++AHm2h2E=; b=lRrzoWPpBic995ZB7JmJ6Ikfz+jrP3eE9vsH/Q6Qh/pbqxKJe4IhEQmlHSrYNkspNch4vwfRJ ttjdF0YlCrnD5uvwEo+6nFtUAU/mjGobOQfWkrw2RxQBHyvpt1N8WhD 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 Tue Dec 16 15:26:57 2025 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (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 476A627FD5B for ; Tue, 6 May 2025 12:46:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535608; cv=none; b=J1y1iyqEmXq1VZ6IAT1IsjvMQhJvYYFIW+A7uXfqzkY+uWbtaLseLPFUnWa0y5+Gy9dyTFKF6k58PzDPq4I3W6LkkkI0XnhQz1UN7T14ncBW5G7dhKcPeQV/f9Q5VtWlul0w2vG27MsW4rp8i0vEgD2PIPDCNEttWQneZ6Kw2c8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535608; c=relaxed/simple; bh=PJOB22Kv3PJwwTTW6D5ax3TpHEhXSzaZpTr6rXL+klk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JiwN8gJ/UZepcLCvbTjHqFQmcmQ70Vvyqs/QZlZywTw5JR+vCobMH55fHOHcV7Up1WIFjjfIWHFlKy2X5A88fJGUz/ufZAqJ+RbaozVwPvO/NbYkvZuSj5kGxHcKG3lXtqxTnWR8CaKWNfIzT+UkBS5jRt/3yKxyXMt88/CKzSk= 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=V4piL0F1; arc=none smtp.client-ip=209.85.210.180 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="V4piL0F1" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-736a72220edso6200363b3a.3 for ; Tue, 06 May 2025 05:46:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746535606; x=1747140406; 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=V4piL0F1AQ6vW2NXXPMJhvpNNAof+y6Ug2gYoafRhxGptO8+ANrpgJfXgMjuDWVRsg cv+2h069WY7PQYmZvMn3d3TYdeloZViNNWzINY5tMrfUkfe4zyxwkHJHxDIVmPqQ7Lv7 jTHLAGwLQRL6YwekHuTPShoes9e4Q3CXn2za9a+sRgNDtL83+9VikoNOF3xGtUzC2nDx OW0QyyL4wyp0/VEsXO6UiwKLpxroNpShbETcKBFR9e0ClhyX7CyVWvxapxpvh26ViC5s ypicOmSu3C7dekbTIwROHPg4l3yPBLqBQ06tg8G/vUFQidPvm/LXxSe4rXDi0XkdFGz0 JnqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746535606; x=1747140406; 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=aDlmMz1ghZf3xAteIiM/MU7bAvKJ9m5pV4xOfSds88R2MX5Aas9m67pfxK/Hq3mZfq B7REmfLtmNlY1rc/q3SjG7tjVxlxbTXvA9UWdo2UFo2ZDuQeJ2pfNH2cy/EKJcWQYSks Jlw8aHoC4Ol4r6sR6w/QgRLXCN2uJCx3pPoDqe4b1Om7AaW2+nWp0US256G5dwnBL2tK ibBQM4gaLyXSsI4YTT1UOXNGHw8q+0jiT2/CRsyWNvgDry9yEkjYuJM88gTU/XFFEl1O DW9kaee+B0McQWN6AuiW/IA7OY0zIpJgy+ifGsAQNM7OM2zp6HSy4jQfLTwTGWvNXcuF qBdQ== X-Gm-Message-State: AOJu0YyRT3tLPNB33OI207UfbzKcXBvaK92t34yaeUk76mjoxhukHu5S s/dp/FD+6aExhz1z53hYQ6QKEaV94SzqiOj08Vb6VQrfB8n+JADXTOFO9dbhBYI= X-Gm-Gg: ASbGnctNGYTum3MBzJlcAsVV5wYHK1FvNHqi7I04gJ9jd3X3f1iHiOT48z5Z680LAVz tpPhTY5B330bw9+mxrt5LKNwLQD+AKF+bv6p6i5Rau2kXLRq8q5+rUARSuEQbV81zjS1fYzLRjP p6afiEUumuWWMnEOaFPo5WH9mJsKDY0qd4u78FRJ48Sf2F78iNDg3yoA7vevDGpp2JTBnHn3i5b Nbm+fM5FegWMlnV+xHJU1MMulsFSNMlDCe3RDk67sDDrngv7JmIH5EaoHoCzw1tdzaQWL0v7fk7 FPeHqiMGFsRZSQaMz0gyOFn6tK7Vi9MCJ58em9TKy71UL2QAr7NN X-Google-Smtp-Source: AGHT+IH/s+XBsMtzUorpno5+btU8tbMk6Pgcbuceq94+SH6/HsF1kgmbs7irvdW0hiZ7S7FOSD+ohQ== X-Received: by 2002:a05:6a00:8c05:b0:736:eb7e:df39 with SMTP id d2e1a72fcca58-74091b01025mr4069318b3a.24.1746535606545; Tue, 06 May 2025 05:46:46 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7405909cd89sm8756817b3a.169.2025.05.06.05.46.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 05:46:46 -0700 (PDT) From: Alexey Charkov Date: Tue, 06 May 2025 16:46:16 +0400 Subject: [PATCH v2 3/5] irqchip/irq-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: <20250506-vt8500-intc-updates-v2-3-a3a0606cf92d@gmail.com> References: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@gmail.com> In-Reply-To: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@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=1746535586; l=1330; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=PJOB22Kv3PJwwTTW6D5ax3TpHEhXSzaZpTr6rXL+klk=; b=ebUFwm60fraNvK1soHQF8KMtUOBLXbLoIcTJcRuJhyhljahIxR6s5gtd6hwd7GoMT/J2X0wbr OmU0eGtaMAABxwJdxIutML/sEKvaGKdzg4Cm90iQsYx8qNqq//H9EwJ 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 Tue Dec 16 15:26:57 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.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 562B7239E7D for ; Tue, 6 May 2025 12:46:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535613; cv=none; b=JZBD+lv/mY8iVsy6wCZCK1YwniXTxeFx1MPBiNKBiL0j6wEMtdIefknPb5VpYPrtNJgw0G4q9dVDt2/eceq2RtPSkJGauLA6HChTIXjLJT1oLibSgIV7z674z54OAUREohSmVBTExDqk2J2b3tydhoCub/Jk5KnhFPg/0HX1puI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535613; 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=pge/LUBCREA7vLCYpXFUttsIs3SRlORK3DNSxM64HGAlfuyr9mp4nrF5QlzIdjHRxTFeEFx4lZ/FmBXsNG6Hn7WB/w65I9B3PkEJ4F8Tz5RDGFPQUOxpTOR1QVbq0aDNuEyV4lmz+M79wEqrCeF2KsD/u7eYWjH7546RDLquh5s= 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=Ztf3a0nB; arc=none smtp.client-ip=209.85.210.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="Ztf3a0nB" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-736ad42dfd6so4506746b3a.3 for ; Tue, 06 May 2025 05:46:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746535611; x=1747140411; 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=Ztf3a0nBDHXbE5HrQrYO1wiDmQShONc+1x9Yirf5gu5dJPfugGytlmd/Pw2hfMxOzS c/lRRO2wzivtaOVqkpSB+QorkZKu3ZLuV/dIehEedG/+Ea/aJyqYS0vpn0f+sQcB13/J td2FEzjm5bYlUe+QXi75KQaI5ILI/v3m2WXUcu3eMc0JuAKZByCzsB4OActf2WNw2ocw 5iuV1PGxkquqo3tE2iJqbeLre15DAUevsi2YdalsVpFpKwu3BPwEdxqwdFMn51WGmOlj hfYYlB8UQkRKYY0PlWG5YregnqkA7vxUIg/HYaVryjBlq0AZfgLJN3zfIKzXMpFKBfzE gVRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746535611; x=1747140411; 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=IYPv3K60MEDQhRJvIo6DNEHtJJ1tnwTpUcdkGoCfZpvXDE440JSsbYOZTzpsZHdE9i q+isl6mNuDqPI9JYiCZBM//3CUZtqshleOiLecZDz0sXSfL2JSTIGmBfs47wpoJInoFY Yk2bpuwFJUqTopZunqo87ZERPW8pAODexy0X+7gAxHP1loz9jOrytPH2MAgLCd5k65R9 cCr4ZBueKhrLfwNbNtbxaxZyeXoAyKhDiYxIVVoNAhBLk1dwMX02DUBjxQK7/ikbLK72 /gW3AFD7dlIbxP9UmLc61gvZbUV946FjBzQzO35aWDjWycMbbAwWzdAF4UQPMKRq+uL0 uBsg== X-Gm-Message-State: AOJu0YwvxU0od+458s1mUVHvRbiQxcLsNiKOFZQizoAPSvgkiEpb+7Yj cPLwmn7GzVnbE8kvosaNzlOcCusHOy4JcoPxc7psZwOXK/hfYGrX X-Gm-Gg: ASbGncuJKOafWC/CYl2HqlH49qI78Hf34QJ6Cv9wSfae2m3z6dieaGHy39m2kKIiVU1 eYSirs3qT82eSRZd2MmyVDaeF2sYmO/4vU5cdpm93Bm2ikPxkCuNOiJU1F9kJChvZ/exwhMJaWv FFR3SmtHaWjSj2Pbluth8TywiKfuV9cKYC8AHwsdgKS72HhTkhZz0iVHdCGOkuQKiFCyG0JlRw9 nh1Fe2TEY0KncSKQxzhFUle2y+2/nXWKDh/+FH59pncQfyeiwB4DH8uAKvKV3hFgihz5Xt9B+B9 8eFnHZnwqPNmZAV8nn4NxkRHASQnG2ApAmSIb7wv4AO/eYrVpp3l X-Google-Smtp-Source: AGHT+IGt0OfmjZdbzWABnMzYK9s5aOTopCPcBf44B3mse0L30V1n9a6FbyIPkSvKOjCg75pe9VtBXg== X-Received: by 2002:a05:6a00:340f:b0:73d:ff02:8d83 with SMTP id d2e1a72fcca58-74091a0447bmr4126556b3a.3.1746535611537; Tue, 06 May 2025 05:46:51 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7405909cd89sm8756817b3a.169.2025.05.06.05.46.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 05:46:51 -0700 (PDT) From: Alexey Charkov Date: Tue, 06 May 2025 16:46:17 +0400 Subject: [PATCH v2 4/5] irqchip/irq-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: <20250506-vt8500-intc-updates-v2-4-a3a0606cf92d@gmail.com> References: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@gmail.com> In-Reply-To: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@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=1746535586; l=3948; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=GOA+u85tduWxVv4ECfMp+FDaLJ7imscZ/xPP/oEH2eQ=; b=O6fqrOR24uJ9xju6Sd7nqpOfeF5O89fby817sqf0xcnOuX6HnJocQbCrgP0eX/5PZm+seJkdy GhWNgcnZlmLBx6RlQpxxyT9wt0xS5LljcdDtydrN0geSCSk1SmBdHt+ 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 Tue Dec 16 15:26:57 2025 Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181]) (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 80180280310 for ; Tue, 6 May 2025 12:46:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535619; cv=none; b=sA3hOH0LxWKbZkVs44LHRF4aeZ/zk8EU9MBjCaeqZYAcW78KL0jF2I6XwL+Z+JTV1SJoxiIT75CIzKLUDBc4zkpd2xGCyI3epAgrGmmebT1WByeERSP+XnxOgSkVKRC3ycU7WMj4bxHUELRcd8l2pMMn79/6XjFkbECl1cp+NEo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746535619; c=relaxed/simple; bh=ZvhDtpu1XnYczmFh42T13jRZysqmiKlyJitHmezAOec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j/Hb2HXhv7EmCM61OvzuAih3pUVPIppEnvaZ0Ft5FD26lvNmjldoeD7NV8mgvtqvP4bxXEMOfOt4qCangYWav1y4hlfv4StYPR7ZGL22+QzZkJ/XK4nzFAvVIDypdhCPfR9Li2CbHEcw1t6FYDgDEv21I1YnTqxb6M7pgBbSL/s= 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=BcXbBczt; arc=none smtp.client-ip=209.85.210.181 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="BcXbBczt" Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-72d3b48d2ffso5887434b3a.2 for ; Tue, 06 May 2025 05:46:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746535616; x=1747140416; 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=BcXbBcztr8QbXuWR/84Nvb2NZZjRWpJbdhvL7wxN1tiubv8VMpgZKvGmUE4c7xlrKb NcdPngVYEHE35T+OM1Zwf22AFJHvO2NBipA5wVW3U5+wAb6dm4vBphSwwwz9Ao/hTWkl nJQJMdtSrP5AQMt71BwOxDc0Iuvbn+Vbimr1RvXc4IEclxuKPF/BwZOtT4cWibD653M1 MayOlzOwhI3B7maueWvQdOlS4QXOu9gS+IgxqKRNhgFLqii6tRO6c0Y6auXPBmeVGWY7 +3a7E9Mp+WhARLwpqFl5HZDterhV6J5xoloKN0Y1PZ3ejebDHpV/fGkpqabvfrgGJTfM nzDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746535616; x=1747140416; 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=VheHRWBP2PR7JLEcNS00nJOa4JW9q4w8zUxCxhiy7MLPX8vIzOR4Pb/+QybGFyTacY xNeVBvz55V8br0e4TbA2dYnBVTbhDiXsPxa7S+av2shG0TlKulrGB57RJyZOxkkyXV8A bHBiga5ts5/Ec7Mq3fvbDtpSmJlWFjfz/U3VaMrn43Ay/dwdf86zVcIZMEpOSk2P9w3A oQBlmDgRP5q0YwiFLFzfx8Z+bWCNANMlj0dzgvFwQDz4EXf7W3mPlAu7tyo3Gu6Iyq// KutDqKAX2hNBhCsDVuTccI68gydleFjpsYZhsdkCzYa6HY/2rEK6k35TeCNBoG9PK6k1 MEZg== X-Gm-Message-State: AOJu0YxP7g/ee5tGiU7pQkBcmItbiOHPH5d7JapmQ2n1XVeX0PmIBVXs auh4KnDgLRLVANxDNDnBSXd4NIX67uWcd3qbAZvQEWxhaL06uftc/t3IUGuRUSg= X-Gm-Gg: ASbGnctWfX1w4voWV0tlDtVQDNiOO87Kbw4mCOEyC6uZ8k+Z1R9LYQU7lOxun8KhjJs rV7LBg9gwNpEakJlXDcM5nebNB905j5Qf2aKQKnz19yXsX9q5OIs3QAV0D99rpcSbeocDQygTKa JF7bTcny4EyvnRb8J134C1yl6V2g894hAQwWY6QREDGM4J32NrDBNt91iTmPQMt8mcwFwbpoQ9i lN9RjVO/yKAj33BBIUt6lYRpS+8cux5ZBXndkZ4BSYGURPqeasFgyeYTcI+y8nVmZ3Lbjv0Xq/4 /SK4eqy9WRy3y1q5PreZDmVXF2LN03AlR7Vgp6p9px6rj8qPk9qM X-Google-Smtp-Source: AGHT+IGNnSAXy5brjBvE4/Ufe8niP9wxz79TSWuqxShduDXk0L8S+++Yl5TbcxjPSKCoiJ99zpb4Bw== X-Received: by 2002:a05:6a00:414a:b0:736:62a8:e52d with SMTP id d2e1a72fcca58-740919e8b75mr3877019b3a.12.1746535616578; Tue, 06 May 2025 05:46:56 -0700 (PDT) Received: from NB-GIGA003.letovo.school ([5.194.95.139]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7405909cd89sm8756817b3a.169.2025.05.06.05.46.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 05:46:56 -0700 (PDT) From: Alexey Charkov Date: Tue, 06 May 2025 16:46:18 +0400 Subject: [PATCH v2 5/5] irqchip/irq-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: <20250506-vt8500-intc-updates-v2-5-a3a0606cf92d@gmail.com> References: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@gmail.com> In-Reply-To: <20250506-vt8500-intc-updates-v2-0-a3a0606cf92d@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=1746535586; l=3067; i=alchark@gmail.com; s=20250416; h=from:subject:message-id; bh=ZvhDtpu1XnYczmFh42T13jRZysqmiKlyJitHmezAOec=; b=hopGDJ1av82b4uhMrK9KRsi9pPIm+0cG0QqUktUu2DfKw/R0jeG+0DfJ8Ha+Nagjm+pp4HA8t y3nQTlp2jYaA7ESiaGbw4sOF+uoJcaOmN3h2V2rK4i48cwtMykjaPTe 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