linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Darren Hart <dvhart@infradead.org>
To: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: "Michał Kępień" <kernel@kempniu.pl>,
	"Jonathan Woithe" <jwoithe@just42.net>,
	"Andy Shevchenko" <andy@infradead.org>,
	platform-driver-x86@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 00/10] fujitsu-laptop: use device-specific data instead of module-wide globals
Date: Thu, 11 May 2017 08:38:48 -0700	[thread overview]
Message-ID: <20170511153848.GF11404@fury> (raw)
In-Reply-To: <2351586.Dq8uyyCcAZ@aspire.rjw.lan>

On Thu, May 11, 2017 at 04:37:30PM +0200, Rafael Wysocki wrote:
> On Thursday, May 11, 2017 03:52:11 PM Michał Kępień wrote:
> > > On Tuesday, May 09, 2017 09:47:34 AM Darren Hart wrote:
> > > > On Tue, May 09, 2017 at 11:35:24AM +0200, Michał Kępień wrote:
> > > > > > On Sat, May 06, 2017 at 02:45:16PM +0200, Michał Kępień wrote:
...
> > > > > I feel the problem at hand needs a fresh explanation.  I will be as
> > > > > concise as possible.
> > > > > 
> > > > > We are considering two ACPI devices present on Fujitsu laptops:
> > > > > 
> > > > >   - FJEX:
> > > > >       * path: \_SB_.PCI0.LPCB.FJEX
> > > > >       * HID: FUJ02B1
> > > > >       * methods invoked by kernel: GBLL, RBLL, SBLL, SBL2
> > > > >       * handles: backlight level (LCD brightness)
> > > > > 
> > > > >   - FEXT:
> > > > >       * path: \_SB_.FEXT
> > > > >       * HID: FUJ02E3
> > > > >       * methods invoked by kernel: FUNC
> > > > >       * handles: hotkey, LEDs, platform attributes, backlight power
> > > > >                                                     ^^^^^^^^^^^^^^^
> > > > 
> > > > This is very concise and describes the problem clearly, thank you!
> > > > 
> > > > > 
> > > > > The problem is that if we split the ACPI drivers for those two devices
> > > > > into separate modules, the FJEX driver will need to access the FUNC
> > > > > method of device FEXT, handled by another driver in another module.
> > > > > 
> > > > > One way of solving this cleanly is to store a handle to the most
> > > > > recently found FEXT instance (there should always be at most one anyway)
> > > > > in a module-wide variable inside the FEXT driver, but that defeats the
> > > > > purpose of this series.
> > > > > 
> > > > > Another solution is proposed by patch 04/10 of this series: make the
> > > > > FJEX driver independently grab a handle to FEXT using the absolute ACPI
> > > > > path to the latter.  It feels unnatural (AFAICT only one driver outside
> > > > > drivers/acpi, namely pcc-cpufreq, does that), but it is safe and allows
> > > > > us to drop all module-wide data.
> > > > 
> > > > Rafael's take on this would be useful.
> > > 
> > > Well, can you point me to patch [04/10] then?
> > 
> > Here is a link:
> > 
> >     https://www.spinics.net/lists/platform-driver-x86/msg11412.html
> 
> Thanks!
> 
> > However, please note that in light of what Darren wrote, this specific
> > patch is likely to be dropped from v2.  Thus, there may be no point in
> > reviewing it after all, though your feedback would certainly be
> > appreciated for future reference.
> 
> OK

Rafael's take on balancing one driver per device, versus a single driver with
interdependent ACPI devices, even if one of them doesn't show up in the device
hierarchy, as well as one driver calling into another one, all from his
experience with ACPI device drivers would be valuable, and could sway my advice
above.

> 
> > > Or better resend the whole series with a CC to linux-acpi (which it should go
> > > to to start with IMO).
> > 
> > I did not think of that as this ten-patch series mostly revolves around
> > data encapsulation.  However, I think it might be worthwhile to CC
> > linux-acpi for the series that will split fujitsu-laptop in two, shall
> > it ever be posted.
> 
> OK, but as a rule of thumb, it is better to CC everything touching ACPI to
> linux-acpi just to let people know what you're doing if nothing else.
> 
> And if there are ACPI-related questions down the road, the context is there
> aleady, so it is generally easier to answer them then.
> 

