From: Darren Hart <dvhart@infradead.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: "Pali Rohár" <pali.rohar@gmail.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Linus Torvalds" <torvalds@linux-foundation.org>,
"Mario Limonciello" <mario_limonciello@dell.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Rafael Wysocki" <rjw@rjwysocki.net>,
"Andy Lutomirski" <luto@amacapital.net>,
LKML <linux-kernel@vger.kernel.org>,
platform-driver-x86@vger.kernel.org
Subject: Re: WMI and Kernel:User interface
Date: Tue, 13 Jun 2017 08:38:57 -0700 [thread overview]
Message-ID: <20170613153857.GC27850@fury> (raw)
In-Reply-To: <20170613070535.GA13252@infradead.org>
On Tue, Jun 13, 2017 at 12:05:35AM -0700, Christoph Hellwig wrote:
> Hi Darren,
>
> first - can you please properly trim your replies and don't write
> more than 7 characters per line?
Sure... (although I think you've done all the necessary pruning for this
response). 70 I presume you mean? I usually have tw set to 72...
apparently I dropped that setting at some point. Will correct.
>
> On Mon, Jun 12, 2017 at 06:24:35PM -0700, Darren Hart wrote:
> > This is a big topic for sure. Speed and scale of platform enabling is something
> > I would like to see us support better. The barrier to entry to kernel
> > changes is high, especially for trivial things, like adding IDs, GUIDs, etc.
> > which would ideally, IMHO, be in the hands of the OEMs.
>
> It's not. It's a trivial patch, and you cover all Linux users. Very
> much unlike say the windows world where you are stuck with installing
> a vendor specific set of drivers forever.
>
The patch is trivial, but the process is time consuming. Two to Three
months to see an ID added and released is big blocker for contemporary
life cycles.
> > Ideally, we would provide a generic way for users/OEMs/vendors to successfully
> > support and maintain their own platforms, ideally with as little kernel changes
> > as possible. If we can get closer to that than we are today with this WMI work,
> > I think that is worth the effort.
>
> Hell no! The last thing we need on Linux is systems that once support
> us added don't just work out of the box because you're missing your
> vendor blob.
I thought more about this overnight and changed my thinking a bit. While
I still stand by the position that we should be making it easier for
users/OEMs/vendors to support their platforms (note that I had included
users in there, and I'm specifically referring to many of the people
reporting bugs on laptops who would be more likely to fix the issue if
it could be done outside of the kernel).
I'll mention this again I suspect in this thread, but rather than a "WMI
filter" we can implement a "WMI proxy". If a kernel driver needs to own
certain WMI calls for LED or Radio management, for example, all such
calls can be proxied through that driver. It can do the necessary work
to update its own state, and still perform the requested funtion,
transparent to the userspace caller. This should accommodate the
addition of new drivers and features to kernel drivers, without
precluding the development of userspace management or platform daemons.
> > > And filter layer which will accept only WMI calls which are safe for
> > > currently loaded/used kernel modules seems like a sane idea to ensure
> > > functionality of kernel plus allow userspace to do other things.
> >
> > My biggest concern with this approach is maintenance. Because we would be doing
> > something unforeseen by the specification, the various vendor implemented WMI
> > APIs are not likely to be amenable to filtering. I can see these filters
> > getting extremely complicated. They are "high touch", by which I mean each
> > generation of platform may require subtle tweaks, which will be difficult to
> > verify they don't break past generations.
>
> Agreed. As mentioned before I think the only sensible approach is
> white listing GUIDs that have a valid userspace use case. And use
> the dynamic IDs approach to add them for debugging and reverse
> engineering.
The issue with whitelisting GUIDs is that, for the same reasons as
above, they are not going to be nicely partitioned into functional
chunks that make sense from a kernel perspective. They aren't going to
see it through a subsystems lense, "LEDs, Radios, Hotkeys, BIOS
Management". Much like the fujitsu ACPI devices have nonsensical
interdependencies, these GUIDs and the methods they contain are not
granular enough for filtering.
As to dynamic IDs... to make sure I'm thinking the same thing you are...
you are referring to passing device IDs from userspace, through sysfs,
to a driver at runtime to allow it to bind to an ID it doesn't already
know about? If I have this right, it also addresses my concern above for
adding new IDs taking too long as this can provide an intermediate
solution.
>
> > There are certainly pros and cons. While this approach results in duplication of
> > effort, it also allows vendors to "own their own destiny" and innovate and
> > support their platforms independently. It also minimizes the amount of dead code
> > accumulating for platforms that just don't exist for very long.
>
> Bullshit alert..
>
I probably need to add "innovate" to my bad words dictionary as it gets
this knee jerk response. But what specifically do you object to?
Supporting vendors in product development? Or not accumulating dead code
in the kernel?
--
Darren Hart
VMware Open Source Technology Center
next prev parent reply other threads:[~2017-06-13 15:39 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-09 23:16 WMI and Kernel:User interface Darren Hart
2017-05-10 5:13 ` Greg Kroah-Hartman
2017-05-10 6:11 ` Darren Hart
2017-05-10 22:02 ` Mario.Limonciello
2017-05-10 22:11 ` Darren Hart
2017-05-10 22:50 ` Andy Lutomirski
2017-05-10 23:23 ` Darren Hart
2017-05-10 23:27 ` Darren Hart
2017-06-03 19:50 ` Darren Hart
2017-06-09 6:41 ` Greg Kroah-Hartman
2017-06-10 0:46 ` Darren Hart
2017-06-10 10:36 ` Pali Rohár
2017-06-12 17:02 ` Darren Hart
2017-06-12 22:17 ` Pali Rohár
2017-06-13 1:24 ` Darren Hart
2017-06-13 7:05 ` Christoph Hellwig
2017-06-13 12:07 ` Pali Rohár
2017-06-13 15:44 ` Darren Hart
2017-06-13 16:05 ` Greg Kroah-Hartman
2017-06-13 16:24 ` Darren Hart
2017-06-13 15:38 ` Darren Hart [this message]
2017-06-13 15:50 ` Greg Kroah-Hartman
2017-06-13 15:56 ` Andy Lutomirski
2017-06-13 16:12 ` Mario.Limonciello
2017-06-13 16:57 ` Greg KH
2017-06-13 17:43 ` Pali Rohár
2017-06-13 16:39 ` Darren Hart
2017-06-13 16:22 ` Darren Hart
2017-06-13 16:52 ` Greg Kroah-Hartman
2017-06-13 17:07 ` Darren Hart
2017-06-14 4:38 ` Greg Kroah-Hartman
2017-06-19 22:10 ` Andy Lutomirski
2017-06-20 3:37 ` Darren Hart
2017-06-20 7:29 ` Pali Rohár
2017-06-13 17:16 ` Pali Rohár
2017-06-13 17:40 ` Darren Hart
2017-06-13 18:00 ` Pali Rohár
2017-06-13 18:09 ` Darren Hart
2017-06-14 0:28 ` Bernd Petrovitsch
2017-06-13 12:51 ` Pali Rohár
2017-06-13 16:07 ` Darren Hart
2017-06-19 21:24 ` Matthew Garrett
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=20170613153857.GC27850@fury \
--to=dvhart@infradead.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mario_limonciello@dell.com \
--cc=pali.rohar@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=rjw@rjwysocki.net \
--cc=torvalds@linux-foundation.org \
/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