* [PATCH v2 00/15] timers: Cleanup delay/sleep related mess
@ 2024-09-11 5:13 Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 04/15] timers: Rename usleep_idle_range() to usleep_range_idle() Anna-Maria Behnsen
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Anna-Maria Behnsen @ 2024-09-11 5:13 UTC (permalink / raw)
To: Frederic Weisbecker, Thomas Gleixner, Jonathan Corbet
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Anna-Maria Behnsen,
Andrew Morton, damon, linux-mm, SeongJae Park, Arnd Bergmann,
linux-arch, Heiner Kallweit, David S. Miller, Andy Whitcroft,
Joe Perches, Dwaipayan Ray, Liam Girdwood, Mark Brown,
Andrew Lunn, Jaroslav Kysela, Takashi Iwai, netdev, linux-sound,
Michael Ellerman, Nathan Lynch, linuxppc-dev,
Mauro Carvalho Chehab, linux-media
Hi,
a question about which sleeping function should be used in acpi_os_sleep()
started a discussion and examination about the existing documentation and
implementation of functions which insert a sleep/delay.
The result of the discussion was, that the documentation is outdated and
the implemented fsleep() reflects the outdated documentation but doesn't
help to reflect reality which in turns leads to the queue which covers the
following things:
- Split out all timeout and sleep related functions from hrtimer.c and timer.c
into a separate file
- Update function descriptions of sleep related functions
- Change fsleep() to reflect reality
- Rework all comments or users which obviously rely on the outdated
documentation as they reference "Documentation/timers/timers-howto.rst"
- Last but not least (as there are no more references): Update the outdated
documentation and move it into a file with a self explaining file name
The queue is available here and applies on top of tip/timers/core:
git://git.kernel.org/pub/scm/linux/kernel/git/anna-maria/linux-devel.git timers/misc
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
---
Changes in v2:
- change udelay() and ndelay() as suggested by Thomas
- Update some formatting in the new sleep_timeout.c file
- minor typo changes and other small review remarks
Thanks,
Anna-Maria
---
Anna-Maria Behnsen (15):
MAINTAINERS: Add missing file include/linux/delay.h
timers: Move *sleep*() and timeout functions into a separate file
timers: Update schedule_[hr]timeout*() related function descriptions
timers: Rename usleep_idle_range() to usleep_range_idle()
timers: Update function descriptions of sleep/delay related functions
delay: Rework udelay and ndelay
timers: Adjust flseep() to reflect reality
mm/damon/core: Use generic upper bound recommondation for usleep_range()
timers: Add a warning to usleep_range_state() for wrong order of arguments
checkpatch: Remove broken sleep/delay related checks
regulator: core: Use fsleep() to get best sleep mechanism
iopoll/regmap/phy/snd: Fix comment referencing outdated timer documentation
powerpc/rtas: Use fsleep() to minimize additional sleep duration
media: anysee: Fix link to outdated sleep function documentation
timers/Documentation: Cleanup delay/sleep documentation
Documentation/dev-tools/checkpatch.rst | 6 -
Documentation/timers/delay_sleep_functions.rst | 122 ++++++++
Documentation/timers/index.rst | 2 +-
Documentation/timers/timers-howto.rst | 115 --------
MAINTAINERS | 2 +
arch/powerpc/kernel/rtas.c | 21 +-
drivers/media/usb/dvb-usb-v2/anysee.c | 6 +-
drivers/regulator/core.c | 47 +---
include/asm-generic/delay.h | 95 +++++--
include/linux/delay.h | 79 ++++--
include/linux/iopoll.h | 52 ++--
include/linux/phy.h | 9 +-
include/linux/regmap.h | 38 +--
kernel/time/Makefile | 2 +-
kernel/time/hrtimer.c | 120 --------
kernel/time/sleep_timeout.c | 376 +++++++++++++++++++++++++
kernel/time/timer.c | 192 -------------
mm/damon/core.c | 5 +-
scripts/checkpatch.pl | 38 ---
sound/soc/sof/ops.h | 8 +-
20 files changed, 701 insertions(+), 634 deletions(-)
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 04/15] timers: Rename usleep_idle_range() to usleep_range_idle()
2024-09-11 5:13 [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Anna-Maria Behnsen
@ 2024-09-11 5:13 ` Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range() Anna-Maria Behnsen
2024-09-16 20:20 ` [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Christophe JAILLET
2 siblings, 0 replies; 8+ messages in thread
From: Anna-Maria Behnsen @ 2024-09-11 5:13 UTC (permalink / raw)
To: Frederic Weisbecker, Thomas Gleixner, Jonathan Corbet
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Anna-Maria Behnsen,
Andrew Morton, damon, linux-mm, SeongJae Park
usleep_idle_range() is a variant of usleep_range(). Both are using
usleep_range_state() as a base. To be able to find all the related
functions in one go, rename it usleep_idle_range() to usleep_range_idle().
No functional change.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: damon@lists.linux.dev
Cc: linux-mm@kvack.org
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Reviewed-by: SeongJae Park <sj@kernel.org>
---
v2: Fix typos in commit message
---
include/linux/delay.h | 2 +-
mm/damon/core.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/delay.h b/include/linux/delay.h
index ff9cda975e30..2bc586aa2068 100644
--- a/include/linux/delay.h
+++ b/include/linux/delay.h
@@ -68,7 +68,7 @@ static inline void usleep_range(unsigned long min, unsigned long max)
usleep_range_state(min, max, TASK_UNINTERRUPTIBLE);
}
-static inline void usleep_idle_range(unsigned long min, unsigned long max)
+static inline void usleep_range_idle(unsigned long min, unsigned long max)
{
usleep_range_state(min, max, TASK_IDLE);
}
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 7a87628b76ab..94fe2f1f9b0e 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1887,7 +1887,7 @@ static void kdamond_usleep(unsigned long usecs)
if (usecs > 20 * USEC_PER_MSEC)
schedule_timeout_idle(usecs_to_jiffies(usecs));
else
- usleep_idle_range(usecs, usecs + 1);
+ usleep_range_idle(usecs, usecs + 1);
}
/* Returns negative error code if it's not activated but should return */
--
2.39.2
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range()
2024-09-11 5:13 [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 04/15] timers: Rename usleep_idle_range() to usleep_range_idle() Anna-Maria Behnsen
@ 2024-09-11 5:13 ` Anna-Maria Behnsen
2024-10-09 12:01 ` Frederic Weisbecker
2024-09-16 20:20 ` [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Christophe JAILLET
2 siblings, 1 reply; 8+ messages in thread
From: Anna-Maria Behnsen @ 2024-09-11 5:13 UTC (permalink / raw)
To: Frederic Weisbecker, Thomas Gleixner, Jonathan Corbet
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Anna-Maria Behnsen,
SeongJae Park, Andrew Morton, damon, linux-mm
The upper bound for usleep_range_idle() was taken from the outdated
documentation. As a recommondation for the upper bound of usleep_range()
depends on HZ configuration it is not possible to hard code it.
Use the define "USLEEP_RANGE_UPPER_BOUND" instead.
Cc: SeongJae Park <sj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: damon@lists.linux.dev
Cc: linux-mm@kvack.org
Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Reviewed-by: SeongJae Park <sj@kernel.org>
---
mm/damon/core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/mm/damon/core.c b/mm/damon/core.c
index 94fe2f1f9b0e..4b971871da75 100644
--- a/mm/damon/core.c
+++ b/mm/damon/core.c
@@ -1883,8 +1883,7 @@ static unsigned long damos_wmark_wait_us(struct damos *scheme)
static void kdamond_usleep(unsigned long usecs)
{
- /* See Documentation/timers/timers-howto.rst for the thresholds */
- if (usecs > 20 * USEC_PER_MSEC)
+ if (usecs >= USLEEP_RANGE_UPPER_BOUND)
schedule_timeout_idle(usecs_to_jiffies(usecs));
else
usleep_range_idle(usecs, usecs + 1);
--
2.39.2
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/15] timers: Cleanup delay/sleep related mess
2024-09-11 5:13 [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 04/15] timers: Rename usleep_idle_range() to usleep_range_idle() Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range() Anna-Maria Behnsen
@ 2024-09-16 20:20 ` Christophe JAILLET
2024-09-17 5:22 ` Christophe JAILLET
2024-10-02 15:02 ` Thomas Gleixner
2 siblings, 2 replies; 8+ messages in thread
From: Christophe JAILLET @ 2024-09-16 20:20 UTC (permalink / raw)
To: Frederic Weisbecker, Thomas Gleixner, Jonathan Corbet,
Anna-Maria Behnsen
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Anna-Maria Behnsen,
Andrew Morton, damon, linux-mm, SeongJae Park, Arnd Bergmann,
linux-arch, Heiner Kallweit, David S. Miller, Andy Whitcroft,
Joe Perches, Dwaipayan Ray, Liam Girdwood, Mark Brown,
Andrew Lunn, Jaroslav Kysela, Takashi Iwai, netdev, linux-sound,
Michael Ellerman, Nathan Lynch, linuxppc-dev,
Mauro Carvalho Chehab, linux-media
Le 11/09/2024 à 07:13, Anna-Maria Behnsen a écrit :
> Hi,
>
> a question about which sleeping function should be used in acpi_os_sleep()
> started a discussion and examination about the existing documentation and
> implementation of functions which insert a sleep/delay.
>
> The result of the discussion was, that the documentation is outdated and
> the implemented fsleep() reflects the outdated documentation but doesn't
> help to reflect reality which in turns leads to the queue which covers the
> following things:
>
> - Split out all timeout and sleep related functions from hrtimer.c and timer.c
> into a separate file
>
> - Update function descriptions of sleep related functions
>
> - Change fsleep() to reflect reality
>
> - Rework all comments or users which obviously rely on the outdated
> documentation as they reference "Documentation/timers/timers-howto.rst"
>
> - Last but not least (as there are no more references): Update the outdated
> documentation and move it into a file with a self explaining file name
>
> The queue is available here and applies on top of tip/timers/core:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/anna-maria/linux-devel.git timers/misc
>
> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
Hi,
not directly related to your serie, but some time ago I sent a patch to
micro-optimize Optimize usleep_range(). (See [1])
The idea is that the 2 parameters of usleep_range() are usually
constants and some code reordering could easily let the compiler compute
a few things at compilation time.
There was consensus on the value of the change (see [2]), but as you are
touching things here, maybe it makes sense now to save a few cycles at
runtime and a few bytes of code?
CJ
[1]:
https://lore.kernel.org/all/f0361b83a0a0b549f8ec5ab8134905001a6f2509.1659126514.git.christophe.jaillet@wanadoo.fr/
[2]:
https://lore.kernel.org/all/03c2bbe795fe4ddcab66eb852bae3715@AcuMS.aculab.com/
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/15] timers: Cleanup delay/sleep related mess
2024-09-16 20:20 ` [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Christophe JAILLET
@ 2024-09-17 5:22 ` Christophe JAILLET
2024-09-23 15:12 ` Anna-Maria Behnsen
2024-10-02 15:02 ` Thomas Gleixner
1 sibling, 1 reply; 8+ messages in thread
From: Christophe JAILLET @ 2024-09-17 5:22 UTC (permalink / raw)
To: Anna-Maria Behnsen
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Andrew Morton, damon,
linux-mm, SeongJae Park, Arnd Bergmann, linux-arch,
Heiner Kallweit, David S. Miller, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Liam Girdwood, Mark Brown, Andrew Lunn,
Jaroslav Kysela, Takashi Iwai, netdev, linux-sound,
Michael Ellerman, Nathan Lynch, linuxppc-dev,
Mauro Carvalho Chehab, linux-media, Frederic Weisbecker,
Thomas Gleixner, Jonathan Corbet
Le 16/09/2024 à 22:20, Christophe JAILLET a écrit :
> Le 11/09/2024 à 07:13, Anna-Maria Behnsen a écrit :
>> Hi,
>>
>> a question about which sleeping function should be used in
>> acpi_os_sleep()
>> started a discussion and examination about the existing documentation and
>> implementation of functions which insert a sleep/delay.
>>
>> The result of the discussion was, that the documentation is outdated and
>> the implemented fsleep() reflects the outdated documentation but doesn't
>> help to reflect reality which in turns leads to the queue which covers
>> the
>> following things:
>>
>> - Split out all timeout and sleep related functions from hrtimer.c and
>> timer.c
>> into a separate file
>>
>> - Update function descriptions of sleep related functions
>>
>> - Change fsleep() to reflect reality
>>
>> - Rework all comments or users which obviously rely on the outdated
>> documentation as they reference "Documentation/timers/timers-
>> howto.rst"
>>
>> - Last but not least (as there are no more references): Update the
>> outdated
>> documentation and move it into a file with a self explaining file name
>>
>> The queue is available here and applies on top of tip/timers/core:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/anna-maria/linux-
>> devel.git timers/misc
>>
>> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
>
> Hi,
>
> not directly related to your serie, but some time ago I sent a patch to
> micro-optimize Optimize usleep_range(). (See [1])
>
> The idea is that the 2 parameters of usleep_range() are usually
> constants and some code reordering could easily let the compiler compute
> a few things at compilation time.
>
> There was consensus on the value of the change (see [2]), but as you are
Typo: there was *no* consensus...
> touching things here, maybe it makes sense now to save a few cycles at
> runtime and a few bytes of code?
>
> CJ
>
> [1]: https://lore.kernel.org/all/
> f0361b83a0a0b549f8ec5ab8134905001a6f2509.1659126514.git.christophe.jaillet@wanadoo.fr/
>
> [2]: https://lore.kernel.org/
> all/03c2bbe795fe4ddcab66eb852bae3715@AcuMS.aculab.com/
>
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/15] timers: Cleanup delay/sleep related mess
2024-09-17 5:22 ` Christophe JAILLET
@ 2024-09-23 15:12 ` Anna-Maria Behnsen
0 siblings, 0 replies; 8+ messages in thread
From: Anna-Maria Behnsen @ 2024-09-23 15:12 UTC (permalink / raw)
To: Christophe JAILLET
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Andrew Morton, damon,
linux-mm, SeongJae Park, Arnd Bergmann, linux-arch,
Heiner Kallweit, David S. Miller, Andy Whitcroft, Joe Perches,
Dwaipayan Ray, Liam Girdwood, Mark Brown, Andrew Lunn,
Jaroslav Kysela, Takashi Iwai, netdev, linux-sound,
Michael Ellerman, Nathan Lynch, linuxppc-dev,
Mauro Carvalho Chehab, linux-media, Frederic Weisbecker,
Thomas Gleixner, Jonathan Corbet
Christophe JAILLET <christophe.jaillet@wanadoo.fr> writes:
> Le 16/09/2024 à 22:20, Christophe JAILLET a écrit :
>> Le 11/09/2024 à 07:13, Anna-Maria Behnsen a écrit :
>>> Hi,
>>>
>>> a question about which sleeping function should be used in
>>> acpi_os_sleep()
>>> started a discussion and examination about the existing documentation and
>>> implementation of functions which insert a sleep/delay.
>>>
>>> The result of the discussion was, that the documentation is outdated and
>>> the implemented fsleep() reflects the outdated documentation but doesn't
>>> help to reflect reality which in turns leads to the queue which covers
>>> the
>>> following things:
>>>
>>> - Split out all timeout and sleep related functions from hrtimer.c and
>>> timer.c
>>> into a separate file
>>>
>>> - Update function descriptions of sleep related functions
>>>
>>> - Change fsleep() to reflect reality
>>>
>>> - Rework all comments or users which obviously rely on the outdated
>>> documentation as they reference "Documentation/timers/timers-
>>> howto.rst"
>>>
>>> - Last but not least (as there are no more references): Update the
>>> outdated
>>> documentation and move it into a file with a self explaining file name
>>>
>>> The queue is available here and applies on top of tip/timers/core:
>>>
>>> git://git.kernel.org/pub/scm/linux/kernel/git/anna-maria/linux-
>>> devel.git timers/misc
>>>
>>> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
>>
>> Hi,
>>
>> not directly related to your serie, but some time ago I sent a patch to
>> micro-optimize Optimize usleep_range(). (See [1])
>>
>> The idea is that the 2 parameters of usleep_range() are usually
>> constants and some code reordering could easily let the compiler compute
>> a few things at compilation time.
>>
>> There was consensus on the value of the change (see [2]), but as you are
>
> Typo: there was *no* consensus...
>
>> touching things here, maybe it makes sense now to save a few cycles at
>> runtime and a few bytes of code?
>>
Sorry for the late reply. I'll check it and will come back to you.
Thanks,
Anna-Maria
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 00/15] timers: Cleanup delay/sleep related mess
2024-09-16 20:20 ` [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Christophe JAILLET
2024-09-17 5:22 ` Christophe JAILLET
@ 2024-10-02 15:02 ` Thomas Gleixner
1 sibling, 0 replies; 8+ messages in thread
From: Thomas Gleixner @ 2024-10-02 15:02 UTC (permalink / raw)
To: Christophe JAILLET, Frederic Weisbecker, Jonathan Corbet,
Anna-Maria Behnsen
Cc: linux-kernel, Len Brown, Rafael J. Wysocki, Anna-Maria Behnsen,
Andrew Morton, damon, linux-mm, SeongJae Park, Arnd Bergmann,
linux-arch, Heiner Kallweit, David S. Miller, Andy Whitcroft,
Joe Perches, Dwaipayan Ray, Liam Girdwood, Mark Brown,
Andrew Lunn, Jaroslav Kysela, Takashi Iwai, netdev, linux-sound,
Michael Ellerman, Nathan Lynch, linuxppc-dev,
Mauro Carvalho Chehab, linux-media
On Mon, Sep 16 2024 at 22:20, Christophe JAILLET wrote:
> Le 11/09/2024 à 07:13, Anna-Maria Behnsen a écrit :
>
> not directly related to your serie, but some time ago I sent a patch to
> micro-optimize Optimize usleep_range(). (See [1])
>
> The idea is that the 2 parameters of usleep_range() are usually
> constants and some code reordering could easily let the compiler compute
> a few things at compilation time.
>
> There was consensus on the value of the change (see [2]), but as you are
> touching things here, maybe it makes sense now to save a few cycles at
> runtime and a few bytes of code?
For the price of yet another ugly interface and pushing the
multiplication into the non-constant call sites.
Seriously usleep() is not a hotpath operation and the multiplication is
not even measurable except in micro benchmarks.
Thanks,
tglx
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range()
2024-09-11 5:13 ` [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range() Anna-Maria Behnsen
@ 2024-10-09 12:01 ` Frederic Weisbecker
0 siblings, 0 replies; 8+ messages in thread
From: Frederic Weisbecker @ 2024-10-09 12:01 UTC (permalink / raw)
To: Anna-Maria Behnsen
Cc: Thomas Gleixner, Jonathan Corbet, linux-kernel, Len Brown,
Rafael J. Wysocki, SeongJae Park, Andrew Morton, damon, linux-mm
Le Wed, Sep 11, 2024 at 07:13:34AM +0200, Anna-Maria Behnsen a écrit :
> The upper bound for usleep_range_idle() was taken from the outdated
> documentation. As a recommondation for the upper bound of usleep_range()
> depends on HZ configuration it is not possible to hard code it.
>
> Use the define "USLEEP_RANGE_UPPER_BOUND" instead.
>
> Cc: SeongJae Park <sj@kernel.org>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: damon@lists.linux.dev
> Cc: linux-mm@kvack.org
> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
> Reviewed-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-10-09 12:01 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-11 5:13 [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 04/15] timers: Rename usleep_idle_range() to usleep_range_idle() Anna-Maria Behnsen
2024-09-11 5:13 ` [PATCH v2 08/15] mm/damon/core: Use generic upper bound recommondation for usleep_range() Anna-Maria Behnsen
2024-10-09 12:01 ` Frederic Weisbecker
2024-09-16 20:20 ` [PATCH v2 00/15] timers: Cleanup delay/sleep related mess Christophe JAILLET
2024-09-17 5:22 ` Christophe JAILLET
2024-09-23 15:12 ` Anna-Maria Behnsen
2024-10-02 15:02 ` Thomas Gleixner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox