From nobody Tue Sep 29 02:04:00 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 8761B48CD5F for ; Thu, 13 Aug 2026 16:48:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786639726; cv=none; b=YURVU/7eFS1RNyTsbScbZX+uoVD7zKoWdHBFLVPZ+KxQh+k69LI+qsKBTwdxnkQuL2qdTXpOh+GGtim9oNKBznnEK3MVdpmqwFzGj5o6awdG2LISi12aACxjS5luasPcgQ7hbK+gkb8WPgJE1jDZ0oD+3dkMvEKcuvEjpVzl+zA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786639726; c=relaxed/simple; bh=qwDUj4+15bXny3vE81t4xJfojfrxR4IYhJWK2NNHuME=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=mywPs7kutDIbPAvYcd/fFpfNMDVh8aGleMcECZ2uGHdmUi/QhZpPZVB9zA7wDv0zXvllmwpjQPOr+ttFJAbf9VBGYjaRUsfQIqYuj5aQo5cwgnkgNEoTNyKPC4O3i8kovjLsHgPxOqB/2khBHxsDmgCKFc3iWMH08UTUl+gcMrQ= 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=CSLcCmtv; arc=none smtp.client-ip=209.85.128.46 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="CSLcCmtv" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-49800c6a846so1285675e9.3 for ; Thu, 13 Aug 2026 09:48:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786639723; x=1787244523; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=LxXBkcey+corwbU4RFHxVYgs/fXIM/bb/etjoRIzs8I=; b=CSLcCmtvuPSe+K941+fIeyzOvy8szMDKSdVzo8faJiHw/6DEbSakwrJa6wjqosedfh 4wgWm1hUCOprXlrwbszFhnPlqIkX1ziZoxcFfvWgoXdSKe8SG7yXQBioZ5SVEHwPs+71 xVx2wTl7DzAPxA9GwgkxyeZncVChi6zc8PNDOGH1+vCJDAMSATIIZIl0KlAyvWMXiy2q CYCPP+3g5rsWheTgRDGmjmPbZMBN4YwjHtXiB8ZEsLt6emPZPx1cQmd5/WFgToZYHB8x S61WvZeXWM9IAP4LW0dXe+y+rfTC/gu+gBzfKgVMsIXgG/U36ZsWVP2XsBcxFRz3Guqx C3Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786639723; x=1787244523; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LxXBkcey+corwbU4RFHxVYgs/fXIM/bb/etjoRIzs8I=; b=r9FyZeEXXUonUEJCs7PsNeMEQ4f3+SToz+dK4XzHfnvWc7eC/euVsIZqnCvl5l93io 3zn9sUWcSgYggP65pdcYXvq/c2sStpgulVhGL7oxrOtTUeaXbOKkp0O3BGwVLvgiwlJd 3xueUAZnPDuIrNwIfJWXV4Aqqu6alsYdzbrAddN5ScMLfa7teavqKU788K664yFiOWnd 7iXG9tdHkewlCaMRIDQHTvQ3Dr1VxDggJCwPWj0hMZoccuZVq77hwEVcujzK0Ju4jHEe lnD1Ra0lFZlGZhxMHX/4hqPa+aav5RWCYwkUcouXba/fnVB51gkhKPQlgrjywrFWY7ye TUPw== X-Forwarded-Encrypted: i=1; AHgh+RpG2GFKbv7m0Pbf61JyKakugCKexcXbZfIO+R0GmJy6+gLPzjw8Z4PLR3K7B99BlG7V1bbpL9MYv+yZs/s=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/dIB4gkWBYRlHnmheGRg3U69KegU93BWTawK0Gm1cmsOlZzHf S+rNiYIuerdS53y+6wPvYlHW5IM4FKbs6SD8BUW1RrOZVfz4uQy2m0pKEi6zaA== X-Gm-Gg: AR+sD11tnavb3f6qH77kPBG/f4EJesWjPOGegtpLAYhe+gIzANr1oI1RVfjeLA5Bt3f 1WGtv2o0LQvlUj1mx0eLaI/rKXGijwnb11vmFTmSYZvfM/0ND6cAuFWdEsmHktk2mwWTlSAjrYs zg0klw+Og3DQ99ZivX5dNnZemb2tsIj8edhRc5nzmsH5QWaMi5VJ7pvVw2hv7e2eANrIOMjLmzb vntqKb/in4ak7ApvejaHhboikM7uJhgziH7DFB3/QJEuWWc8aCXlN8ABUI2NnlxLzH8NVf1wBOe EsqodqiR8Y3oZhO4ZVGcZd0O0lSE6XZS3zO99tNvE/PgD04LgkgyNEllR2cs2VPQzEyjKYEfIhR qWi/fFPe0jNOkh93qVByFgNBXosgWBMI665pof3W81z2igIcrg0GEdLHxKhhSoPli6XYc6Ntziy hRakPEeZ9+/XAj5RKhiCYC0jVeoRiB0CefYKKh8EHhWL4CXSqEimOJuNJbCBXCbvvCHUM9JOU2c 9Zk61UpFKxNkA== X-Received: by 2002:a05:600c:3f05:b0:499:858e:de42 with SMTP id 5b1f17b1804b1-499858edec0mr45227115e9.6.1786639722571; Thu, 13 Aug 2026 09:48:42 -0700 (PDT) Received: from localhost.localdomain ([2a00:23c4:a702:d301:15c5:4b13:a9a3:1fda]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4815f20058fsm721259f8f.4.2026.08.13.09.48.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 13 Aug 2026 09:48:42 -0700 (PDT) From: Biju X-Google-Original-From: Biju To: Thomas Gleixner Cc: Biju Das , Radu Rendec , Marc Zyngier , Lad Prabhakar , linux-kernel@vger.kernel.org, Geert Uytterhoeven , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH] irqchip/renesas-rzg2l: Fix loss of interrupt Date: Thu, 13 Aug 2026 17:48:09 +0100 Message-ID: <20260813164839.129777-1-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Biju Das Read modify write on rzg2l_clear_{tint,irq}_int() is causing loss of interrupts when multiple interrupts are triggered, for example with: gpioset -c gpiochip0 355=3D0 353=3D0 328=3D0 352=3D0 The ISCR/TSCR status registers are write-1-to-clear per bit, so any bit written as 0 is left unchanged by hardware. The current code reads the register, clears only the handled bit in software, and writes back the whole value. If another interrupt's status bit gets set between the read and the write, that set bit is written back as 1, clearing an interrupt that hasn't been serviced yet, so it gets lost. Fix this by writing back only the bit being cleared (all other bits as 0) instead of read-modify-writing the whole register, so that concurrently-set status bits for other interrupts are left intact. Fixes: 3fed09559cd8 ("irqchip: Add RZ/G2L IA55 Interrupt Controller driver") Signed-off-by: Biju Das --- drivers/irqchip/irq-renesas-rzg2l.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-renesas-rzg2l.c b/drivers/irqchip/irq-rene= sas-rzg2l.c index f6b2e69a2f4e..b3774f82855a 100644 --- a/drivers/irqchip/irq-renesas-rzg2l.c +++ b/drivers/irqchip/irq-renesas-rzg2l.c @@ -161,7 +161,7 @@ static void rzg2l_clear_irq_int(struct rzg2l_irqc_priv = *priv, unsigned int hwirq * falling/rising-edge. */ if ((iscr & bit) && (iitsr & IITSR_IITSEL_MASK(hw_irq))) { - writel_relaxed(iscr & ~bit, priv->base + ISCR); + writel_relaxed(~bit, priv->base + ISCR); /* * Enforce that the posted write is flushed to prevent that the * just handled interrupt is raised again. @@ -177,7 +177,7 @@ static void rzg2l_clear_tint_int(struct rzg2l_irqc_priv= *priv, unsigned int hwir =20 reg =3D readl_relaxed(priv->base + TSCR); if (reg & bit) { - writel_relaxed(reg & ~bit, priv->base + TSCR); + writel_relaxed(~bit, priv->base + TSCR); /* * Enforce that the posted write is flushed to prevent that the * just handled interrupt is raised again. --=20 2.43.0