From: Thierry Reding <thierry.reding@gmail.com>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: linux-pwm@vger.kernel.org,
Fabrice Gasnier <fabrice.gasnier@st.com>,
Lee Jones <lee.jones@linaro.org>,
kernel@pengutronix.de
Subject: Re: [PATCH 3/3] pwm: Make capture support optional
Date: Fri, 7 Oct 2022 11:58:47 +0200 [thread overview]
Message-ID: <Yz/4V0gH/vrWSS8U@orome> (raw)
In-Reply-To: <20221006143544.ivhjruazd5m673hf@pengutronix.de>
[-- Attachment #1: Type: text/plain, Size: 9091 bytes --]
On Thu, Oct 06, 2022 at 04:35:44PM +0200, Uwe Kleine-König wrote:
> Hello Thierry,
>
> On Thu, Oct 06, 2022 at 03:10:13PM +0200, Thierry Reding wrote:
> > On Fri, Sep 30, 2022 at 05:43:55PM +0200, Uwe Kleine-König wrote:
> > > On Wed, Jun 22, 2022 at 07:09:45PM +0200, Uwe Kleine-König wrote:
> > > > On Wed, Jun 22, 2022 at 03:46:32PM +0200, Thierry Reding wrote:
> > > > > On Mon, May 23, 2022 at 07:45:02PM +0200, Uwe Kleine-König wrote:
> > > > > > The only code making use of the capture functionality is the sysfs code
> > > > > > in the PWM framework. I suspect there are no real users and would like to
> > > > > > deprecate it in favor of the counter framework. So introduce a kconfig
> > > > > > symbol to remove the capture support and make the sysfs file a stub.
> > > > > >
> > > > > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> > > > > > ---
> > > > > > drivers/pwm/Kconfig | 12 ++++++++++++
> > > > > > drivers/pwm/core.c | 3 ++-
> > > > > > drivers/pwm/pwm-sti.c | 4 ++++
> > > > > > drivers/pwm/pwm-stm32.c | 4 ++++
> > > > > > drivers/pwm/sysfs.c | 4 ++++
> > > > > > include/linux/pwm.h | 5 +++++
> > > > > > 6 files changed, 31 insertions(+), 1 deletion(-)
> > > > >
> > > > > I've applied patches 1-2 for now, but I'm not convinced about this yet.
> > > > >
> > > > > The PWM capture is something that's typically useful for applications
> > > > > served from userspace, which is why only the sysfs implementation
> > > > > exists. So anything that's based on another framework is likely not
> > > > > going to have in-kernel users either. Can you specify exactly how this
> > > > > alternative implementation would look like and how it would be an
> > > > > improvement over the current implementation?
> > > >
> > > > The counter framework would generate a continous stream of events while
> > > > you measure and from the timestamps of the events you can determine
> > > > period and duty cycle. So this is even more flexible because pwm-capture
> > > > only supports one-shot mode while with the counter stuff you can stop
> > > > to measure whenever you want to. Having said that, I didn't actually use
> > > > the counter framework for something like that, but that's how I think it
> > > > works and the framework has users.
> > > >
> > > > Other than that I have no better reasoning than the commit log. It's
> > > > some time ago something happend in pwm that concerns the capture
> > > > functionality[1] and the 13 new drivers since then all didn't implement
> > > > capture support. Also the capture stuff was done by an ST employee for
> > > > an ST driver, so that might not even be an active user but just a
> > > > developer fulfilling a management roadmap such that the marketing
> > > > department can advertise capture support. (Added Fabrice Gasnier to Cc:,
> > > > maybe he will comment.)
> > > >
> > > > I don't know of any user of this, but of course I cannot rule out there
> > > > are users I just don't know of. So the suggestion here looks reasonable
> > > > to me: There is a Kconfig item now, people who don't use capture can
> > > > disable it and the ones who rely on it set it =y. I expect that when
> > > > this switch hits the distribution kernels it will initially be off. Then
> > > > either people will wail to enable it. Or they don't and in a few years
> > > > we can be even more convinced there are no active users.
> > >
> > > You discarded this patch as "rejected" without any feedback to my
> > > explanation :-\
> >
> > Sorry, I hadn't realized that there was outstanding feedback on this.
> >
> > > Do you think that capture support is such a vital part of the pwm
> > > framework that everyone who makes use of a PWM should also have the
> > > capture stuff even though only two drivers implement the needed callback
> > > and all drivers that were added in the last five years don't?
> >
> > Just because only two drivers support a feature doesn't automatically
> > make it useless or non-vital.
>
> Ack, but two drivers also don't automatically make it useful or vital. I
> never used it even tough I already used PWMs a lot. Did you ever use it?
No, I have never used it. But I don't see how that's relevant.
> > This feature was added because somebody
> > needed it and I haven't received feedback that this is unused, so I
>
> So you expect people to tell you which part of the PWM framework they
> stopped using (or never used)? <sarcasm>Has anybody ever told you that
> they don't use CONFIG_PWM? Maybe we should compile it in
> unconditionally.</sarcasm>
No, they don't need to tell me. This was merged because somebody needed
it at some point, so I'm going to assume that it keeps being used. If we
start removing existing features because we think they are no longer
useful, we're going to end up annoying people and worst case they will
be stuck on some old version of the kernel.
> > see no reason why this should be removed.
>
> I don't want to remove it---at least for now. Just make it possible to
> disable this code for users who don't need it. (To pick up your line of
> reasoning: I haven't received feedback that it is used.) I'm happy about
> every unused feature I can disable, even if it only affects a single
> sysfs property. Code that is compiled out cannot trash cache lines or
> bring in runtime overhead or security problems without any gain. Yeah,
> this affects only very little code, but flipping a Kconfig switch is
> still easier than even to consider to review the capture stuff for
> unwanted effects. Given that more than 90% (99% ?) don't use capture, I
> do see some benefit.
There may be some benefit to disabling or removing this, but I don't
think it outweighs the downsides.
> > The overhead for drivers that
> > don't use this is negligible. There's exactly one function pointer that
> > would always be NULL for those. Then there's one sysfs attribute with
> > associated code and one core function that's just a teeny tiny wrapper
> > around the function pointer.
>
> Agreed, the overhead is small. Still code that is hardly used, not even
> by the maintainers of the framework is a bad thing in my eyes.
Heh... I don't think there's such a rule. Code doesn't have to be used
by its maintainer for it to be part of the kernel. If you continue that
reasoning, then anything that Linus doesn't use would have to be
removed.
> So being
> able to disable it (and ship kernels with that item disabled in distros)
> is a good way to find users who care, should they really exist. Either
> outcome is a win. Either we can get rid of an unused feature at some
> point in time, or we actually know there are users and we know their
> email address.
I would agree with you if this was somehow problematic to maintain or a
burden in some way. It's really not, so adding the Kconfig knob, and in
fact having this discussion, is way more time than I have spent on the
capture feature in the last few years combined.
> > On the other side of this we have an additional PWM_CAPTURE Kconfig
> > symbol that introduces another combination that needs to be compile-
> > tested for along with the potential to confuse users when they don't
> > get capture support, etc. And that's just not worth it.
>
> My (subjective) judgement is obviously different. IMHO compile testing
> isn't a big issue. There are enough auto builders around to catch this
> and should really someone get it wrong, it's easy and trivial to fix.
> And if we had done this change 5 years ago, exactly zero patches since
> then would have had to care about this Kconfig symbol.
Just as a reminder: the whole COMPILE_TEST business that people have
sunk a significant amount of work into, has been to alleviate the pain
that comes from too many Kconfig switches. Keeping things simple and
unconditional in individual subsystems tremendously helps with keeping
the combinatorial explosion in check.
> > If you really think that the counters framework is a better fit, the
> > right way to deprecate this is to add support for equivalent capture
> > functionality to that framework and get everyone to transition to that.
>
> I claim everyone already transitioned. I cannot prove it as you cannot
> prove the opposite. Until we make it harder for people to use it.
I don't have to prove the opposite. Also, making it harder for people to
use this isn't necessarily going to get us feedback. You assume that the
people that would be inconvenienced by this getting disabled by default
will be motivated enough to bring this up. I think it's at least equally
likely that they'll get annoyed and stop updating their kernel or switch
operating system to something with more sensible maintainers.
Again, if this were somehow a significant impediment this might be a
good idea. As it is, it is not. Sorry.
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2022-10-07 9:58 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-23 17:45 [PATCH 1/3] pwm: Reorder header file to get rid of struct pwm_capture forward declaration Uwe Kleine-König
2022-05-23 17:45 ` [PATCH 2/3] pwm: Drop unused forward declaration from pwm.h Uwe Kleine-König
2022-05-23 17:45 ` [PATCH 3/3] pwm: Make capture support optional Uwe Kleine-König
2022-06-22 13:46 ` Thierry Reding
2022-06-22 17:09 ` Uwe Kleine-König
2022-09-30 15:43 ` Uwe Kleine-König
2022-10-06 13:10 ` Thierry Reding
2022-10-06 14:35 ` Uwe Kleine-König
2022-10-07 9:58 ` Thierry Reding [this message]
2022-11-17 22:19 ` William Breathitt Gray
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=Yz/4V0gH/vrWSS8U@orome \
--to=thierry.reding@gmail.com \
--cc=fabrice.gasnier@st.com \
--cc=kernel@pengutronix.de \
--cc=lee.jones@linaro.org \
--cc=linux-pwm@vger.kernel.org \
--cc=u.kleine-koenig@pengutronix.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.