* [RFC v2 0/2] platform/x86: Allow retrieving the number of WMI object instances @ 2023-04-26 21:28 Armin Wolf 2023-04-26 21:28 ` [RFC v2 1/2] platform/x86: wmi: " Armin Wolf 2023-04-26 21:28 ` [RFC v2 2/2] platform/x86: dell-sysman: Improve instance detection Armin Wolf 0 siblings, 2 replies; 8+ messages in thread From: Armin Wolf @ 2023-04-26 21:28 UTC (permalink / raw) To: hdegoede, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel This experimental patch series allows WMI drivers to retrieve the number of WMI object instances. This functionallity benefits several current and upcoming WMI drivers, the dell-wmi-sysman driver is converted to use this new API as an example. The changes are compile-tested only, the change to the dell-wmi-sysman driver also needs to be tested on real hardware. Armin Wolf (2): platform/x86: wmi: Allow retrieving the number of WMI object instances platform/x86: dell-sysman: Improve instance detection .../x86/dell/dell-wmi-sysman/sysman.c | 15 ++++--- drivers/platform/x86/wmi.c | 40 +++++++++++++++++++ include/linux/acpi.h | 2 + include/linux/wmi.h | 2 + 4 files changed, 51 insertions(+), 8 deletions(-) -- 2.30.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances 2023-04-26 21:28 [RFC v2 0/2] platform/x86: Allow retrieving the number of WMI object instances Armin Wolf @ 2023-04-26 21:28 ` Armin Wolf 2023-04-27 6:19 ` James Seo 2023-04-27 9:43 ` Hans de Goede 2023-04-26 21:28 ` [RFC v2 2/2] platform/x86: dell-sysman: Improve instance detection Armin Wolf 1 sibling, 2 replies; 8+ messages in thread From: Armin Wolf @ 2023-04-26 21:28 UTC (permalink / raw) To: hdegoede, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel Currently, the WMI driver core knows how many instances of a given WMI object exist, but WMI drivers cannot access this information. At the same time, some current and upcoming WMI drivers want to have access to this information. Add wmi_instance_count() and wmidev_instance_count() to allow WMI drivers to get the number of WMI object instances. Signed-off-by: Armin Wolf <W_Armin@gmx.de> --- drivers/platform/x86/wmi.c | 40 ++++++++++++++++++++++++++++++++++++++ include/linux/acpi.h | 2 ++ include/linux/wmi.h | 2 ++ 3 files changed, 44 insertions(+) diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index c226dd4163a1..7c1a904dec5f 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -263,6 +263,46 @@ int set_required_buffer_size(struct wmi_device *wdev, u64 length) } EXPORT_SYMBOL_GPL(set_required_buffer_size); +/** + * wmi_instance_count - Get number of WMI object instances + * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba + * @instance_count: variable to hold the instance count + * + * Get the number of WMI object instances. + * + * Returns: acpi_status signaling success or error. + */ +acpi_status wmi_instance_count(const char *guid_string, u8 *instance_count) +{ + struct wmi_block *wblock; + acpi_status status; + + status = find_guid(guid_string, &wblock); + if (ACPI_FAILURE(status)) + return status; + + *instance_count = wmidev_instance_count(&wblock->dev); + + return AE_OK; +} +EXPORT_SYMBOL_GPL(wmi_instance_count); + +/** + * wmidev_instance_count - Get number of WMI object instances + * @wdev: A wmi bus device from a driver + * + * Get the number of WMI object instances. + * + * Returns: Number of WMI object instances. + */ +u8 wmidev_instance_count(struct wmi_device *wdev) +{ + struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); + + return wblock->gblock.instance_count; +} +EXPORT_SYMBOL_GPL(wmidev_instance_count); + /** * wmi_evaluate_method - Evaluate a WMI method (deprecated) * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba diff --git a/include/linux/acpi.h b/include/linux/acpi.h index efff750f326d..ab2a4b23e7a3 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -412,6 +412,8 @@ extern bool acpi_is_pnp_device(struct acpi_device *); typedef void (*wmi_notify_handler) (u32 value, void *context); +acpi_status wmi_instance_count(const char *guid, u8 *instance_count); + extern acpi_status wmi_evaluate_method(const char *guid, u8 instance, u32 method_id, const struct acpi_buffer *in, diff --git a/include/linux/wmi.h b/include/linux/wmi.h index c1a3bd4e4838..763bd382cf2d 100644 --- a/include/linux/wmi.h +++ b/include/linux/wmi.h @@ -35,6 +35,8 @@ extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev, extern union acpi_object *wmidev_block_query(struct wmi_device *wdev, u8 instance); +u8 wmidev_instance_count(struct wmi_device *wdev); + extern int set_required_buffer_size(struct wmi_device *wdev, u64 length); /** -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances 2023-04-26 21:28 ` [RFC v2 1/2] platform/x86: wmi: " Armin Wolf @ 2023-04-27 6:19 ` James Seo 2023-04-27 9:43 ` Hans de Goede 1 sibling, 0 replies; 8+ messages in thread From: James Seo @ 2023-04-27 6:19 UTC (permalink / raw) To: Armin Wolf Cc: hdegoede, markgross, Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel On Wed, Apr 26, 2023 at 11:28:47PM +0200, Armin Wolf wrote: > Currently, the WMI driver core knows how many instances of a given > WMI object exist, but WMI drivers cannot access this information. > At the same time, some current and upcoming WMI drivers want to > have access to this information. Add wmi_instance_count() and > wmidev_instance_count() to allow WMI drivers to get the number of > WMI object instances. > > Signed-off-by: Armin Wolf <W_Armin@gmx.de> Tested-by: James Seo <james@equiv.tech> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances @ 2023-04-27 6:19 ` James Seo 0 siblings, 0 replies; 8+ messages in thread From: James Seo @ 2023-04-27 6:19 UTC (permalink / raw) To: Armin Wolf Cc: hdegoede, markgross, Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel On Wed, Apr 26, 2023 at 11:28:47PM +0200, Armin Wolf wrote: > Currently, the WMI driver core knows how many instances of a given > WMI object exist, but WMI drivers cannot access this information. > At the same time, some current and upcoming WMI drivers want to > have access to this information. Add wmi_instance_count() and > wmidev_instance_count() to allow WMI drivers to get the number of > WMI object instances. > > Signed-off-by: Armin Wolf <W_Armin@gmx.de> Tested-by: James Seo <james@equiv.tech> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances 2023-04-26 21:28 ` [RFC v2 1/2] platform/x86: wmi: " Armin Wolf 2023-04-27 6:19 ` James Seo @ 2023-04-27 9:43 ` Hans de Goede 2023-04-27 16:26 ` Armin Wolf 1 sibling, 1 reply; 8+ messages in thread From: Hans de Goede @ 2023-04-27 9:43 UTC (permalink / raw) To: Armin Wolf, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel Hi Armin, Thank you for your work on this. On 4/26/23 23:28, Armin Wolf wrote: > Currently, the WMI driver core knows how many instances of a given > WMI object exist, but WMI drivers cannot access this information. > At the same time, some current and upcoming WMI drivers want to > have access to this information. Add wmi_instance_count() and > wmidev_instance_count() to allow WMI drivers to get the number of > WMI object instances. > > Signed-off-by: Armin Wolf <W_Armin@gmx.de> > --- > drivers/platform/x86/wmi.c | 40 ++++++++++++++++++++++++++++++++++++++ > include/linux/acpi.h | 2 ++ > include/linux/wmi.h | 2 ++ > 3 files changed, 44 insertions(+) > > diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c > index c226dd4163a1..7c1a904dec5f 100644 > --- a/drivers/platform/x86/wmi.c > +++ b/drivers/platform/x86/wmi.c > @@ -263,6 +263,46 @@ int set_required_buffer_size(struct wmi_device *wdev, u64 length) > } > EXPORT_SYMBOL_GPL(set_required_buffer_size); > > +/** > + * wmi_instance_count - Get number of WMI object instances > + * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba > + * @instance_count: variable to hold the instance count > + * > + * Get the number of WMI object instances. > + * > + * Returns: acpi_status signaling success or error. > + */ > +acpi_status wmi_instance_count(const char *guid_string, u8 *instance_count) > +{ > + struct wmi_block *wblock; > + acpi_status status; > + > + status = find_guid(guid_string, &wblock); > + if (ACPI_FAILURE(status)) > + return status; > + > + *instance_count = wmidev_instance_count(&wblock->dev); > + > + return AE_OK; > +} > +EXPORT_SYMBOL_GPL(wmi_instance_count); I would prefer this to have a normal kernel function prototype which returns -errno rather then returning an acpi_status. E.g. : /** * wmi_instance_count - Get number of WMI object instances * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba * * Get the number of WMI object instances. * * Returns: The number of WMI object instances, 0 if the GUID is not found. */ int wmi_instance_count(const char *guid_string) { struct wmi_block *wblock; acpi_status status; status = find_guid(guid_string, &wblock); if (ACPI_FAILURE(status)) return 0; return wmidev_instance_count(&wblock->dev); } EXPORT_SYMBOL_GPL(wmi_instance_count); This will also allow this to completely replace the get_instance_count() function in dell-wmi-sysman. Note I have just gone with always returning 0 here on error. I guess you could look at the status and return 0 for not-found and -errno for other errors but I don't think any callers will care for the difference, so just always returning 0 seems easier for callers to deal with. As always this is just a suggestion, let me know if you think this is a bad idea. Regards, Hans > + > +/** > + * wmidev_instance_count - Get number of WMI object instances > + * @wdev: A wmi bus device from a driver > + * > + * Get the number of WMI object instances. > + * > + * Returns: Number of WMI object instances. > + */ > +u8 wmidev_instance_count(struct wmi_device *wdev) > +{ > + struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); > + > + return wblock->gblock.instance_count; > +} > +EXPORT_SYMBOL_GPL(wmidev_instance_count); > + > /** > * wmi_evaluate_method - Evaluate a WMI method (deprecated) > * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba > diff --git a/include/linux/acpi.h b/include/linux/acpi.h > index efff750f326d..ab2a4b23e7a3 100644 > --- a/include/linux/acpi.h > +++ b/include/linux/acpi.h > @@ -412,6 +412,8 @@ extern bool acpi_is_pnp_device(struct acpi_device *); > > typedef void (*wmi_notify_handler) (u32 value, void *context); > > +acpi_status wmi_instance_count(const char *guid, u8 *instance_count); > + > extern acpi_status wmi_evaluate_method(const char *guid, u8 instance, > u32 method_id, > const struct acpi_buffer *in, > diff --git a/include/linux/wmi.h b/include/linux/wmi.h > index c1a3bd4e4838..763bd382cf2d 100644 > --- a/include/linux/wmi.h > +++ b/include/linux/wmi.h > @@ -35,6 +35,8 @@ extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev, > extern union acpi_object *wmidev_block_query(struct wmi_device *wdev, > u8 instance); > > +u8 wmidev_instance_count(struct wmi_device *wdev); > + > extern int set_required_buffer_size(struct wmi_device *wdev, u64 length); > > /** > -- > 2.30.2 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances 2023-04-27 9:43 ` Hans de Goede @ 2023-04-27 16:26 ` Armin Wolf 2023-04-29 9:27 ` Hans de Goede 0 siblings, 1 reply; 8+ messages in thread From: Armin Wolf @ 2023-04-27 16:26 UTC (permalink / raw) To: Hans de Goede, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel Am 27.04.23 um 11:43 schrieb Hans de Goede: > Hi Armin, > > Thank you for your work on this. > > On 4/26/23 23:28, Armin Wolf wrote: >> Currently, the WMI driver core knows how many instances of a given >> WMI object exist, but WMI drivers cannot access this information. >> At the same time, some current and upcoming WMI drivers want to >> have access to this information. Add wmi_instance_count() and >> wmidev_instance_count() to allow WMI drivers to get the number of >> WMI object instances. >> >> Signed-off-by: Armin Wolf <W_Armin@gmx.de> >> --- >> drivers/platform/x86/wmi.c | 40 ++++++++++++++++++++++++++++++++++++++ >> include/linux/acpi.h | 2 ++ >> include/linux/wmi.h | 2 ++ >> 3 files changed, 44 insertions(+) >> >> diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c >> index c226dd4163a1..7c1a904dec5f 100644 >> --- a/drivers/platform/x86/wmi.c >> +++ b/drivers/platform/x86/wmi.c >> @@ -263,6 +263,46 @@ int set_required_buffer_size(struct wmi_device *wdev, u64 length) >> } >> EXPORT_SYMBOL_GPL(set_required_buffer_size); >> >> +/** >> + * wmi_instance_count - Get number of WMI object instances >> + * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba >> + * @instance_count: variable to hold the instance count >> + * >> + * Get the number of WMI object instances. >> + * >> + * Returns: acpi_status signaling success or error. >> + */ >> +acpi_status wmi_instance_count(const char *guid_string, u8 *instance_count) >> +{ >> + struct wmi_block *wblock; >> + acpi_status status; >> + >> + status = find_guid(guid_string, &wblock); >> + if (ACPI_FAILURE(status)) >> + return status; >> + >> + *instance_count = wmidev_instance_count(&wblock->dev); >> + >> + return AE_OK; >> +} >> +EXPORT_SYMBOL_GPL(wmi_instance_count); > I would prefer this to have a normal kernel function prototype > which returns -errno rather then returning an acpi_status. E.g. : > > /** > * wmi_instance_count - Get number of WMI object instances > * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba > * > * Get the number of WMI object instances. > * > * Returns: The number of WMI object instances, 0 if the GUID is not found. > */ > int wmi_instance_count(const char *guid_string) > { > struct wmi_block *wblock; > acpi_status status; > > status = find_guid(guid_string, &wblock); > if (ACPI_FAILURE(status)) > return 0; > > return wmidev_instance_count(&wblock->dev); > } > EXPORT_SYMBOL_GPL(wmi_instance_count); > > This will also allow this to completely replace > the get_instance_count() function in dell-wmi-sysman. > > Note I have just gone with always returning 0 here > on error. I guess you could look at the status and > return 0 for not-found and -errno for other errors > but I don't think any callers will care for the difference, > so just always returning 0 seems easier for callers to > deal with. > > As always this is just a suggestion, let me know if > you think this is a bad idea. > > Regards, > > Hans > I like this idea. Returning a negative errno on error would allow drivers to distinguish between "WMI object not found" and "zero instances found", which might be useful for some drivers. Maybe a function for converting ACPI errors to POSIX errors already exists, otherwise i will just write one myself. Armin Wolf > >> + >> +/** >> + * wmidev_instance_count - Get number of WMI object instances >> + * @wdev: A wmi bus device from a driver >> + * >> + * Get the number of WMI object instances. >> + * >> + * Returns: Number of WMI object instances. >> + */ >> +u8 wmidev_instance_count(struct wmi_device *wdev) >> +{ >> + struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); >> + >> + return wblock->gblock.instance_count; >> +} >> +EXPORT_SYMBOL_GPL(wmidev_instance_count); >> + >> /** >> * wmi_evaluate_method - Evaluate a WMI method (deprecated) >> * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h >> index efff750f326d..ab2a4b23e7a3 100644 >> --- a/include/linux/acpi.h >> +++ b/include/linux/acpi.h >> @@ -412,6 +412,8 @@ extern bool acpi_is_pnp_device(struct acpi_device *); >> >> typedef void (*wmi_notify_handler) (u32 value, void *context); >> >> +acpi_status wmi_instance_count(const char *guid, u8 *instance_count); >> + >> extern acpi_status wmi_evaluate_method(const char *guid, u8 instance, >> u32 method_id, >> const struct acpi_buffer *in, >> diff --git a/include/linux/wmi.h b/include/linux/wmi.h >> index c1a3bd4e4838..763bd382cf2d 100644 >> --- a/include/linux/wmi.h >> +++ b/include/linux/wmi.h >> @@ -35,6 +35,8 @@ extern acpi_status wmidev_evaluate_method(struct wmi_device *wdev, >> extern union acpi_object *wmidev_block_query(struct wmi_device *wdev, >> u8 instance); >> >> +u8 wmidev_instance_count(struct wmi_device *wdev); >> + >> extern int set_required_buffer_size(struct wmi_device *wdev, u64 length); >> >> /** >> -- >> 2.30.2 >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC v2 1/2] platform/x86: wmi: Allow retrieving the number of WMI object instances 2023-04-27 16:26 ` Armin Wolf @ 2023-04-29 9:27 ` Hans de Goede 0 siblings, 0 replies; 8+ messages in thread From: Hans de Goede @ 2023-04-29 9:27 UTC (permalink / raw) To: Armin Wolf, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel Hi, On 4/27/23 18:26, Armin Wolf wrote: > Am 27.04.23 um 11:43 schrieb Hans de Goede: > >> Hi Armin, >> >> Thank you for your work on this. >> >> On 4/26/23 23:28, Armin Wolf wrote: >>> Currently, the WMI driver core knows how many instances of a given >>> WMI object exist, but WMI drivers cannot access this information. >>> At the same time, some current and upcoming WMI drivers want to >>> have access to this information. Add wmi_instance_count() and >>> wmidev_instance_count() to allow WMI drivers to get the number of >>> WMI object instances. >>> >>> Signed-off-by: Armin Wolf <W_Armin@gmx.de> >>> --- >>> drivers/platform/x86/wmi.c | 40 ++++++++++++++++++++++++++++++++++++++ >>> include/linux/acpi.h | 2 ++ >>> include/linux/wmi.h | 2 ++ >>> 3 files changed, 44 insertions(+) >>> >>> diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c >>> index c226dd4163a1..7c1a904dec5f 100644 >>> --- a/drivers/platform/x86/wmi.c >>> +++ b/drivers/platform/x86/wmi.c >>> @@ -263,6 +263,46 @@ int set_required_buffer_size(struct wmi_device *wdev, u64 length) >>> } >>> EXPORT_SYMBOL_GPL(set_required_buffer_size); >>> >>> +/** >>> + * wmi_instance_count - Get number of WMI object instances >>> + * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba >>> + * @instance_count: variable to hold the instance count >>> + * >>> + * Get the number of WMI object instances. >>> + * >>> + * Returns: acpi_status signaling success or error. >>> + */ >>> +acpi_status wmi_instance_count(const char *guid_string, u8 *instance_count) >>> +{ >>> + struct wmi_block *wblock; >>> + acpi_status status; >>> + >>> + status = find_guid(guid_string, &wblock); >>> + if (ACPI_FAILURE(status)) >>> + return status; >>> + >>> + *instance_count = wmidev_instance_count(&wblock->dev); >>> + >>> + return AE_OK; >>> +} >>> +EXPORT_SYMBOL_GPL(wmi_instance_count); >> I would prefer this to have a normal kernel function prototype >> which returns -errno rather then returning an acpi_status. E.g. : >> >> /** >> * wmi_instance_count - Get number of WMI object instances >> * @guid_string: 36 char string of the form fa50ff2b-f2e8-45de-83fa-65417f2f49ba >> * >> * Get the number of WMI object instances. >> * >> * Returns: The number of WMI object instances, 0 if the GUID is not found. >> */ >> int wmi_instance_count(const char *guid_string) >> { >> struct wmi_block *wblock; >> acpi_status status; >> >> status = find_guid(guid_string, &wblock); >> if (ACPI_FAILURE(status)) >> return 0; >> >> return wmidev_instance_count(&wblock->dev); >> } >> EXPORT_SYMBOL_GPL(wmi_instance_count); >> >> This will also allow this to completely replace >> the get_instance_count() function in dell-wmi-sysman. >> >> Note I have just gone with always returning 0 here >> on error. I guess you could look at the status and >> return 0 for not-found and -errno for other errors >> but I don't think any callers will care for the difference, >> so just always returning 0 seems easier for callers to >> deal with. >> >> As always this is just a suggestion, let me know if >> you think this is a bad idea. >> >> Regards, >> >> Hans >> > I like this idea. Returning a negative errno on error would allow drivers to > distinguish between "WMI object not found" and "zero instances found", which > might be useful for some drivers. > > Maybe a function for converting ACPI errors to POSIX errors already exists, > otherwise i will just write one myself. Ok, that sounds good to me. I'm looking forward to a non RFC submission of these changes. Regards, Hans ^ permalink raw reply [flat|nested] 8+ messages in thread
* [RFC v2 2/2] platform/x86: dell-sysman: Improve instance detection 2023-04-26 21:28 [RFC v2 0/2] platform/x86: Allow retrieving the number of WMI object instances Armin Wolf 2023-04-26 21:28 ` [RFC v2 1/2] platform/x86: wmi: " Armin Wolf @ 2023-04-26 21:28 ` Armin Wolf 1 sibling, 0 replies; 8+ messages in thread From: Armin Wolf @ 2023-04-26 21:28 UTC (permalink / raw) To: hdegoede, markgross Cc: Mario.Limonciello, prasanth.ksr, jorgealtxwork, james, Dell.Client.Kernel, platform-driver-x86, linux-kernel The WMI driver core already knows how many WMI object instances are available, use this information instead of probing the WMI object manually. Compile-tested only. Signed-off-by: Armin Wolf <W_Armin@gmx.de> --- .../platform/x86/dell/dell-wmi-sysman/sysman.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c index 0285b47d99d1..526d60b510bb 100644 --- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c @@ -7,6 +7,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include <linux/acpi.h> #include <linux/fs.h> #include <linux/dmi.h> #include <linux/module.h> @@ -303,16 +304,14 @@ union acpi_object *get_wmiobj_pointer(int instance_id, const char *guid_string) */ int get_instance_count(const char *guid_string) { - union acpi_object *wmi_obj = NULL; - int i = 0; + acpi_status status; + u8 instance_count; - do { - kfree(wmi_obj); - wmi_obj = get_wmiobj_pointer(i, guid_string); - i++; - } while (wmi_obj); + status = wmi_instance_count(guid_string, &instance_count); + if (ACPI_FAILURE(status)) + return 0; - return (i-1); + return instance_count; } /** -- 2.30.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-04-29 9:28 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-04-26 21:28 [RFC v2 0/2] platform/x86: Allow retrieving the number of WMI object instances Armin Wolf 2023-04-26 21:28 ` [RFC v2 1/2] platform/x86: wmi: " Armin Wolf 2023-04-27 6:19 ` James Seo 2023-04-27 6:19 ` James Seo 2023-04-27 9:43 ` Hans de Goede 2023-04-27 16:26 ` Armin Wolf 2023-04-29 9:27 ` Hans de Goede 2023-04-26 21:28 ` [RFC v2 2/2] platform/x86: dell-sysman: Improve instance detection Armin Wolf
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.