public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Anna-Maria Behnsen <anna-maria@linutronix.de>
To: Joe Perches <joe@perches.com>,
	Frederic Weisbecker <frederic@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jonathan Corbet <corbet@lwn.net>
Cc: linux-kernel@vger.kernel.org, Len Brown <len.brown@intel.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Andy Whitcroft <apw@canonical.com>,
	Dwaipayan Ray <dwaipayanray1@gmail.com>
Subject: Re: [PATCH v2 10/15] checkpatch: Remove broken sleep/delay related checks
Date: Wed, 11 Sep 2024 09:41:41 +0200	[thread overview]
Message-ID: <875xr2eix6.fsf@somnus> (raw)
In-Reply-To: <ba245a06048af9eee61cea8c8fb79a331900cc73.camel@perches.com>

Joe Perches <joe@perches.com> writes:

> On Wed, 2024-09-11 at 07:13 +0200, Anna-Maria Behnsen wrote:
>> checkpatch.pl checks for several things related to sleep and delay
>> functions. In all warnings the outdated documentation is referenced. All
>> broken parts are listed one by one in the following with an explanation why
>> this check is broken. For a basic background of those functions please also
>> refere to the updated function descriptions of udelay(), nsleep_range() and
>> msleep().
>> 
>> Be aware: The change is done with a perl knowledge of the level "I'm able
>> to spell perl".
>> 
>> The following checks are broken:
>> 
>> - Check: (! ($delay < 10) )
>>   Message: "usleep_range is preferred over udelay;
>>             see Documentation/timers/timers-howto.rst\n"
>>   Why is the check broken: When it is an atomic context, udelay() is
>>                            mandatory.
>> 
>> - Check: ($min eq $max)
>>   Message:  "usleep_range should not use min == max args;
>>              see Documentation/timers/timers-howto.rst\n"
>>   Why is the check broken: When the requested accuracy for the sleep
>>                            duration requires it, it is also valid to use
>>                            min == max.
>
> There is a runtime setup cost to use usleep_range.

Sure, it's because of hrtimers. This is also documented in the new
documentation.

> I believe udelay should generally be used when there
> is a specific microsecond time delay required.

The aim of the whole series is to cleanup the outdated documentation of
the usage of delay/sleep related functions. Please read the new
documentation which is provided by the last patch of the queue, when to
use which function. Also updated function descriptions itself contain
important information about usage. If you have any concerns about
correctness of the new documentation or if there is something missing,
please let me know.

As several comments in the kernel and also checkpatch contain several
links to the outdated documentation file (which will be also moved to a
more self explaining file name by the last patch), I need to update
those places to be able to move the file. Also checkpatch.

>> 
>> - Check: ($delay > 2000)
>>   Message: "long udelay - prefer mdelay;
>>             see arch/arm/include/asm/delay.h\n"
>>   Why is the check broken: The threshold when to start using mdelay() to
>>                            prevent an overflow depends on
>>                            MAX_UDELAY_MS. This value is architecture
>>                            dependent. The used value for the check and
>>                            reference is arm specific. Generic would be 5ms,
>>                            but this would "break" arm, loongarch and mips
>>                            and also the arm value might "break" mips and
>>                            loongarch in some configurations.
>
> It likely won't "break", just perhaps be inefficient.

If running on loongarch with HZ>=1000 MAX_UDELAY_MS is 1. When keeping
the above check, then there is the risk of an overflow. I'm not sure if
an overflow is the same than beeing inefficient. Same for mips with HZ>=1000.

When using the generic value of 5, also arm would have the risk of an
overflow as MAX_UDELAY_MS for arm is 2.

So my general questions here are:

- What do you think about the change of this patch in general or do you
  want to have things changed?
- Should I only make changes to the commit message so that it's more clear?

This would really much help me to make progress with this queue.

Thanks a lot for your support!

	Anna-Maria


  reply	other threads:[~2024-09-11  7:41 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 01/15] MAINTAINERS: Add missing file include/linux/delay.h Anna-Maria Behnsen
2024-10-01 20:11   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 02/15] timers: Move *sleep*() and timeout functions into a separate file Anna-Maria Behnsen
2024-10-01 20:45   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 03/15] timers: Update schedule_[hr]timeout*() related function descriptions Anna-Maria Behnsen
2024-10-01 21:16   ` Frederic Weisbecker
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 05/15] timers: Update function descriptions of sleep/delay related functions Anna-Maria Behnsen
2024-10-06 21:49   ` Frederic Weisbecker
2024-10-10  8:45     ` Anna-Maria Behnsen
2024-10-10 12:36       ` Frederic Weisbecker
2024-10-11 10:20         ` Anna-Maria Behnsen
2024-10-11 12:22           ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 06/15] delay: Rework udelay and ndelay Anna-Maria Behnsen
2024-09-23 15:40   ` Anna-Maria Behnsen
2024-10-08 14:24   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 07/15] timers: Adjust flseep() to reflect reality Anna-Maria Behnsen
2024-10-08 21:45   ` Frederic Weisbecker
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-11  5:13 ` [PATCH v2 09/15] timers: Add a warning to usleep_range_state() for wrong order of arguments Anna-Maria Behnsen
2024-09-11  6:41   ` Joe Perches
2024-09-11  7:45     ` Anna-Maria Behnsen
2024-10-09 12:22   ` Frederic Weisbecker
2024-10-10  9:06     ` Anna-Maria Behnsen
2024-09-11  5:13 ` [PATCH v2 10/15] checkpatch: Remove broken sleep/delay related checks Anna-Maria Behnsen
2024-09-11  6:44   ` Joe Perches
2024-09-11  7:41     ` Anna-Maria Behnsen [this message]
2024-10-09 12:45   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 11/15] regulator: core: Use fsleep() to get best sleep mechanism Anna-Maria Behnsen
2024-10-09 13:37   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 12/15] iopoll/regmap/phy/snd: Fix comment referencing outdated timer documentation Anna-Maria Behnsen
2024-09-11 12:08   ` Andrew Lunn
2024-10-09 16:14   ` Frederic Weisbecker
2024-09-11  5:13 ` [PATCH v2 13/15] powerpc/rtas: Use fsleep() to minimize additional sleep duration Anna-Maria Behnsen
2024-10-09 16:20   ` Frederic Weisbecker
2024-10-10  9:27     ` Anna-Maria Behnsen
2024-09-11  5:13 ` [PATCH v2 14/15] media: anysee: Fix link to outdated sleep function documentation Anna-Maria Behnsen
2024-10-09 16:30   ` Frederic Weisbecker
2024-10-11 10:28     ` Anna-Maria Behnsen
2024-09-11  5:13 ` [PATCH v2 15/15] timers/Documentation: Cleanup delay/sleep documentation Anna-Maria Behnsen
2024-10-10 13:10   ` 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

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=875xr2eix6.fsf@somnus \
    --to=anna-maria@linutronix.de \
    --cc=apw@canonical.com \
    --cc=corbet@lwn.net \
    --cc=dwaipayanray1@gmail.com \
    --cc=frederic@kernel.org \
    --cc=joe@perches.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=tglx@linutronix.de \
    /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