Re: [PATCH v5 0/9] rtc-cmos,rtc-mc146818-lib: fixes

From: Alexandre Belloni
Date: Fri Jan 07 2022 - 08:03:19 EST


Hi,

On 07/01/2022 13:49:25+0100, Mateusz Jończyk wrote:
> Hello,
>
> This patch series fixes some issues in the RTC CMOS handling code:
>
> 1. A missing spin_lock_irq() / spin_unlock_irq() pair in cmos_set_alarm().
> 2. A failing presence check of the RTC: the clock was misdetected as
> broken since Linux 5.11 on one of our home systems.
> 3. Do not touch the RTC alarm registers when the RTC update is in
> progress. (On some Intel chipsets, this causes bogus values being
> read or writes to fail silently.)
>
> This is my first patch series, so please review carefully.
>
> v2: Drop the last patch:
> Revert "rtc: cmos: Replace spin_lock_irqsave with spin_lock in hard IRQ"
> which was made obsolete by mainlining of
> commit 13be2efc390a ("rtc: cmos: Disable irq around direct invocation of cmos_interrupt()")
>
> v3: Rework solution to problem 3 (I'd like to thank Greg KH for comment),
> drop x86 refactoring patches (I'll send them later).
>
> v4: Fixed some issues pointed out by Mr Alexandre Belloni:
> - do not add strings to rtc-mc146818-lib.c - I moved the error printing
> code to callers of mc146818_get_time(). This resulted in two new
> patches in the series,
> - other small issues.
>
> v5: Increase maximum accepted duration of the UIP high pulse from 10 to 20ms,
> in case there are some very slow chips out there.
>
> Note: this may cause problems with hpet_rtc_interrupt() if the CMOS
> RTC stops working while the system is running and RTC update
> interrupt / RTC alarm interrupt is enabled (which should be rare).
> In this case, hpet_rtc_interrupt() is executed 64 times per second
> and takes up to 20ms to complete - which may constantly occupy
> one CPU. I am not sure if this is likely enough to implement
> special handling of this case in hpet_rtc_interrupt().
>

Because v4 has been applied, you'd have to send a series against
rtc-next.

--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com