RE: [PATCH v1] hp_wmi causing rfkill soft blocked wifi

From: Limonciello, Mario
Date: Fri Oct 28 2022 - 12:12:56 EST


[Public]

+Anson

> -----Original Message-----
> From: Jorge Lopez <jorgealtxwork@xxxxxxxxx>
> Sent: Friday, October 28, 2022 10:55
> To: hdegoede@xxxxxxxxxx; balalic.enver@xxxxxxxxx; platform-driver-
> x86@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Cc: markgross@xxxxxxxxxx
> Subject: [PATCH v1] hp_wmi causing rfkill soft blocked wifi
>
> After upgrading BIOS to U82 01.02.01 Rev.A, the console is flooded
> strange char "^@" which printed out every second and makes login
> nearly impossible. Also the below messages were shown both in console
> and journal/dmesg every second:
>
> usb 1-3: Device not responding to setup address.
> usb 1-3: device not accepting address 4, error -71
> usb 1-3: device descriptor read/all, error -71
> usb usb1-port3: unable to enumerate USB device
>
> Wifi is soft blocked by checking rfkill. When unblocked manually,
> after few seconds it would be soft blocked again. So I was suspecting
> something triggered rfkill to soft block wifi. At the end it was
> fixed by removing hp_wmi module.
>
> The root cause is the way hp-wmi driver handles command 1B on
> post-2009 BIOS. In pre-2009 BIOS, command 1Bh return 0x4 to indicate
> that BIOS no longer controls the power for the wireless devices.
>
> Signed-off-by: Jorge Lopez <jorge.lopez2@xxxxxx>

Link: https://bugzilla.kernel.org/show_bug.cgi?id=216468
Reviewed-by: Mario Limonciello <mario.limonciello@xxxxxxx>

Hans,

Since this is effectively essentially removing the broken BIOS RFKILL interface
for numerous machines I think this should probably go to stable too, if you agree.

>
> ---
> Based on the latest platform-drivers-x86.git/for-next
> ---
> drivers/platform/x86/hp-wmi.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
> index 627a6d0eaf83..29cd4e437d97 100644
> --- a/drivers/platform/x86/hp-wmi.c
> +++ b/drivers/platform/x86/hp-wmi.c
> @@ -1300,8 +1300,15 @@ static int __init hp_wmi_bios_setup(struct
> platform_device *device)
> wwan_rfkill = NULL;
> rfkill2_count = 0;
>
> - if (hp_wmi_rfkill_setup(device))
> - hp_wmi_rfkill2_setup(device);
> + /*
> + * In pre-2009 BIOS, command 1Bh return 0x4 to indicate that
> + * BIOS no longer controls the power for the wireless
> + * devices. All features supported by this command will no
> + * longer be supported.
> + */
> + if (!hp_wmi_bios_2009_later())
> + if (hp_wmi_rfkill_setup(device))
> + hp_wmi_rfkill2_setup(device);
>
> err = hp_wmi_hwmon_init();
>
> --
> 2.34.1