From: Geert Uytterhoeven <geert+renesas@glider.be>
To: Stephen Boyd <sboyd@kernel.org>,
Tomasz Figa <tomasz.figa@gmail.com>,
Sylwester Nawrocki <s.nawrocki@samsung.com>,
Will Deacon <will@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Dejin Zheng <zhengdejin5@gmail.com>,
Kai-Heng Feng <kai.heng.feng@canonical.com>,
Nicholas Piggin <npiggin@gmail.com>,
Heiko Carstens <hca@linux.ibm.com>,
Peter Zijlstra <peterz@infradead.org>,
Russell King <linux@armlinux.org.uk>,
John Stultz <jstultz@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
Tony Lindgren <tony@atomide.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
Tero Kristo <tero.kristo@linux.intel.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
Vincent Guittot <vincent.guittot@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
linux-renesas-soc@vger.kernel.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org,
Geert Uytterhoeven <geert+renesas@glider.be>
Subject: [PATCH v2 0/2] iopoll: Busy loop and timeout improvements
Date: Wed, 10 May 2023 15:23:12 +0200 [thread overview]
Message-ID: <cover.1683722688.git.geert+renesas@glider.be> (raw)
Hi all,
When implementing a polling loop, a common review comment is to use one
of the read*_poll_timeout*() helpers. Unfortunately this is not always
possible, or might introduce subtle bugs. This patch series aims to
improve these helpers, so they can gain wider use.
1. The first patch improves busy-looping behavior of both the atomic
and non-atomic read*_poll_timeout*() helpers.
The issue addressed by this patch was discussed before[1-2], but I
am not aware of any patches moving forward.
2. The second patch fixes timeout handling of the atomic variants.
Some of the issues addressed by this patch were mitigated in
various places[3-5], and some of these findings may of interest to
the authors of [6-8].
The first patch was sent before, and already received some acks, but I
hadn't queued it yet as a depedency for more read*_poll_timeout*() use,
because I ran into the issue fixed by the second patch.
Changes compared to v1[9]:
- Add Acked-by,
- Add compiler barrier and inlining explanation (thanks, Peter!),
- Add patch [2/2].
Thanks for your comments!
[1] "Re: [PATCH 6/7] clk: renesas: rcar-gen3: Add custom clock for PLLs"
https://lore.kernel.org/all/CAMuHMdWUEhs=nwP+a0vO2jOzkq-7FEOqcJ+SsxAGNXX1PQ2KMA@mail.gmail.com
[2] "Re: [PATCH v2] clk: samsung: Prevent potential endless loop in the
PLL set_rate ops"
https://lore.kernel.org/all/20200811164628.GA7958@kozik-lap
[3] b3e9431854e8f305 ("bus: ti-sysc: Fix timekeeping_suspended warning
on resume")
[4] 44a9e78f9242872c ("clk: samsung: Prevent potential endless loop in
the PLL ops")
[5] 3d8598fb9c5a7783 ("clk: ti: clkctrl: use fallback udelay approach if
timekeeping is suspended")
[6] bd40cbb0e3b37a4d ("PM: domains: Move genpd's time-accounting to
ktime_get_mono_fast_ns()")
[7] c155f6499f9797f2 ("PM-runtime: Switch accounting over to
ktime_get_mono_fast_ns()")
[8] 15efb47dc560849d ("PM-runtime: Fix deadlock with ktime_get()")
[9] https://lore.kernel.org/r/8d492ee4a391bd089a01c218b0b4e05cf8ea593c.1674729407.git.geert+renesas@glider.be/
Geert Uytterhoeven (2):
iopoll: Call cpu_relax() in busy loops
iopoll: Do not use timekeeping in read_poll_timeout_atomic()
include/linux/iopoll.h | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
--
2.34.1
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
next reply other threads:[~2023-05-10 13:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-10 13:23 Geert Uytterhoeven [this message]
2023-05-10 13:23 ` [PATCH v2 1/2] iopoll: Call cpu_relax() in busy loops Geert Uytterhoeven
2023-05-11 6:48 ` Tony Lindgren
2023-05-11 10:48 ` David Laight
2023-05-23 7:29 ` Geert Uytterhoeven
2023-05-23 8:55 ` David Laight
2023-05-11 9:48 ` Ulf Hansson
2023-05-10 13:23 ` [PATCH v2 2/2] iopoll: Do not use timekeeping in read_poll_timeout_atomic() Geert Uytterhoeven
2023-05-10 13:35 ` Arnd Bergmann
2023-05-10 13:46 ` Geert Uytterhoeven
2023-05-10 13:56 ` Arnd Bergmann
2023-05-11 6:48 ` Tony Lindgren
2023-05-11 10:26 ` Ulf Hansson
2023-05-11 12:44 ` Geert Uytterhoeven
2023-05-12 7:53 ` Ulf Hansson
2023-05-12 8:03 ` Geert Uytterhoeven
2023-05-15 9:26 ` Ulf Hansson
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=cover.1683722688.git.geert+renesas@glider.be \
--to=geert+renesas@glider.be \
--cc=arnd@arndb.de \
--cc=hca@linux.ibm.com \
--cc=jstultz@google.com \
--cc=kai.heng.feng@canonical.com \
--cc=krzk@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=npiggin@gmail.com \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=s.nawrocki@samsung.com \
--cc=sboyd@kernel.org \
--cc=tero.kristo@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=tomasz.figa@gmail.com \
--cc=tony@atomide.com \
--cc=ulf.hansson@linaro.org \
--cc=vincent.guittot@linaro.org \
--cc=will@kernel.org \
--cc=wsa+renesas@sang-engineering.com \
--cc=zhengdejin5@gmail.com \
/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