From: "Pali Rohár" <pali.rohar@gmail.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Darren Hart <dvhart@infradead.org>,
platform-driver-x86@vger.kernel.org,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Mario Limonciello <mario_limonciello@dell.com>,
Rafael Wysocki <rjw@rjwysocki.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Linux ACPI <linux-acpi@vger.kernel.org>
Subject: Re: [PATCH 15/16] platform/x86: wmi-mof: New driver to expose embedded WMI MOF metadata
Date: Tue, 6 Jun 2017 13:05:54 +0200 [thread overview]
Message-ID: <20170606110554.GB4690@pali> (raw)
In-Reply-To: <CALCETrXTejMgbQZaHOKuEM_rF4bMduEzwWZ6+7R2M+gbFo5LMg@mail.gmail.com>
On Monday 05 June 2017 15:39:44 Andy Lutomirski wrote:
> On Mon, Jun 5, 2017 at 3:19 PM, Pali Rohár <pali.rohar@gmail.com> wrote:
> > On Tuesday 06 June 2017 00:14:56 Darren Hart wrote:
> >> On Sat, May 27, 2017 at 01:14:15PM +0200, Pali Rohár wrote:
> >> > > metadata. I think that Samba has tools to interpret it, but there
> >> > > is currently no interface to get the data in the first place.
> >> >
> >> > No, there is no non-ms-windows tool for interpreting those binary
> >> > MOF (BMF) data yet.
> >>
> >> Good point. Updated.
> >
> > You are too late :-) Now there is my at https://github.com/pali/bmfdec
> > See my email "Binary MOF buffer in WMI is finally decoded!".
> >
>
> It comes out like this on my laptop. I don't know enough about MOF to
> know what we're supposed to do with this, but I suspect it at least
> gives us the sizes of buffers that we should be passing to the various
> methods.
There are two tools bmfparse and bmf2mof. Difference is just output
format.
Important are WmiDataId and WmiMethodId qualifiers. Those define ids are
what are passed to kernel function wmi_evaluate_method(). Ids are
processed by corresponding WMxx ACPI function.
So instead of
wmi_evaluate_method(guid, instance, method_id, acpi_in, acpi_out);
it should be possible to call:
wmi_evaluate_method_name(class, name, input_params, output_params);
(once somebody implement wmi_evaluate_method_name function)
It is more readable in code to use class and function names instead of
some guids and random meaningless numbers. Also it would allow to check
size of input buffer (or types).
E.g.
BDat data_in;
BDat data_out;
// fill data_in.Bytes
wmi_evaluate_method_name("BFn", "DoBFn", &data_in, &data_out);
// output is in data_out.Bytes
could be translated to:
wmi_evaluate_method("A80593CE-A997-11DA-B012-B622A1EF5492", 0, 1, acpi_in, acpi_out);
Sometimes method_id is random number and hard to guess it. One of
possible solution is to trace ACPI calls on Windows, another is decode
that BMOF buffer and take correct method_id.
I will probably write another one tool which prints just important WMI
functions and their mapping to WMI ids + input/output parameters.
Without all other MOF data which are not relevant to ACPI-WMI.
> class WMIEvent : __ExtrinsicEvent {
> };
>
> [WMI, Locale("MS\0x409"), Description("QDATA"),
> guid("{ABBC0F60-8EA1-11d1-00A0-C90629100000}")]
> class QDat {
> [WmiDataId(1), read, write, Description("qdata")] uint8 Bytes[128];
> };
>
> [WMI, Dynamic, Provider("WmiProv"), Locale("MS\0x409"),
> Description("BIOS WMI Query"),
> guid("{8D9DDCBC-A997-11DA-B012-B622A1EF5492}")]
> class WMI_Query {
> [key, read] String InstanceName;
> [read] Boolean Active;
> [WmiDataId(1), read, write, Description("BIOS WMI info")] QDat QDATA;
> };
>
> [WMI, Locale("MS\0x409"), Description("Data"),
> guid("{a3776ce0-1e88-11db-a98b-0800200c9a66}")]
> class BDat {
> [WmiDataId(1), read, write, Description("data")] uint8 Bytes[4096];
> };
>
> [WMI, Dynamic, Provider("WmiProv"), Locale("MS\0x409"),
> Description("Interface"),
> guid("{A80593CE-A997-11DA-B012-B622A1EF5492}")]
> class BFn {
> [key, read] String InstanceName;
> [read] Boolean Active;
>
> [WmiMethodId(1), Implemented, read, write, Description("Do BFn")]
> void DoBFn([in, Description("Fn buf"), ID(0)] BDat Data, [out,
> Description("Fn buf"), ID(0)] BDat Data);
> };
>
> [WMI, Dynamic, Provider("WmiProv"), Locale("MS\0x409"),
> Description("Event"), guid("{9DBB5994-A997-11DA-B012-B622A1EF5492}")]
> class BIOSEvent : WmiEvent {
> [key, read] String InstanceName;
> [read] Boolean Active;
> [WmiDataId(1), read, write, Description("Ev buf")] QDat Data;
> };
--
Pali Rohár
pali.rohar@gmail.com
next prev parent reply other threads:[~2017-06-06 11:06 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-27 5:31 [PATCH 00/16] Convert WMI to a proper bus Darren Hart
2017-05-27 5:31 ` [PATCH 01/16] platform/x86: wmi: Drop "Mapper (un)loaded" messages Darren Hart
2017-05-27 5:31 ` [PATCH 02/16] platform/x86: wmi: Pass the acpi_device through to parse_wdg Darren Hart
2017-05-27 5:31 ` [PATCH 03/16] platform/x86: wmi: Clean up acpi_wmi_add Darren Hart
2017-05-27 5:31 ` [PATCH 04/16] platform/x86: wmi: Track wmi devices per ACPI device Darren Hart
2017-05-27 5:31 ` [PATCH 05/16] platform/x86: wmi: Turn WMI into a bus driver Darren Hart
2017-05-27 5:31 ` [PATCH 06/16] platform/x86: wmi: Fix error handling when creating devices Darren Hart
2017-05-27 5:31 ` [PATCH 07/16] platform/x86: wmi: Split devices into types and add basic sysfs attributes Darren Hart
2017-05-27 5:31 ` [PATCH 08/16] platform/x86: wmi: Probe data objects for read and write capabilities Darren Hart
2017-05-27 5:31 ` [PATCH 09/16] platform/x86: wmi: Instantiate all devices before adding them Darren Hart
2017-06-01 20:43 ` Michał Kępień
2017-06-06 3:03 ` Darren Hart
2017-06-06 16:03 ` Andy Lutomirski
2017-06-08 4:43 ` Michał Kępień
2017-05-27 5:31 ` [PATCH 10/16] platform/x86: wmi: Incorporate acpi_install_notify_handler Darren Hart
2017-05-27 5:31 ` [PATCH 11/16] platform/x86: wmi: Add a new interface to read block data Darren Hart
2017-05-27 5:31 ` [PATCH 12/16] platform/x86: wmi: Bind the platform device, not the ACPI node Darren Hart
2017-05-27 5:31 ` [PATCH 13/16] platform/x86: wmi: Add an interface for subdrivers to access sibling devices Darren Hart
2017-05-27 5:31 ` [PATCH 14/16] platform/x86: wmi: Require query for data blocks, rename writable to setable Darren Hart
2017-05-27 5:31 ` [PATCH 15/16] platform/x86: wmi-mof: New driver to expose embedded WMI MOF metadata Darren Hart
2017-05-27 11:14 ` Pali Rohár
2017-05-27 21:07 ` Andy Lutomirski
2017-05-30 15:24 ` Andy Shevchenko
2017-05-30 16:46 ` Darren Hart
2017-05-30 17:03 ` Pali Rohár
2017-05-30 17:21 ` Andy Shevchenko
2017-06-05 22:14 ` Darren Hart
2017-06-05 22:19 ` Pali Rohár
2017-06-05 22:39 ` Andy Lutomirski
2017-06-06 11:05 ` Pali Rohár [this message]
2017-06-06 13:46 ` Mario.Limonciello
2017-06-06 13:56 ` Pali Rohár
2017-06-07 17:39 ` Pali Rohár
2017-06-07 20:23 ` Mario.Limonciello
2017-06-07 20:50 ` Pali Rohár
2017-06-09 15:46 ` Mario.Limonciello
2017-06-09 21:51 ` Pali Rohár
2017-06-15 16:46 ` Pali Rohár
2017-06-06 2:33 ` Darren Hart
2017-05-27 5:31 ` [PATCH 16/16] platform/x86: dell-wmi: Convert to the WMI bus infrastructure Darren Hart
2017-05-27 10:50 ` Pali Rohár
2017-05-27 16:04 ` Andy Lutomirski
2017-05-27 16:17 ` Dmitry Torokhov
2017-05-27 18:40 ` Andy Lutomirski
2017-05-30 2:45 ` Dmitry Torokhov
2017-06-06 3:04 ` Darren Hart
2017-05-27 19:49 ` [PATCH 00/16] Convert WMI to a proper bus Rafael J. Wysocki
2017-05-27 20:01 ` Andy Shevchenko
2017-06-06 17:23 ` Darren Hart
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=20170606110554.GB4690@pali \
--to=pali.rohar@gmail.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dvhart@infradead.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mario_limonciello@dell.com \
--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).