2023-11-27 22:24:46

by Armin Wolf

[permalink] [raw]
Subject: [PATCH] platform/x86: wmi: Skip blocks with zero instances

Some machines like the HP Omen 17 ck2000nf contain WMI blocks
with zero instances, so any WMI driver which tries to handle the
associated WMI device will fail.
Skip such WMI blocks to avoid confusing any WMI drivers.

Reported-by: Alexis Belmonte <[email protected]>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218188
Tested-by: Alexis Belmonte <[email protected]>
Signed-off-by: Armin Wolf <[email protected]>
---
drivers/platform/x86/wmi.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index cb7e74f2b009..4f94e4b117f1 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -1346,6 +1346,11 @@ static int parse_wdg(struct device *wmi_bus_dev, struct platform_device *pdev)
if (debug_dump_wdg)
wmi_dump_wdg(&gblock[i]);

+ if (!gblock[i].instance_count) {
+ dev_info(wmi_bus_dev, FW_INFO "%pUL has zero instances\n", &gblock[i].guid);
+ continue;
+ }
+
if (guid_already_parsed_for_legacy(device, &gblock[i].guid))
continue;

--
2.39.2


2023-11-28 13:14:37

by Ilpo Järvinen

[permalink] [raw]
Subject: Re: [PATCH] platform/x86: wmi: Skip blocks with zero instances

On Mon, 27 Nov 2023, Armin Wolf wrote:

> Some machines like the HP Omen 17 ck2000nf contain WMI blocks
> with zero instances, so any WMI driver which tries to handle the
> associated WMI device will fail.
> Skip such WMI blocks to avoid confusing any WMI drivers.
>
> Reported-by: Alexis Belmonte <[email protected]>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218188
> Tested-by: Alexis Belmonte <[email protected]>
> Signed-off-by: Armin Wolf <[email protected]>

Thanks for the patch. Should this have a Fixes tag?

--
i.


> ---
> drivers/platform/x86/wmi.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
> index cb7e74f2b009..4f94e4b117f1 100644
> --- a/drivers/platform/x86/wmi.c
> +++ b/drivers/platform/x86/wmi.c
> @@ -1346,6 +1346,11 @@ static int parse_wdg(struct device *wmi_bus_dev, struct platform_device *pdev)
> if (debug_dump_wdg)
> wmi_dump_wdg(&gblock[i]);
>
> + if (!gblock[i].instance_count) {
> + dev_info(wmi_bus_dev, FW_INFO "%pUL has zero instances\n", &gblock[i].guid);
> + continue;
> + }
> +
> if (guid_already_parsed_for_legacy(device, &gblock[i].guid))
> continue;
>
> --
> 2.39.2
>