All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Pearson <markpearson@lenovo.com>
To: Hans de Goede <hdegoede@redhat.com>
Cc: <mgross@linux.intel.com>, <platform-driver-x86@vger.kernel.org>,
	<divya.bharathi@dell.com>, <prasanth.ksr@dell.com>
Subject: Re: [External] Re: [PATCH v2 1/3] platform/x86: firmware_attributes_class: Create helper file for handling firmware-attributes class registration events
Date: Wed, 19 May 2021 12:45:48 -0400	[thread overview]
Message-ID: <c7b439e6-63f9-a061-c489-6edd7f9e15c6@lenovo.com> (raw)
In-Reply-To: <5eafa0be-e44c-e8fd-a9ea-db5e30c47788@redhat.com>

Thanks Hans

On 2021-05-19 12:15 p.m., Hans de Goede wrote:
> Hi Mark,
> 
> On 5/9/21 3:57 AM, Mark Pearson wrote:
>> This will be used by the Dell and Lenovo WMI management drivers to
>> prevent both drivers being active.
>>
>> Signed-off-by: Mark Pearson <markpearson@lenovo.com>
>> ---
>> Changes in v2:
>>  This is a new file requested as part of the review of the proposed
>> think_lmi.c driver. Labeling as V2 to keep series consistent (hope
>> that's correct).
> 
> Yes that is correct; and thank you for taking care of making
> the code for registering the firmware_attribute class shared.
> 
>>
>>  drivers/platform/x86/Kconfig                  |  6 +++
>>  drivers/platform/x86/Makefile                 |  1 +
>>  .../platform/x86/firmware_attributes_class.c  | 51 +++++++++++++++++++
>>  .../platform/x86/firmware_attributes_class.h  | 13 +++++
>>  4 files changed, 71 insertions(+)
>>  create mode 100644 drivers/platform/x86/firmware_attributes_class.c
>>  create mode 100644 drivers/platform/x86/firmware_attributes_class.h
>>
>> diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
>> index 2714f7c38..b0e1e5f65 100644
>> --- a/drivers/platform/x86/Kconfig
>> +++ b/drivers/platform/x86/Kconfig
>> @@ -1076,6 +1076,12 @@ config TOUCHSCREEN_DMI
>>  	  the OS-image for the device. This option supplies the missing info.
>>  	  Enable this for x86 tablets with Silead or Chipone touchscreens.
>>  
>> +config FW_ATTR_CLASS
>> +	tristate "Firmware attributes class helper module"> +	help
>> +	  This option should be enabled by any modules using the firmware
>> +	  attributes class.
> 
> My idea here was to have this be a kernel-library which drivers which need it
> select. In this case it should not be visible to end-users and does not need a
> help text, so this should look like this:
> 
> config FW_ATTR_CLASS
> 	tristate
> 	default n
> 
Got it - I'll update

>>  config INTEL_IMR
>>  	bool "Intel Isolated Memory Region support"
>>  	depends on X86_INTEL_QUARK && IOSF_MBI
>> diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
>> index dcc8cdb95..147573f69 100644
>> --- a/drivers/platform/x86/Makefile
>> +++ b/drivers/platform/x86/Makefile
>> @@ -115,6 +115,7 @@ obj-$(CONFIG_TOPSTAR_LAPTOP)	+= topstar-laptop.o
>>  obj-$(CONFIG_I2C_MULTI_INSTANTIATE)	+= i2c-multi-instantiate.o
>>  obj-$(CONFIG_MLX_PLATFORM)		+= mlx-platform.o
>>  obj-$(CONFIG_TOUCHSCREEN_DMI)		+= touchscreen_dmi.o
>> +obj-$(CONFIG_FW_ATTR_CLASS)             += firmware_attributes_class.o
>>  
>>  # Intel uncore drivers
>>  obj-$(CONFIG_INTEL_IPS)				+= intel_ips.o
>> diff --git a/drivers/platform/x86/firmware_attributes_class.c b/drivers/platform/x86/firmware_attributes_class.c
>> new file mode 100644
>> index 000000000..4ed959d6c
>> --- /dev/null
>> +++ b/drivers/platform/x86/firmware_attributes_class.c
>> @@ -0,0 +1,51 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later
>> +
>> +/* Firmware attributes class helper module */
>> +
>> +#include <linux/mutex.h>
>> +#include <linux/device/class.h>
>> +#include <linux/module.h>
>> +
>> +static DEFINE_MUTEX(fw_attr_lock);
>> +bool fw_attr_inuse;
>> +
>> +static struct class firmware_attributes_class = {
>> +	.name = "firmware-attributes",
>> +};
>> +
>> +int fw_attributes_class_register(struct class **fw_attr_class)
>> +{
>> +	int err;
>> +
>> +	mutex_lock(&fw_attr_lock);
>> +	/* We can only have one active FW attribute class */
>> +	if (fw_attr_inuse) {
>> +		mutex_unlock(&fw_attr_lock);
>> +		return -EEXIST;
>> +	}
> 
> I think it should be allowed to have multiple drivers
> using the firmware_attributes class, e.g. besides the main system
> BIOS an Ethermet or FiberChannel; card with an option ROM which supports
> booting from iSCSI/FCoE or FiberChannel SCSI disks / LUNs could expose
> settings to configure which disk/LUN to boot from this way.
> 
> And there is nothing wrong with multiple drivers calling device_create
> with the same class.
> 
> So I suggest renaming fw_attributes_class_register to
> fw_attributes_class_get (and unregister to put) and to make
> fw_attr_inuse a counter and create the class when the counter
> goes from 0 -> 1 and free it when it goes from 1 to 0 again.
> 
> Otherwise this looks good. I like that you already thought about
> races and have protected fw_attr_inuse with a mutex.
> 
Ah - I hadn't considered it as being used with devices other than the
BIOS. That all makes sense and I'll update.

Thanks for the review!
Mark

  reply	other threads:[~2021-05-19 16:45 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-09  1:57 [PATCH v2 1/3] platform/x86: firmware_attributes_class: Create helper file for handling firmware-attributes class registration events Mark Pearson
2021-05-09  1:57 ` [PATCH v2 2/3] platform/x86: dell-wmi-sysman: Use firmware_attributes_class helper Mark Pearson
2021-05-19 16:17   ` Hans de Goede
2021-05-09  1:57 ` [PATCH v2 3/3] platform/x86: think-lmi: Add WMI interface support on Lenovo platforms Mark Pearson
2021-05-19 17:06   ` Hans de Goede
2021-05-20 17:18     ` [External] " Mark Pearson
2021-05-21  8:10       ` Hans de Goede
2021-05-21  9:37         ` Hans de Goede
2021-05-21 15:55         ` Mark Pearson
2021-05-21 16:55           ` Hans de Goede
2021-05-21 19:00             ` Mark Pearson
2021-05-24 10:19             ` Ksr, Prasanth
2021-05-24 15:27               ` Hans de Goede
2021-05-25 14:02                 ` Mark Pearson
2021-05-22 11:04   ` Andy Shevchenko
2021-05-25 15:14     ` [External] " Mark Pearson
2021-05-25 16:18       ` Andy Shevchenko
2021-05-25 16:50         ` Mark Pearson
2021-05-25 16:29       ` Hans de Goede
2021-05-25 16:52         ` Mark Pearson
2021-05-19 16:15 ` [PATCH v2 1/3] platform/x86: firmware_attributes_class: Create helper file for handling firmware-attributes class registration events Hans de Goede
2021-05-19 16:45   ` Mark Pearson [this message]
2021-05-19 16:19 ` Hans de Goede

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=c7b439e6-63f9-a061-c489-6edd7f9e15c6@lenovo.com \
    --to=markpearson@lenovo.com \
    --cc=divya.bharathi@dell.com \
    --cc=hdegoede@redhat.com \
    --cc=mgross@linux.intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=prasanth.ksr@dell.com \
    /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.