* [PATCH v3 02/12] rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt [not found] <20260706175138.12587-1-prabhakar.mahadev-lad.rj@bp.renesas.com> @ 2026-07-06 17:51 ` Prabhakar 2026-08-18 7:43 ` Wolfram Sang 2026-07-06 17:51 ` [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary Prabhakar 1 sibling, 1 reply; 5+ messages in thread From: Prabhakar @ 2026-07-06 17:51 UTC (permalink / raw) To: Miquel Raynal, Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven, Magnus Damm, Wolfram Sang Cc: linux-rtc, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar, stable From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Check for -EPROBE_DEFER from platform_get_irq_byname_optional() and handle the deferred probe request properly. Although the "pps" interrupt is optional, an error code of -EPROBE_DEFER indicates that the interrupt subsystem is not yet ready. Intercept this specific error condition, assign it to the return value, and jump to the dis_runtime_pm label to avoid ignoring a valid probe deferral. Fixes: eea7791e00f33 ("rtc: rzn1: implement one-second accuracy for alarms") Cc: stable@vger.kernel.org Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- v2->v3: - No changes v1->v2: - No changes --- drivers/rtc/rtc-rzn1.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/rtc/rtc-rzn1.c b/drivers/rtc/rtc-rzn1.c index 305f10a8a85b..aa27ad7f5941 100644 --- a/drivers/rtc/rtc-rzn1.c +++ b/drivers/rtc/rtc-rzn1.c @@ -464,6 +464,10 @@ static int rzn1_rtc_probe(struct platform_device *pdev) } irq = platform_get_irq_byname_optional(pdev, "pps"); + if (irq == -EPROBE_DEFER) { + ret = irq; + goto dis_runtime_pm; + } if (irq >= 0) ret = devm_request_irq(&pdev->dev, irq, rzn1_rtc_1s_irq, 0, "RZN1 RTC 1s", rtc); -- 2.54.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 02/12] rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt 2026-07-06 17:51 ` [PATCH v3 02/12] rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt Prabhakar @ 2026-08-18 7:43 ` Wolfram Sang 0 siblings, 0 replies; 5+ messages in thread From: Wolfram Sang @ 2026-08-18 7:43 UTC (permalink / raw) To: Prabhakar Cc: Miquel Raynal, Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven, Magnus Damm, linux-rtc, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar, stable [-- Attachment #1: Type: text/plain, Size: 798 bytes --] On Mon, Jul 06, 2026 at 06:51:28PM +0100, Prabhakar wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > Check for -EPROBE_DEFER from platform_get_irq_byname_optional() and handle > the deferred probe request properly. > > Although the "pps" interrupt is optional, an error code of -EPROBE_DEFER > indicates that the interrupt subsystem is not yet ready. Intercept this > specific error condition, assign it to the return value, and jump to the > dis_runtime_pm label to avoid ignoring a valid probe deferral. > > Fixes: eea7791e00f33 ("rtc: rzn1: implement one-second accuracy for alarms") > Cc: stable@vger.kernel.org > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary [not found] <20260706175138.12587-1-prabhakar.mahadev-lad.rj@bp.renesas.com> 2026-07-06 17:51 ` [PATCH v3 02/12] rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt Prabhakar @ 2026-07-06 17:51 ` Prabhakar 2026-08-18 10:10 ` Wolfram Sang 1 sibling, 1 reply; 5+ messages in thread From: Prabhakar @ 2026-07-06 17:51 UTC (permalink / raw) To: Miquel Raynal, Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven, Magnus Damm, Wolfram Sang Cc: linux-rtc, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar, stable From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> In rzn1_rtc_set_alarm(), the driver attempts to calculate the weekday for an alarm by computing the day delta between the alarm time and the current time: days_ahead = tm->tm_mday - tm_now.tm_mday; wday = (tm_now.tm_wday + days_ahead) % 7; However, if an alarm is scheduled for the beginning of the next month while the current time is at the end of the month (e.g., current day is 31, alarm day is 1), `tm->tm_mday - tm_now.tm_mday` results in a negative value (-30). Since `days_ahead` is an unsigned int, this underflows to a large positive number, leading to an incorrect `wday` being written to the RZN1_RTC_ALW register. As a result, the alarm fails to fire. Fix this by utilizing the already computed `alarm` time64_t timestamp. Convert it back into an rtc_time struct via rtc_time64_to_tm(), which automatically handles month boundaries and correctly populates the `tm_wday` field. Fixes: b5ad1bf00d2c4 ("rtc: rzn1: Add alarm support") Cc: stable@vger.kernel.org Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> --- v2->v3: - New patch to fix weekday underflow when alarm crosses month boundary. --- drivers/rtc/rtc-rzn1.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/rtc/rtc-rzn1.c b/drivers/rtc/rtc-rzn1.c index aa27ad7f5941..3c83f95c18c4 100644 --- a/drivers/rtc/rtc-rzn1.c +++ b/drivers/rtc/rtc-rzn1.c @@ -260,7 +260,8 @@ static int rzn1_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) struct rzn1_rtc *rtc = dev_get_drvdata(dev); struct rtc_time *tm = &alrm->time, tm_now; unsigned long alarm, farest; - unsigned int days_ahead, wday; + struct rtc_time alarm_tm; + unsigned int wday; int ret; ret = rzn1_rtc_read_time(dev, &tm_now); @@ -274,8 +275,8 @@ static int rzn1_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) return -ERANGE; /* Convert alarm day into week day */ - days_ahead = tm->tm_mday - tm_now.tm_mday; - wday = (tm_now.tm_wday + days_ahead) % 7; + rtc_time64_to_tm(alarm, &alarm_tm); + wday = alarm_tm.tm_wday; writel(bin2bcd(tm->tm_min), rtc->base + RZN1_RTC_ALM); writel(bin2bcd(tm->tm_hour), rtc->base + RZN1_RTC_ALH); -- 2.54.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary 2026-07-06 17:51 ` [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary Prabhakar @ 2026-08-18 10:10 ` Wolfram Sang 2026-08-18 14:35 ` Lad, Prabhakar 0 siblings, 1 reply; 5+ messages in thread From: Wolfram Sang @ 2026-08-18 10:10 UTC (permalink / raw) To: Prabhakar Cc: Miquel Raynal, Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven, Magnus Damm, linux-rtc, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar, stable [-- Attachment #1: Type: text/plain, Size: 1693 bytes --] On Mon, Jul 06, 2026 at 06:51:29PM +0100, Prabhakar wrote: > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > In rzn1_rtc_set_alarm(), the driver attempts to calculate the weekday > for an alarm by computing the day delta between the alarm time and the > current time: > > days_ahead = tm->tm_mday - tm_now.tm_mday; > wday = (tm_now.tm_wday + days_ahead) % 7; > > However, if an alarm is scheduled for the beginning of the next month > while the current time is at the end of the month (e.g., current day is > 31, alarm day is 1), `tm->tm_mday - tm_now.tm_mday` results in a negative > value (-30). Since `days_ahead` is an unsigned int, this underflows to a > large positive number, leading to an incorrect `wday` being written to > the RZN1_RTC_ALW register. As a result, the alarm fails to fire. > > Fix this by utilizing the already computed `alarm` time64_t timestamp. > Convert it back into an rtc_time struct via rtc_time64_to_tm(), which > automatically handles month boundaries and correctly populates the > `tm_wday` field. > > Fixes: b5ad1bf00d2c4 ("rtc: rzn1: Add alarm support") > Cc: stable@vger.kernel.org > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> These messages look a bit LLM-generated. Is this true? What about the code? > - days_ahead = tm->tm_mday - tm_now.tm_mday; > - wday = (tm_now.tm_wday + days_ahead) % 7; > + rtc_time64_to_tm(alarm, &alarm_tm); This conversion is superfluous, we already have 'tm'? So, I think we can skip the whole conversion block here and use? writel(BIT(tm->tm_wday), rtc->base + RZN1_RTC_ALW); Only lightly tested, please double check. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary 2026-08-18 10:10 ` Wolfram Sang @ 2026-08-18 14:35 ` Lad, Prabhakar 0 siblings, 0 replies; 5+ messages in thread From: Lad, Prabhakar @ 2026-08-18 14:35 UTC (permalink / raw) To: Wolfram Sang Cc: Miquel Raynal, Alexandre Belloni, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven, Magnus Damm, linux-rtc, linux-renesas-soc, devicetree, linux-kernel, Prabhakar, Biju Das, Fabrizio Castro, Lad Prabhakar, stable Hi Wolfram, Thank you for the review. On Tue, Aug 18, 2026 at 11:10 AM Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > > On Mon, Jul 06, 2026 at 06:51:29PM +0100, Prabhakar wrote: > > From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > > > In rzn1_rtc_set_alarm(), the driver attempts to calculate the weekday > > for an alarm by computing the day delta between the alarm time and the > > current time: > > > > days_ahead = tm->tm_mday - tm_now.tm_mday; > > wday = (tm_now.tm_wday + days_ahead) % 7; > > > > However, if an alarm is scheduled for the beginning of the next month > > while the current time is at the end of the month (e.g., current day is > > 31, alarm day is 1), `tm->tm_mday - tm_now.tm_mday` results in a negative > > value (-30). Since `days_ahead` is an unsigned int, this underflows to a > > large positive number, leading to an incorrect `wday` being written to > > the RZN1_RTC_ALW register. As a result, the alarm fails to fire. > > > > Fix this by utilizing the already computed `alarm` time64_t timestamp. > > Convert it back into an rtc_time struct via rtc_time64_to_tm(), which > > automatically handles month boundaries and correctly populates the > > `tm_wday` field. > > > > Fixes: b5ad1bf00d2c4 ("rtc: rzn1: Add alarm support") > > Cc: stable@vger.kernel.org > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> > > These messages look a bit LLM-generated. Is this true? What about the > code? > Yes the commit message was fine tuned by an LLM, but not the code. > > - days_ahead = tm->tm_mday - tm_now.tm_mday; > > - wday = (tm_now.tm_wday + days_ahead) % 7; > > + rtc_time64_to_tm(alarm, &alarm_tm); > > This conversion is superfluous, we already have 'tm'? So, I think we can > skip the whole conversion block here and use? > > writel(BIT(tm->tm_wday), rtc->base + RZN1_RTC_ALW); > > Only lightly tested, please double check. > Yes it does the trick. I tested with the below script: #!/bin/sh set -x DEV=/dev/rtc0 for d in "2026-08-31 23:58:00" "2026-04-30 23:58:00" "2028-02-28 23:58:00" "2027-02-27 23:58:00"; do echo "=== Testing boundary at: $d ===" hwclock --set --date="$d" -f $DEV hwclock -f $DEV --hctosys # -m mem/standby would actually suspend the board, which is disruptive # in an automated test loop. Instead, block on the alarm IRQ directly # via select(2) on the rtc fd -- this is what confirms the alarm # actually asserts, not just that it was armed. timeout 150 rtcwake -m on -d $DEV -s 130 echo "exit: $?" done Without the fix I get timeouts as expected. Cheers, Prabhakar ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-18 14:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260706175138.12587-1-prabhakar.mahadev-lad.rj@bp.renesas.com>
2026-07-06 17:51 ` [PATCH v3 02/12] rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt Prabhakar
2026-08-18 7:43 ` Wolfram Sang
2026-07-06 17:51 ` [PATCH v3 03/12] rtc: rzn1: fix weekday underflow when alarm crosses month boundary Prabhakar
2026-08-18 10:10 ` Wolfram Sang
2026-08-18 14:35 ` Lad, Prabhakar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox