Re: [PATCH v6 13/14] platform/x86: wmi: create character devices when requested by drivers

From: Greg KH
Date: Tue Oct 10 2017 - 09:57:41 EST


On Tue, Oct 10, 2017 at 01:41:45PM +0000, Mario.Limonciello@xxxxxxxx wrote:
> > -----Original Message-----
> > From: Greg KH [mailto:greg@xxxxxxxxx]
> > Sent: Tuesday, October 10, 2017 6:07 AM
> > To: Limonciello, Mario <Mario_Limonciello@xxxxxxxx>
> > Cc: dvhart@xxxxxxxxxxxxx; Andy Shevchenko <andy.shevchenko@xxxxxxxxx>;
> > LKML <linux-kernel@xxxxxxxxxxxxxxx>; platform-driver-x86@xxxxxxxxxxxxxxx;
> > Andy Lutomirski <luto@xxxxxxxxxx>; quasisec@xxxxxxxxxx;
> > pali.rohar@xxxxxxxxx; rjw@xxxxxxxxxxxxx; mjg59@xxxxxxxxxx; hch@xxxxxx
> > Subject: Re: [PATCH v6 13/14] platform/x86: wmi: create character devices when
> > requested by drivers
> >
> > On Mon, Oct 09, 2017 at 05:51:51PM -0500, Mario Limonciello wrote:
> > > --- /dev/null
> > > +++ b/include/uapi/linux/wmi.h
> > > @@ -0,0 +1,19 @@
> > > +/*
> > > + * User API methods for ACPI-WMI mapping driver
> > > + *
> > > + * Copyright (C) 2017 Dell, Inc.
> > > + *
> > > + * This program is free software; you can redistribute it and/or modify
> > > + * it under the terms of the GNU General Public License version 2 as
> > > + * published by the Free Software Foundation.
> > > + */
> > > +#ifndef _UAPI_LINUX_WMI_H
> > > +#define _UAPI_LINUX_WMI_H
> > > +
> > > +#define WMI_IOC 'W'
> > > +#define WMI_IO(instance) _IO(WMI_IOC, instance)
> > > +#define WMI_IOR(instance, type) _IOR(WMI_IOC, instance, type)
> > > +#define WMI_IOW(instance, type) _IOW(WMI_IOC, instance, type)
> > > +#define WMI_IOWR(instance, type) _IOWR(WMI_IOC, instance, type)
> >
> > Are these really needed in a uapi .h file? Who needs them? And why not
> > just use a "normal" ioctl macro in your individual driver .h file? Do
> > these really help?
> >
> Since this is setting precedent that WMI drivers will use the IOC 'W' and the WMI
> bus driver will dispatch calls to the proper drivers, I think they make sense to include.

But who will use those macros? Those drivers?

As the individual drivers have to define the correct "instance, type",
this seems like a header file that is wrapping things unnecessarily.
Why not just put all of the needed WMI ioctls in a single file, one for
all of the drivers? No need to have special per-driver ioctl .h files,
right?

thanks,

greg k-h