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

From: Hans de Goede
Date: Mon Nov 07 2022 - 05:41:52 EST


Hi,

On 10/28/22 18:08, Limonciello, Mario wrote:
> [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.

I agree, I've added a Cc: stable while merging this and I'll include this
in my next fixes pull-req to Linus.

Jorge, many thanks for fixing this!

Thank you for your patch, I've applied this patch to my review-hans
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans

Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.

Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.

Regards,

Hans



>
>>
>> ---
>> 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
>