android_kernel_motorola_sm6375/drivers/rtc
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Esben Haabendal 524e37f785 rtc: interface: Fix long-standing race when setting alarm
commit 795cda8338eab036013314dbc0b04aae728880ab upstream.

As described in the old comment dating back to
commit 6610e0893b ("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 <esben@geanix.com>
Link: https://lore.kernel.org/r/20250516-rtc-uie-irq-fixes-v2-1-3de8e530a39e@geanix.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-10-29 13:59:53 +01:00
..
class.c rtc: Fix offset calculation for .start_secs < 0 2025-06-27 11:02:48 +01:00
dev.c
hctosys.c
interface.c rtc: interface: Fix long-standing race when setting alarm 2025-10-29 13:59:53 +01:00
Kconfig rtc: Improve performance of rtc_time64_to_tm(). Add tests. 2025-06-27 11:02:58 +01:00
lib.c rtc: Make rtc_time64_to_tm() support dates before 1970 2025-06-27 11:02:58 +01:00
lib_test.c rtc: test: Fix invalid format specifier. 2025-06-27 11:02:58 +01:00
Makefile rtc: Improve performance of rtc_time64_to_tm(). Add tests. 2025-06-27 11:02:58 +01:00
nvmem.c
proc.c
rtc-88pm80x.c
rtc-88pm860x.c
rtc-ab-b5ze-s3.c
rtc-ab-eoz9.c rtc: ab-eoz9: don't fail temperature reads on undervoltage notification 2024-12-14 19:44:41 +01:00
rtc-ab3100.c
rtc-ab8500.c
rtc-abx80x.c rtc: abx80x: Fix WDT bit position of the status register 2024-12-14 19:44:40 +01:00
rtc-ac100.c
rtc-armada38x.c
rtc-as3722.c
rtc-asm9260.c
rtc-aspeed.c
rtc-at91rm9200.c
rtc-at91rm9200.h
rtc-at91sam9.c rtc: at91sam9: fix OF node leak in probe() error path 2024-11-08 16:20:42 +01:00
rtc-au1xxx.c
rtc-bd70528.c
rtc-bq32k.c
rtc-bq4802.c
rtc-brcmstb-waketimer.c
rtc-cadence.c
rtc-cmos.c rtc: cmos: Fix return value of nvmem callbacks 2024-08-19 05:33:38 +02:00
rtc-coh901331.c
rtc-core.h
rtc-cpcap.c
rtc-cros-ec.c
rtc-da9052.c
rtc-da9055.c
rtc-da9063.c
rtc-davinci.c
rtc-digicolor.c
rtc-dm355evm.c
rtc-ds1216.c
rtc-ds1286.c
rtc-ds1302.c
rtc-ds1305.c
rtc-ds1307.c rtc: ds1307: handle oscillator stop flag (OSF) for ds1341 2025-08-28 16:21:35 +02:00
rtc-ds1343.c
rtc-ds1347.c
rtc-ds1374.c
rtc-ds1390.c
rtc-ds1511.c
rtc-ds1553.c
rtc-ds1672.c
rtc-ds1685.c rtc: ds1685: use EXPORT_SYMBOL_GPL for ds1685_rtc_poweroff 2023-09-23 10:59:36 +02:00
rtc-ds1742.c
rtc-ds2404.c
rtc-ds3232.c
rtc-efi-platform.c
rtc-efi.c
rtc-em3027.c
rtc-ep93xx.c
rtc-fm3130.c
rtc-fsl-ftm-alarm.c
rtc-ftrtc010.c
rtc-generic.c
rtc-goldfish.c
rtc-hid-sensor-time.c
rtc-hym8563.c rtc: hym8563: fix incorrect maximum clock rate handling 2025-08-28 16:21:22 +02:00
rtc-imx-sc.c
rtc-imxdi.c
rtc-isl1208.c rtc: isl1208: Fix return value of nvmem callbacks 2024-08-19 05:33:39 +02:00
rtc-isl12022.c
rtc-isl12026.c
rtc-jz4740.c
rtc-lp8788.c
rtc-lpc24xx.c
rtc-lpc32xx.c
rtc-ls1x.c
rtc-m41t80.c
rtc-m41t93.c
rtc-m41t94.c
rtc-m48t35.c
rtc-m48t59.c
rtc-m48t86.c
rtc-max6900.c
rtc-max6902.c
rtc-max6916.c
rtc-max8907.c
rtc-max8925.c
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c
rtc-mc13xxx.c
rtc-mc146818-lib.c rtc: mc146818-lib: Fix the AltCentury for AMD platforms 2022-05-25 09:14:32 +02:00
rtc-mcp795.c
rtc-meson-vrtc.c rtc: meson-vrtc: Use ktime_get_real_ts64() to get the current time 2023-05-17 11:35:51 +02:00
rtc-meson.c
rtc-moxart.c
rtc-mpc5121.c
rtc-mrst.c
rtc-msm6242.c
rtc-mt6397.c rtc: mt6397: check return value after calling platform_get_resource() 2022-06-14 18:11:53 +02:00
rtc-mt7622.c
rtc-mv.c
rtc-mxc.c
rtc-mxc_v2.c rtc: mxc_v2: Add missing clk_disable_unprepare() 2023-01-18 11:41:32 +01:00
rtc-omap.c rtc: omap: include header for omap_rtc_power_off_program prototype 2023-05-17 11:35:51 +02:00
rtc-opal.c
rtc-palmas.c
rtc-pcap.c
rtc-pcf2123.c
rtc-pcf2127.c
rtc-pcf8523.c
rtc-pcf8563.c rtc: pcf8563: fix incorrect maximum clock rate handling 2025-08-28 16:21:22 +02:00
rtc-pcf8583.c
rtc-pcf50633.c
rtc-pcf85063.c rtc: pcf85063: fix potential OOB write in PCF85063 NVMEM read 2025-03-13 12:42:59 +01:00
rtc-pcf85363.c rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call 2023-11-20 10:30:14 +01:00
rtc-pic32.c rtc: pic32: Move devm_rtc_allocate_device earlier in pic32_rtc_probe() 2023-01-18 11:41:31 +01:00
rtc-pl030.c
rtc-pl031.c
rtc-pm8xxx.c rtc: pm8xxx: fix set-alarm race 2023-03-11 16:43:58 +01:00
rtc-ps3.c
rtc-puv3.c
rtc-pxa.c rtc: pxa: fix null pointer dereference 2022-01-27 09:19:53 +01:00
rtc-r7301.c
rtc-r9701.c
rtc-rc5t583.c
rtc-rk808.c
rtc-rp5c01.c
rtc-rs5c313.c
rtc-rs5c348.c
rtc-rs5c372.c
rtc-rtd119x.c
rtc-rv3028.c
rtc-rv3029c2.c
rtc-rv8803.c
rtc-rx4581.c
rtc-rx6110.c
rtc-rx8010.c
rtc-rx8025.c
rtc-rx8581.c
rtc-s3c.c
rtc-s3c.h
rtc-s5m.c
rtc-s35390a.c
rtc-sa1100.c
rtc-sa1100.h
rtc-sc27xx.c
rtc-sd3078.c
rtc-sh.c rtc: sh: assign correct interrupts with DT 2025-06-27 11:02:48 +01:00
rtc-sirfsoc.c
rtc-snvs.c rtc: snvs: Allow a time difference on clock register read 2023-01-18 11:41:29 +01:00
rtc-spear.c
rtc-st-lpc.c rtc: st-lpc: Use IRQF_NO_AUTOEN flag in request_irq() 2024-12-14 19:44:40 +01:00
rtc-starfire.c
rtc-stk17ta8.c
rtc-stm32.c
rtc-stmp3xxx.c
rtc-sun4v.c
rtc-sun6i.c rtc: sun6i: Always export the internal oscillator 2023-03-11 16:44:13 +01:00
rtc-sunxi.c
rtc-tegra.c
rtc-test.c
rtc-tps6586x.c
rtc-tps65910.c
rtc-tps80031.c
rtc-twl.c
rtc-tx4939.c
rtc-v3020.c
rtc-vr41xx.c
rtc-vt8500.c
rtc-wilco-ec.c
rtc-wm831x.c
rtc-wm8350.c rtc: wm8350: Handle error for wm8350_register_irq 2022-04-15 14:18:31 +02:00
rtc-x1205.c rtc: x1205: Fix Xicor X1205 vendor prefix 2025-10-29 13:59:50 +01:00
rtc-xgene.c
rtc-zynqmp.c
sysfs.c
systohc.c