From nobody Thu Dec 18 22:35:59 2025 Received: from mail-0201.mail-europe.com (mail-0201.mail-europe.com [51.77.79.158]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 966987D3F4; Fri, 16 May 2025 07:24:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=51.77.79.158 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380247; cv=none; b=gbfArXubKfIHsA/wcDlOx7XHUEkNth03Si1Ebp3qlV0hewuFETPia4c/cc+pZTfDieh1+r+iwc+lBKhkL9batt3y2rH073fjmq4SrYeJGijlYa7Grq4nIqN+BQq2j5HMqKjjLosIZs9gy8O24cFpky/TqYm1Un7BbeDwqr5EWOs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380247; c=relaxed/simple; bh=vqa0dTp9C1MThd8T8OLDOwiyoMFJjfgxJl+5EjhLtc0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BqPEKDL/VjCAVD5BvyqCyyYyJWDVmEEQf88kKcJ/8+9qZJOU94BpU/g25Ps2iHTtIMC0uqPI7tmCgIWu5shnxrkmPm0Mljzp5wjHU2MFti1MeDn8ZQV65a5bvC9Xu/HEG4M/Mm5/ZwDAjiCK7wF5xyBe8Vv5blZXWH9+0NsNSJA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=DKluuhBD; arc=none smtp.client-ip=51.77.79.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="DKluuhBD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1747380232; x=1747639432; bh=/9Z/ul7hXCo/YIyQHv36+JlKXEGkyyfKI7Noi5V9Zw8=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=DKluuhBDUVDhATMSINsGvy9ny1stdMxHBTd7Hjax9eClAsaljoozfynvP2b6tMujM idvaB9gTt4jU1KFrNl1SHzwCCIiNVgzyZyQC+qf/8kJImwFy1isSvaxtI/08vGMW3s Fnf085yZPvQTpwzWVZCJrnWdTg9fZfOH7o+F+9bmdyk+qCM01FlUPk9KB9k+k5CsKg /Xms564OOgx0DoPLvT+xcy3Bo4vzcJn3YF6yUFP2TBduNwArilr8j8kh67nuv3TQnL VC8lDH6hOJwOiDH6Z9tPVVgB8dadWwgAEUDldjFaRLwKIBpgkdJM7GIW4oHS/6v8G8 6iSII+BdWsRbQ== From: Esben Haabendal Date: Fri, 16 May 2025 09:23:35 +0200 Subject: [PATCH v2 1/5] rtc: interface: Fix long-standing race when setting alarm 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: <20250516-rtc-uie-irq-fixes-v2-1-3de8e530a39e@geanix.com> References: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> In-Reply-To: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Esben Haabendal , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747380226; l=2485; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=vqa0dTp9C1MThd8T8OLDOwiyoMFJjfgxJl+5EjhLtc0=; b=rETIVHamGkIBOoWlv8KoibC8KOoj5ZsQOY7/o/R7tT9GXokO16Ovg696kdaK+Uk4Z3iH2MGey hR07gIETKZiCR3/T8NoYDRzLqz+qoNGM2Uqiy3bgu90ANZ//6Q+5bI3 X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= As described in the old comment dating back to commit 6610e0893b8b ("RTC: Rework RTC code to use timerqueue for events") from 2010, we have been living with a race window when setting alarm with an expiry in the near future (i.e. next second). With 1 second resolution, it can happen that the second ticks after the check for the timer having expired, but before the alarm is actually set. When this happen, no alarm IRQ is generated, at least not with some RTC chips (isl12022 is an example of this). With UIE RTC timer being implemented on top of alarm irq, being re-armed every second, UIE will occasionally fail to work, as an alarm irq lost due to this race will stop the re-arming loop. For now, I have limited the additional expiry check to only be done for alarms set to next seconds. I expect it should be good enough, although I don't know if we can now for sure that systems with loads could end up causing the same problems for alarms set 2 seconds or even longer in the future. I haven't been able to reproduce the problem with this check in place. Cc: stable@vger.kernel.org Signed-off-by: Esben Haabendal --- drivers/rtc/interface.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index aaf76406cd7d7d2cfd5479fc1fc892fcb5efbb6b..e365e8fd166db31f8b44fac9fb9= 23d36881b1394 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c @@ -443,6 +443,29 @@ static int __rtc_set_alarm(struct rtc_device *rtc, str= uct rtc_wkalrm *alarm) else err =3D rtc->ops->set_alarm(rtc->dev.parent, alarm); =20 + /* + * Check for potential race described above. If the waiting for next + * second, and the second just ticked since the check above, either + * + * 1) It ticked after the alarm was set, and an alarm irq should be + * generated. + * + * 2) It ticked before the alarm was set, and alarm irq most likely will + * not be generated. + * + * While we cannot easily check for which of these two scenarios we + * are in, we can return -ETIME to signal that the timer has already + * expired, which is true in both cases. + */ + if ((scheduled - now) <=3D 1) { + err =3D __rtc_read_time(rtc, &tm); + if (err) + return err; + now =3D rtc_tm_to_time64(&tm); + if (scheduled <=3D now) + return -ETIME; + } + trace_rtc_set_alarm(rtc_tm_to_time64(&alarm->time), err); return err; } --=20 2.49.0 From nobody Thu Dec 18 22:35:59 2025 Received: from mail-0301.mail-europe.com (mail-0301.mail-europe.com [188.165.51.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D406322A1E4; Fri, 16 May 2025 07:24:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=188.165.51.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380251; cv=none; b=ftXnW88h57qpvRr97t4PzWRwZ4wgb4ecxYygMjlQHxssAUSbYnpcO+VQ+QrdGpPkPN4/ryU6UXrTYRHuWCfG8L24NpduQqs9P8ilUm9E2JIrextAuYtpaWa5IZWa5+uAwbVkvMhwtoT6p7FUTvqrl8SCz++tBvm0GhEKGRTGQHI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380251; c=relaxed/simple; bh=GJXYiYgi48NE9t/P+NOWlO+DdVXReF8iINAhKcqVKAU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZCf2XMVlMONll8CWI0SMRyjLihYSwnkhhAN46+304xINwAY4migny3yuPHSpyOoAIy1lwyxDiN+1L4aBwMSiJMPEeX6c2gMKaDVJiJNdZ/KvNVZwWuQTHtwZRLcWfGKeSPX8TbL4nqKRN5yT9uOTUsp23gp4f/L+5YTDe80XWbY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=XRq1syeT; arc=none smtp.client-ip=188.165.51.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="XRq1syeT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1747380234; x=1747639434; bh=+IrraWLimy1x05XmWcpgWWj7AES2HxIEsMNAIBePizs=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=XRq1syeTu67fuoUJrxO1i2+rs/1jCnRtTQvmELbFfP55EYql41aBvJIdIxSuy+65d BQaSENptZ1yCLW3xDCaMUqAjJErj0In7vU/onUJmoCL8dFp17Az1hMEjYGdCXX9uXo 4/5R8/SsaGrf9CxFLnCDJMSkol7etXB4j51TvnbxmCflacEjfXZzy65Sl7TgbUxYu6 1/JtE7TQFEFW2u8Dap/9lRdkx8OI6VkguTi8B4U50lSyEaxEn3YuG+yW/OXWHiO4uz GOI35lEeZkAlHN4eH5UN44vlW0JbJzZzByiuilihjrxdJLXPsfiupYrD1inb4S/ISZ /Oi7KBmht4Z5g== From: Esben Haabendal Date: Fri, 16 May 2025 09:23:36 +0200 Subject: [PATCH v2 2/5] rtc: isl12022: Fix initial enable_irq/disable_irq balance 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: <20250516-rtc-uie-irq-fixes-v2-2-3de8e530a39e@geanix.com> References: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> In-Reply-To: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Esben Haabendal X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747380226; l=849; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=GJXYiYgi48NE9t/P+NOWlO+DdVXReF8iINAhKcqVKAU=; b=RfXHJO4jORMcU5oC2njC9qPb5Px1CjeD/ifxPX15ITeWH9dgg65MKJWVkpcBXSnr4DX29gGvF TP8iMCZ3st/AMwRngwLRxCJ6zhM7SpGnnFuHluG/uj+X4KifZ1E4OAY X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Interrupts are automatically enabled when requested, so we need to initialize irq_enabled accordingly to avoid causing an unbalanced enable warning. Fixes: c62d658e5253 ("rtc: isl12022: Add alarm support") Signed-off-by: Esben Haabendal --- drivers/rtc/rtc-isl12022.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/rtc/rtc-isl12022.c b/drivers/rtc/rtc-isl12022.c index 9b44839a7402c9ab7da634d95152c2520eb8552e..5fc52dc6421305e957a0c3a1690= 09c3f6a6c7320 100644 --- a/drivers/rtc/rtc-isl12022.c +++ b/drivers/rtc/rtc-isl12022.c @@ -413,6 +413,7 @@ static int isl12022_setup_irq(struct device *dev, int i= rq) if (ret) return ret; =20 + isl12022->irq_enabled =3D true; ret =3D devm_request_threaded_irq(dev, irq, NULL, isl12022_rtc_interrupt, IRQF_SHARED | IRQF_ONESHOT, --=20 2.49.0 From nobody Thu Dec 18 22:35:59 2025 Received: from mail-0201.mail-europe.com (mail-0201.mail-europe.com [51.77.79.158]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E05D322756A; Fri, 16 May 2025 07:24:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=51.77.79.158 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380248; cv=none; b=eYMov683pBd/LbzKM/I/8VFwGj/xvxg5ARGvlO6dlzBGJCtu9YmluxXoz/GsoXwGLN/2R2LwNMfUFWDvwKqjwkbORzecAgBfahYufYDC8NnhjHVXMPOoHerxk3RqrUu5LUmSnxuPD8GHnwWT9Qqy/iKULqW53R39Gqqv28mD86o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380248; c=relaxed/simple; bh=2LUSg7Zdz1NxxCnzMbGgag78qSG7v6rups6Hg9AB3eA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rCL+y1kIqPwC+GD1rVR7wEfljinBSxB6LMibB2SX2bpUudFRjUY3pY/GQaC6boJrldsUn6rx/XkDypj4SsPhJprmpSR92oHTiSCaZ4eqL4yeDYPODiwhN01La5lAHoyRMENlh0yZxRv6W5ForYackCGOCKkPY4HJL4XXIRm4HPY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=bpvYxcmy; arc=none smtp.client-ip=51.77.79.158 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="bpvYxcmy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1747380235; x=1747639435; bh=NoyVE6dpJCpwp1H9KqJqcvA2x5V44zAwPbJ/sKD6YuU=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=bpvYxcmyKBKyZtEzTff+rBq5lrNHbd8ut+AbdGyrEOTFWNPX6wt6kZhg0dYJ7xF+O O4AJnstf6qgXfhbKJ/xhzqsuaK6tqzETplLwPwFZmMbKCQKyyKnm7+zCGxAzuN5o1a qAcliW8UgZVUKWvo+dWgmUUzB+QUb012o16oov5Hxl5wswCVG1rEcd+NtYrdmQ2t0x hcfIOkCKGO1fya1RXOt0Z2EGkGqhIdBsZzIZKHdoVHr94wnI5ZO+9TjcKw4K7GpzAK eXqNHO2ynDkRdhLOwnXohBqFY7JIUjqAUtEzulKoa4zmYSAAQjX86lx3uYfnD+8juk KP1h7Evv0coCg== X-Pm-Submission-Id: 4ZzJV26PJ3z4wx9c From: Esben Haabendal Date: Fri, 16 May 2025 09:23:37 +0200 Subject: [PATCH v2 3/5] rtc: cpcap: Fix initial enable_irq/disable_irq balance 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: <20250516-rtc-uie-irq-fixes-v2-3-3de8e530a39e@geanix.com> References: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> In-Reply-To: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Esben Haabendal X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747380226; l=822; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=2LUSg7Zdz1NxxCnzMbGgag78qSG7v6rups6Hg9AB3eA=; b=llEZBEeeVmLuXVENteg1uyQgrCJd8ICMLUoRycqcWl+NviTZd6eJf03YYUk90h3fGrGZoj/s8 0sYqYaQZH9FCNmbB6X6oqC6ECktj4JoVtm8QUj0ljcpW2Y+Vy4Q0e9b X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Interrupts are automatically enabled when requested, so we need to initialize alarm_enabled accordingly to avoid causing an unbalanced enable warning. Signed-off-by: Esben Haabendal --- drivers/rtc/rtc-cpcap.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/rtc/rtc-cpcap.c b/drivers/rtc/rtc-cpcap.c index 568a89e79c11424967d4af239d252a80a073a341..682f85abfa0e9627c8410220c9c= ebad7371d360b 100644 --- a/drivers/rtc/rtc-cpcap.c +++ b/drivers/rtc/rtc-cpcap.c @@ -268,6 +268,7 @@ static int cpcap_rtc_probe(struct platform_device *pdev) return err; =20 rtc->alarm_irq =3D platform_get_irq(pdev, 0); + rtc->alarm_enabled =3D true; err =3D devm_request_threaded_irq(dev, rtc->alarm_irq, NULL, cpcap_rtc_alarm_irq, IRQF_TRIGGER_NONE | IRQF_ONESHOT, --=20 2.49.0 From nobody Thu Dec 18 22:35:59 2025 Received: from mail-0301.mail-europe.com (mail-0301.mail-europe.com [188.165.51.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43B0422CBD8 for ; Fri, 16 May 2025 07:24:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=188.165.51.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380253; cv=none; b=Ih9fvQO0W6sYQkaPFftcRnct1nn02tiCMPMNN8AWqQvvsP/Q/CoovnFY5d9kKxwBUQIsPljtEpL69YEAMCe7zWe2xn8RFMeqminhtWONcFpqRzlTgYvH5iT8Jc8Y1TZ/6IruiUH9wSJtam8xip0A+SuprEfUYYWQrdv4AiBTZcQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380253; c=relaxed/simple; bh=U/FxXzWBUPkyWbts6DT9nfymDyjSzhYDi8F/JF5C1p0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ry9jmX5pPjKkDkiHCrb0cXnGZLtWvPU4YtSG00rCPG2Tr/IoGusdR6u4a6dWJYGd9hI0eNOP5xeBAkS6Ex1Muwd5GELXOsH7oBLN4/Jv+T7pUKpj7aFdRPB4y8wcacSCzSRj9GQnEXkqQmR6IatDzTIwBgojtGKKwJtjdwLgGJg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=JS4mAT4P; arc=none smtp.client-ip=188.165.51.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="JS4mAT4P" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1747380242; x=1747639442; bh=VhSWaEsAxjdDofu9C1BTEf8HD8mJOrdR0IjKvjQ68iM=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=JS4mAT4PkG/JB4f7BROfMAPAVOZZcR9sLaP0YhAAIMEeaR7fpxZtD83rSJDzuwyq8 kYjuOTmCeLS9UAe8GTrtGcPN912TDyPWb2pnof4DFRsrxVeaPhQoAua++dMF4+wFxK aRU+IS8+rjnWKX2WV+T/u2UZleEDIS7haT8KwpHet3BIoDFbXDH5jnsjv0sQ+jUcfn mHheidtx0jVn7+EckzZMJGABp4W8KYacWtYDff/m1BBTO22rOMYvmirXUxTBWrosJB LbPpOsnoLMpayuQal28WgFXHydKyfDoEypTDarYTx5fIeLCfkJKH2LXlgCiJWKE042 ZNzWy2opv7taw== X-Pm-Submission-Id: 4ZzJV419b7z452 From: Esben Haabendal Date: Fri, 16 May 2025 09:23:38 +0200 Subject: [PATCH v2 4/5] rtc: tps6586x: Fix initial enable_irq/disable_irq balance 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: <20250516-rtc-uie-irq-fixes-v2-4-3de8e530a39e@geanix.com> References: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> In-Reply-To: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Esben Haabendal X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747380226; l=791; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=U/FxXzWBUPkyWbts6DT9nfymDyjSzhYDi8F/JF5C1p0=; b=RFB+FyPxB1Zn/jZXYG4SbZpVHAX5IN6jkJA2WhR6fZzTG9PyivmIpCHHP/N0uSkd9eVH7SjjN QS+BgAHLdlDD6mDODg7OhH5mGnPJZ5LATO5QuIiBMZG2ijXOWWPou/D X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= Interrupts are automatically enabled when requested, so we need to initialize irq_en accordingly to avoid causing an unbalanced enable warning. Signed-off-by: Esben Haabendal --- drivers/rtc/rtc-tps6586x.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/rtc/rtc-tps6586x.c b/drivers/rtc/rtc-tps6586x.c index 54c8429b16bfcc692b1f4d5404f0c42f720e93b4..76ecf7b798f0de22aa89a552a26= 3b473ab3065ef 100644 --- a/drivers/rtc/rtc-tps6586x.c +++ b/drivers/rtc/rtc-tps6586x.c @@ -258,6 +258,7 @@ static int tps6586x_rtc_probe(struct platform_device *p= dev) =20 irq_set_status_flags(rtc->irq, IRQ_NOAUTOEN); =20 + rtc->irq_en =3D true; ret =3D devm_request_threaded_irq(&pdev->dev, rtc->irq, NULL, tps6586x_rtc_irq, IRQF_ONESHOT, --=20 2.49.0 From nobody Thu Dec 18 22:35:59 2025 Received: from mail-106111.protonmail.ch (mail-106111.protonmail.ch [79.135.106.111]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C28F0227E99; Fri, 16 May 2025 07:24:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=79.135.106.111 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380252; cv=none; b=kbPJ+kwhU2/WkMOMIq4PTSyLfdnZz3398RJU0eGWKilgWZnZDabv31P91ur7geIlqVtK2JdDDO5fGfKT3AsQoAufiHrtUdkcgFlMWC4EfCcdjtqFekl22HDun9Cbdzlt63zlreGlKcXE23qOQP7QkmzZxBUWpQO2mxx/A8HJrzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1747380252; c=relaxed/simple; bh=IeqH+mmAEu357ujDYHkqkLZyj0ZjtwVZFNzsXZ5Ilns=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uy0FXk7ZRLD/l3aGDxQrTrSIa49A4ZdRHsim1+/4Icy1m/h93kL+pqRmgl0PxAxgY9p7fI8F8qcSyxJRylM8GpMpTsmdboMUXvS7KDpZO1hPCqE/AKff+ywq8w2YcLNHrOfizJUad5l9bWGv5bjCoxKS9ShEq/mWgg3Pja2+MdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com; spf=pass smtp.mailfrom=geanix.com; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b=Mzrrnk3C; arc=none smtp.client-ip=79.135.106.111 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=geanix.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=geanix.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=geanix.com header.i=@geanix.com header.b="Mzrrnk3C" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=geanix.com; s=protonmail; t=1747380245; x=1747639445; bh=wnEY2KdUknJWBsQjqh8ETTXj2cz9VJWvKOExBU/gttc=; h=From:Date:Subject:Message-Id:References:In-Reply-To:To:Cc:From:To: Cc:Date:Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector: List-Unsubscribe:List-Unsubscribe-Post; b=Mzrrnk3CfWkzkzECgDBXxTZq0Kq03I4a0SUltZAyau3yoa/chOCyofVyO3COMUkvU 17Lvyh2T1uzVrzZ55dyDjbK9eHXFST5dhCMcb8/erneuGVoFizGpuNg/VuuAm4oN5r fuPZyySckBn3Ic6V/7Jw1NNdIue135iUtDmA7js97DWUm/DukJxG1rbjGc+pttdtZD J45lpwM4xo15OC5y6HBf6SIfAsLjnnsbhLllM+c36sbv8eYtBmMv7/rcx5+CclhxWf QocciOkWxCs1HNNMA7fB/hX4xoZkJofoR3osKAEUYsNGDld8wiRgSjY9AJ8qFVBIRY C+wQ4whxloZKw== X-Pm-Submission-Id: 4ZzJVC4zTqzLb From: Esben Haabendal Date: Fri, 16 May 2025 09:23:39 +0200 Subject: [PATCH v2 5/5] rtc: interface: Ensure alarm irq is enabled when UIE is enabled 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: <20250516-rtc-uie-irq-fixes-v2-5-3de8e530a39e@geanix.com> References: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> In-Reply-To: <20250516-rtc-uie-irq-fixes-v2-0-3de8e530a39e@geanix.com> To: Alexandre Belloni Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Esben Haabendal , stable@vger.kernel.org X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1747380226; l=1227; i=esben@geanix.com; s=20240523; h=from:subject:message-id; bh=IeqH+mmAEu357ujDYHkqkLZyj0ZjtwVZFNzsXZ5Ilns=; b=RrTb8qtv5dYP05zMzXkLxU5u27c2yybG4ipBNvmUZXn+c1CVziXdEP6YOWOHBaVduk77HJF5b tScJU+FR9GvBU7Q4gyMOGVGlCzJmIJBV+4kwczh2gYN86zycGwLGvF8 X-Developer-Key: i=esben@geanix.com; a=ed25519; pk=PbXoezm+CERhtgVeF/QAgXtEzSkDIahcWfC7RIXNdEk= When setting a normal alarm, user-space is responsible for using RTC_AIE_ON/RTC_AIE_OFF to control if alarm irq should be enabled. But when RTC_UIE_ON is used, interrupts must be enabled so that the requested irq events are generated. When RTC_UIE_OFF is used, alarm irq is disabled if there are no other alarms queued, so this commit brings symmetry to that. Signed-off-by: Esben Haabendal Cc: stable@vger.kernel.org --- drivers/rtc/interface.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index e365e8fd166db31f8b44fac9fb923d36881b1394..39db12f267cc627febb78e67400= aaf8fc3301b0c 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c @@ -617,6 +617,10 @@ int rtc_update_irq_enable(struct rtc_device *rtc, unsi= gned int enabled) rtc->uie_rtctimer.node.expires =3D ktime_add(now, onesec); rtc->uie_rtctimer.period =3D ktime_set(1, 0); err =3D rtc_timer_enqueue(rtc, &rtc->uie_rtctimer); + if (!err && rtc->ops && rtc->ops->alarm_irq_enable) + err =3D rtc->ops->alarm_irq_enable(rtc->dev.parent, 1); + if (err) + goto out; } else { rtc_timer_remove(rtc, &rtc->uie_rtctimer); } --=20 2.49.0