Agreed. Unfortunately, we don't have a good way to make this clear in
MAINTAINERS without enumerating every driver. I'll try to make sure the regular
contributors know this, but new folks will continue to miss it unless we can
find a better way to make it obvious.


-- 
Darren Hart
VMware Open Source Technology Center

  reply	other threads:[~2017-05-11 15:38 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-24 13:33 [PATCH 00/10] fujitsu-laptop: use device-specific data instead of module-wide globals Michał Kępień
2017-04-24 13:33 ` [PATCH 01/10] platform/x86: fujitsu-laptop: introduce fext_*() helper functions Michał Kępień
2017-05-01 13:13   ` Jonathan Woithe
2017-05-02 13:24     ` Michał Kępień
2017-04-24 13:33 ` [PATCH 02/10] platform/x86: fujitsu-laptop: shorten names of acpi_handle fields Michał Kępień
2017-05-01 13:19   ` Jonathan Woithe
2017-05-01 16:09     ` Darren Hart
2017-04-24 13:33 ` [PATCH 03/10] platform/x86: fujitsu-laptop: explicitly pass ACPI handle to call_fext_func() Michał Kępień
2017-04-24 13:33 ` [PATCH 04/10] platform/x86: fujitsu-laptop: rework backlight power synchronization Michał Kępień
2017-05-01 13:32   ` Jonathan Woithe
2017-05-01 16:17     ` Darren Hart
2017-04-24 13:33 ` [PATCH 05/10] platform/x86: fujitsu-laptop: distinguish current uses of device-specific data Michał Kępień
2017-05-01 13:40   ` Jonathan Woithe
2017-04-24 13:33 ` [PATCH 06/10] platform/x86: fujitsu-laptop: allocate struct fujitsu_bl in acpi_fujitsu_bl_add() Michał Kępień
2017-04-24 13:33 ` [PATCH 07/10] platform/x86: fujitsu-laptop: use device-specific data in backlight code Michał Kępień
2017-04-24 13:33 ` [PATCH 08/10] platform/x86: fujitsu-laptop: allocate struct fujitsu_laptop in acpi_fujitsu_laptop_add() Michał Kępień
2017-04-24 13:33 ` [PATCH 09/10] platform/x86: fujitsu-laptop: use device-specific data in LED-related code Michał Kępień
2017-04-24 13:33 ` [PATCH 10/10] platform/x86: fujitsu-laptop: use device-specific data in remaining module code Michał Kępień
2017-05-01 13:05 ` [PATCH 00/10] fujitsu-laptop: use device-specific data instead of module-wide globals Jonathan Woithe
2017-05-02 13:21   ` Michał Kępień
2017-05-04 23:40     ` Jonathan Woithe
2017-05-05 16:15       ` Darren Hart
2017-05-06 12:31         ` Michał Kępień
2017-05-06 12:45           ` Michał Kępień
2017-05-06 14:21             ` Andy Shevchenko
2017-05-06 14:23               ` Andy Shevchenko
2017-05-08 16:01             ` Darren Hart
2017-05-09  9:35               ` Michał Kępień
2017-05-09 12:13                 ` Jonathan Woithe
2017-05-09 16:47                 ` Darren Hart
2017-05-09 21:24                   ` Rafael J. Wysocki
2017-05-11 13:52                     ` Michał Kępień
2017-05-11 14:37                       ` Rafael J. Wysocki
2017-05-11 15:38                         ` Darren Hart [this message]
2017-05-11 13:40                   ` Michał Kępień
2017-05-15 23:27                     ` Darren Hart
2017-05-16  0:06                       ` Jonathan Woithe
2017-05-16  6:40                         ` Michał Kępień
2017-05-15 23:56                     ` Jonathan Woithe

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=20170511153848.GF11404@fury \
    --to=dvhart@infradead.org \
    --cc=andy@infradead.org \
    --cc=jwoithe@just42.net \
    --cc=kernel@kempniu.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rjw@rjwysocki.net \
    /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;
as well as URLs for NNTP newsgroup(s).