From: Darren Hart <dvhart@infradead.org>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: "Andy Lutomirski" <luto@kernel.org>,
"Pali Rohár" <pali.rohar@gmail.com>,
"Platform Driver" <platform-driver-x86@vger.kernel.org>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Andy Lutomirski" <luto@amacapital.net>,
"Mario Limonciello" <mario_limonciello@dell.com>,
"Rafael Wysocki" <rjw@rjwysocki.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>
Subject: Re: [PATCH v2] platform/x86: wmi-bmof: New driver to expose embedded Binary WMI MOF metadata
Date: Tue, 6 Jun 2017 09:34:42 -0700 [thread overview]
Message-ID: <20170606163442.GA32509@fury> (raw)
In-Reply-To: <CAHp75VcEpnMzjomrnEQQEFp6zCJjcBugaRRHZO0GUc3FOyjF_Q@mail.gmail.com>
On Tue, Jun 06, 2017 at 12:30:38PM +0300, Andy Shevchenko wrote:
> On Tue, Jun 6, 2017 at 6:16 AM, Andy Lutomirski <luto@kernel.org> wrote:
> > Many laptops (and maybe servers?) have embedded WMI Binary MOF metadata.
> > We do not yet have open-source tools for processing the data, although
> > one is in the works thanks to Pali:
> >
> > https://github.com/pali/bmfdec
> >
> > There is currently no interface to get the data in the first place. By
> > exposing it, we facilitate the development of new tools.
>
> My comments below.
> Overall, FWIW,
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
>
>
> > +config WMI_BMOF
> > + tristate "WMI embedded Binary MOF driver"
> > + depends on ACPI_WMI
>
> > + default y
>
> Since it can be module it would be better to have more sane default
> (distros usually prefers modules over built-in).
> Thus, I would go, for example, with
>
> default ACPI_WMI
Good point, done.
>
> > + ---help---
> > + Say Y here if you want to be able to read a firmware-embedded
> > + WMI Binary MOF data. Using this requires userspace tools and may be
> > + rather tedious.
> > +
> > + To compile this driver as a module, choose M here: the module will
> > + be called wmi-bmof.
>
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/init.h>
> > +#include <linux/slab.h>
> > +#include <linux/types.h>
> > +#include <linux/input.h>
> > +#include <linux/input/sparse-keymap.h>
> > +#include <linux/acpi.h>
> > +#include <linux/string.h>
> > +#include <linux/dmi.h>
> > +#include <linux/wmi.h>
> > +#include <acpi/video.h>
>
> Alphabetical order? Up to you.
Hrm. There seems to be plenty of similar suggestions on the mailing lists, but
nothing documented in coding-style.rst. If this is a thing we are going to ask
of our contributors, it should be documented. I'm happy to reorder, would you
consider sending the coding-style patch?
>
> > +#define WMI_BMOF_GUID "05901221-D566-11D1-B2F0-00A0C9062910"
>
> > +MODULE_ALIAS("wmi:" WMI_BMOF_GUID);
>
> I would gather all MODULE_* together, but it's also matter of taste.
>
Sure, done.
> > +static ssize_t
> > +read_bmof(struct file *filp, struct kobject *kobj,
> > + struct bin_attribute *attr,
> > + char *buf, loff_t off, size_t count)
> > +{
> > + struct bmof_priv *priv =
> > + container_of(attr, struct bmof_priv, bmof_bin_attr);
> > +
> > + if (off >= priv->bmofdata->buffer.length)
> > + return 0;
>
> Shouldn't we return an error code here? -ERANGE or alike?
>
I took some time and compared this with:
read(2)
lseek(2)
fseek(3)
memory_read_from_buffer()
If offset is <0, we should return EINVAL
If offset is >end_of_buffer.... it's not so cut and dry. It is simpler to just
return 0, and as far as how it affects usage... returning 0 seems perfectly
acceptable for typical read loop usage.
As loff_t is a long long, it could conceivably be < 0, so I've added a check for
that and return -EINVAL in that case.
> > +static int wmi_bmof_probe(struct wmi_device *wdev)
> > +{
>
> > + int ret;
> > +
> > + struct bmof_priv *priv =
> > + devm_kzalloc(&wdev->dev, sizeof(struct bmof_priv), GFP_KERNEL);
>
> I'm not a fan of memory allocation in definition block, so, I would rewrite this
>
> struct bmof_priv *priv;
> int ret;
>
> priv = devm_kzalloc(&wdev->dev, sizeof(struct bmof_priv), GFP_KERNEL);
>
Agreed, changed.
Thanks for the review Andy.
--
Darren Hart
VMware Open Source Technology Center
next prev parent reply other threads:[~2017-06-06 16:34 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-06 3:16 [PATCH v2] platform/x86: wmi-bmof: New driver to expose embedded Binary WMI MOF metadata Andy Lutomirski
2017-06-06 9:30 ` Andy Shevchenko
2017-06-06 16:34 ` Darren Hart [this message]
2017-06-06 16:54 ` Darren Hart
2017-06-06 18:45 ` Andy Shevchenko
2017-06-06 10:04 ` Pali Rohár
2017-06-06 17:02 ` Darren Hart
2017-06-06 20:50 ` Pali Rohár
2017-07-04 13:28 ` Pali Rohár
2017-11-23 14:39 ` Pali Rohár
2017-11-23 14:48 ` Andy Lutomirski
2017-06-06 22:31 ` Andy Lutomirski
2017-06-06 23:35 ` kbuild test robot
2017-06-06 23:35 ` kbuild test robot
2017-06-19 16:07 ` Pali Rohár
2017-06-19 16:13 ` Mario.Limonciello
2017-06-19 16:13 ` Mario.Limonciello
2017-06-19 16:19 ` Pali Rohár
2017-06-19 16:23 ` Andy Lutomirski
2017-06-20 12:12 ` Pali Rohár
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=20170606163442.GA32509@fury \
--to=dvhart@infradead.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--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=pali.rohar@gmail.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 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.