[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