Re: [PATCH v3 1/3] pwm: make it possible to apply pwm changes in atomic context

Daniel Thompson
2023-10-23T13:34:26Z

On Sun, Oct 22, 2023 at 11:46:22AM +0100, Sean Young wrote:
> Hi Hans,
>
> On Sat, Oct 21, 2023 at 11:08:22AM +0200, Hans de Goede wrote:
> > On 10/19/23 12:51, Uwe Kleine-König wrote:
> > > On Wed, Oct 18, 2023 at 03:57:48PM +0200, Hans de Goede wrote:
> > >> On 10/17/23 11:17, Sean Young wrote:
> > > I think it's very subjective if you consider this
> > > churn or not.
> >
> > I consider it churn because I don't think adding a postfix
> > for what is the default/expected behavior is a good idea
> > (with GPIOs not sleeping is the expected behavior).
> >
> > I agree that this is very subjective and very much goes
> > into the territory of bikeshedding. So please consider
> > the above my 2 cents on this and lets leave it at that.
>
> You have a valid point. Let's focus on having descriptive function names.

For a couple of days I've been trying to resist the bikeshedding (esp.
given the changes to backlight are tiny) so I'll try to keep it as
brief as I can:

1. I dislike the do_it() and do_it_cansleep() pairing. It is
difficult to detect when a client driver calls do_it() by mistake.
In fact a latent bug of this nature can only be detected by runtime
testing with the small number of PWMs that do not support
configuration from an atomic context.

In contrast do_it() and do_it_atomic()[*] means that although
incorrectly calling do_it() from an atomic context can be pretty
catastrophic it is also trivially detected (with any PWM driver)
simply by running with CONFIG_DEBUG_ATOMIC_SLEEP.

No objections (beyond churn) to fully spelt out pairings such as
do_it_cansleep() and do_it_atomic()[*]!

2. If there is an API rename can we make sure the patch contains no
other changes (e.g. don't introduce any new API in the same patch).
Seperating renames makes the patches easier to review!
It makes each one smaller and easier to review!

Daniel.

[*] or do_it_nosleep()... etc.