From: Johan Hovold <johan@kernel.org>
To: David Collins <quic_collinsd@quicinc.com>
Cc: Johan Hovold <johan+linaro@kernel.org>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Bjorn Andersson <andersson@kernel.org>,
Andy Gross <agross@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Alessandro Zummo <a.zummo@towertech.it>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Maximilian Luz <luzmaximilian@gmail.com>,
linux-arm-msm@vger.kernel.org, linux-rtc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org
Subject: Re: [PATCH v2 01/22] rtc: pm8xxx: fix set-alarm race
Date: Tue, 7 Feb 2023 16:13:35 +0100 [thread overview]
Message-ID: <Y+Jqn5/Yt0BaitQd@hovoldconsulting.com> (raw)
In-Reply-To: <efab844a-4ffe-bc68-d99e-8688ad222e3a@quicinc.com>
On Mon, Feb 06, 2023 at 07:12:43PM -0800, David Collins wrote:
> On 2/2/23 07:54, Johan Hovold wrote:
> > Make sure to disable the alarm before updating the four alarm time
> > registers to avoid spurious alarms during the update.
>
> What scenario can encounter a spurious alarm triggering upon writing the
> new alarm time inside of pm8xxx_rtc_set_alarm()?
The alarm is stored in four bytes in little-endian order. Consider
having had an alarm set and expired at:
00 01 00 00
and now you want to set an alarm at
01 02 00 00
Unless the alarm is disabled before the update the alarm could go off at
01 01 00 00
after updating the first byte.
> > Note that the disable needs to be done outside of the ctrl_reg_lock
> > section to prevent a racing alarm interrupt from disabling the newly set
> > alarm when the lock is released.
>
> What scenario shows the IRQ race issue that you mentioned? How does not
> protecting this register write with a lock avoid the race condition?
If a previously set alarm goes off after disabling interrupts but before
disabling the alarm inside the critical section, then that interrupt
could be serviced as soon as interrupts are re-enabled and the handler
would disable the newly set alarm.
> > Fixes: 9a9a54ad7aa2 ("drivers/rtc: add support for Qualcomm PMIC8xxx RTC")
> > Cc: stable@vger.kernel.org # 3.1
> > Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
> > ---
> > drivers/rtc/rtc-pm8xxx.c | 24 ++++++++++--------------
> > 1 file changed, 10 insertions(+), 14 deletions(-)
>
> Note that since locking is removed later in the patch series, my
> questions above are mainly for the sake of curiosity.
Johan
next prev parent reply other threads:[~2023-02-07 15:13 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-02 15:54 [PATCH v2 00/22] rtc: pm8xxx: add support for setting time using nvmem Johan Hovold
2023-02-02 15:54 ` [PATCH v2 01/22] rtc: pm8xxx: fix set-alarm race Johan Hovold
2023-02-07 3:12 ` David Collins
2023-02-07 15:13 ` Johan Hovold [this message]
2023-02-07 15:56 ` Johan Hovold
2023-02-02 15:54 ` [PATCH v2 02/22] rtc: pm8xxx: drop spmi error messages Johan Hovold
2023-02-02 15:54 ` [PATCH v2 03/22] rtc: pm8xxx: use regmap_update_bits() Johan Hovold
2023-02-07 3:14 ` David Collins
2023-02-02 15:54 ` [PATCH v2 04/22] rtc: pm8xxx: drop bogus locking Johan Hovold
2023-02-07 3:14 ` David Collins
2023-02-02 15:54 ` [PATCH v2 05/22] rtc: pm8xxx: return IRQ_NONE on errors Johan Hovold
2023-02-02 15:54 ` [PATCH v2 06/22] rtc: pm8xxx: drop unused register defines Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-07 15:16 ` Johan Hovold
2023-02-02 15:54 ` [PATCH v2 07/22] rtc: pm8xxx: use unaligned le32 helpers Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-02 15:54 ` [PATCH v2 08/22] rtc: pm8xxx: clean up time and alarm debugging Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-02 15:54 ` [PATCH v2 09/22] rtc: pm8xxx: rename struct device pointer Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-02 15:54 ` [PATCH v2 10/22] rtc: pm8xxx: rename alarm irq variable Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-02 15:54 ` [PATCH v2 11/22] rtc: pm8xxx: clean up comments Johan Hovold
2023-02-07 3:15 ` David Collins
2023-02-02 15:54 ` [PATCH v2 12/22] rtc: pm8xxx: use u32 for timestamps Johan Hovold
2023-02-02 15:54 ` [PATCH v2 13/22] rtc: pm8xxx: refactor read_time() Johan Hovold
2023-02-07 3:16 ` David Collins
2023-02-07 15:20 ` Johan Hovold
2023-02-02 15:54 ` [PATCH v2 14/22] rtc: pm8xxx: clean up local declarations Johan Hovold
2023-02-07 3:16 ` David Collins
2023-02-02 15:54 ` [PATCH v2 15/22] rtc: pm8xxx: drop error messages Johan Hovold
2023-02-02 15:54 ` [PATCH v2 16/22] dt-bindings: rtc: qcom-pm8xxx: add nvmem-cell offset Johan Hovold
2023-02-07 3:16 ` David Collins
2023-02-07 15:24 ` Johan Hovold
2023-02-10 22:48 ` Alexandre Belloni
2023-02-11 8:22 ` Johan Hovold
2023-02-11 16:44 ` Alexandre Belloni
2023-02-15 16:51 ` Johan Hovold
2023-02-24 8:21 ` Johan Hovold
2023-02-24 9:18 ` Alexandre Belloni
2023-02-24 9:24 ` Johan Hovold
2023-02-02 15:54 ` [PATCH v2 17/22] rtc: pm8xxx: add support for nvmem offset Johan Hovold
2023-02-03 3:31 ` Konrad Dybcio
2023-02-03 7:22 ` Johan Hovold
2023-02-07 3:16 ` David Collins
2023-02-07 15:36 ` Johan Hovold
2023-02-02 15:54 ` [PATCH v2 18/22] arm64: defconfig: enable Qualcomm SDAM nvmem driver Johan Hovold
2023-02-03 9:31 ` Krzysztof Kozlowski
2023-02-02 15:54 ` [PATCH v2 19/22] arm64: dts: qcom: sc8280xp-pmics: add pmk8280 rtc Johan Hovold
2023-02-02 15:54 ` [PATCH v2 20/22] arm64: dts: qcom: sc8280xp-pmics: add pmk8280 sdam nvram Johan Hovold
2023-02-02 15:54 ` [PATCH v2 21/22] arm64: dts: qcom: sc8280xp-crd: enable rtc Johan Hovold
2023-02-02 15:54 ` [PATCH v2 22/22] arm64: dts: qcom: sc8280xp-x13s: " Johan Hovold
2023-02-09 4:22 ` (subset) [PATCH v2 00/22] rtc: pm8xxx: add support for setting time using nvmem Bjorn Andersson
2023-02-09 22:25 ` Alexandre Belloni
2023-02-10 7:53 ` Johan Hovold
2023-02-10 9:04 ` Alexandre Belloni
2023-02-10 9:14 ` Johan Hovold
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y+Jqn5/Yt0BaitQd@hovoldconsulting.com \
--to=johan@kernel.org \
--cc=a.zummo@towertech.it \
--cc=agross@kernel.org \
--cc=alexandre.belloni@bootlin.com \
--cc=andersson@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=johan+linaro@kernel.org \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rtc@vger.kernel.org \
--cc=luzmaximilian@gmail.com \
--cc=quic_collinsd@quicinc.com \
--cc=robh+dt@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®