Hi, On 1/25/21 8:43 PM, mark gross wrote: > On Fri, Jan 22, 2021 at 01:15:05AM +0100, Hans de Goede wrote: >> Hi, >> >> On 1/22/21 12:48 AM, mark gross wrote: >>> On Wed, Jan 20, 2021 at 01:49:41PM +0100, Hans de Goede wrote: >>>> Recently userspace has started making more use of SW_TABLET_MODE >>>> (when an input-dev reports this). >>>> >>>> Specifically recent GNOME3 versions will: >>>> >>>> 1. When SW_TABLET_MODE is reported and is reporting 0: >>>> 1.1 Disable accelerometer-based screen auto-rotation >>>> 1.2 Disable automatically showing the on-screen keyboard when a >>>> text-input field is focussed >>>> >>>> 2. When SW_TABLET_MODE is reported and is reporting 1: >>>> 2.1 Ignore input-events from the builtin keyboard and touchpad >>>> (this is for 360° hinges style 2-in-1s where the keyboard and >>>> touchpads are accessible on the back of the tablet when folded >>>> into tablet-mode) >>>> >>>> This means that claiming to support SW_TABLET_MODE when it does not >>>> actually work / reports correct values has bad side-effects. >>> did you mean "reports incorrect values"? >> >> Yes and no, I meant this to be read as "does not (...) report correct values" >> but your suggestion is better I will fix this for v2. >> >>> >>>> >>>> The check in the hp-wmi code which is used to decide if the input-dev >>>> should claim SW_TABLET_MODE support, only checks if the >>>> HPWMI_HARDWARE_QUERY is supported. It does *not* check if the hardware >>>> actually is capable of reporting SW_TABLET_MODE. >>>> >>>> This leads to the hp-wmi input-dev claming SW_TABLET_MODE support, >>>> while in reality it will always report 0 as SW_TABLET_MODE value. >>>> This has been seen on a "HP ENVY x360 Convertible 15-cp0xxx" and >>>> this likely is the case on a whole lot of other HP models. >>>> >>>> This problem causes both auto-rotation and on-screen keyboard >>>> support to not work on affected x360 models. >>>> >>>> There is no easy fix for this, but since userspace expects >>>> SW_TABLET_MODE reporting to be reliable when advertised it is >>>> better to not claim/report SW_TABLET_MODE support at all, then >>> than >>>> to claim to support it while it does not work. >>>> >>>> To avoid the mentioned problems, add a new enable_tablet_mode_sw >>>> module-parameter which defaults to false. >>>> >>>> Note I've made this an int using the standard -1=auto, 0=off, 1=on >>>> tripplet, with the hope that in the future we can come up with a >>>> better way to detect SW_TABLET_MODE support. ATM the default >>>> auto option just does the same as off. >>>> >>>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1918255 >>>> Cc: Stefan Brüns <stefan.bruens@xxxxxxxxxxxxxx> >>>> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> >>>> --- >>>> drivers/platform/x86/hp-wmi.c | 14 ++++++++++---- >>>> 1 file changed, 10 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c >>>> index 18bf8aeb5f87..ff028587cd21 100644 >>>> --- a/drivers/platform/x86/hp-wmi.c >>>> +++ b/drivers/platform/x86/hp-wmi.c >>>> @@ -32,6 +32,10 @@ MODULE_LICENSE("GPL"); >>>> MODULE_ALIAS("wmi:95F24279-4D7B-4334-9387-ACCDC67EF61C"); >>>> MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4"); >>>> >>>> +static int enable_tablet_mode_sw = -1; >>> So busted HW gets the default while working HW will need to add a boot time >>> parameter. If there are no working tablet_mode devices I guess its ok but, if >>> I had a working platform I'd be a little miffed at the choice to make my life >>> harder (by forcing me to add a enable_tablet_mode_sw=1 to my kernel >>> command line) while making life easier for those with busted hardware. >>> >>> I'm not saying change it but, it should be considered. >> >> Until recently userspace pretty much ignored SW_TABLET_MODE, so reporting >> it while it did not work was not a big deal, but as I tried to explain >> in the commit message always reporting SW_TABLET_MODE=0 does cause some >> real issues: >> >>>> 1. When SW_TABLET_MODE is reported and is reporting 0: >>>> 1.1 Disable accelerometer-based screen auto-rotation >>>> 1.2 Disable automatically showing the on-screen keyboard when a >>>> text-input field is focussed >> >> By defaulting to not reporting SW_TABLET_MODE at all we go back to the >> (slightly) older userspace behavior of always doing auto-rotation and >> always popping up the onscreen-keyboard on text-field focus (on devices >> with a touchscreen). >> >> So basically the bad side-effects of reporting SW_TABLET_MODE while it >> is not working are much worse then the bad side-effects of not reporting >> it on devices where it does work. >> >> More in general the way userspace uses SW_TABLET_MODE means that if >> we report it, then it MUST be reliable. If it is not reliable then it >> is better to not support it at all. > Yeah, thats all too true as well. Making user mode work correctly takes > priority over my sense of fairness. > > Acked-by: Mark Gross <mgross@xxxxxxxxxxxxxxx> Thank you. I've applied this patch to my review-hans branch now, so this will show up in for-next and fixes soon. Regards, Hans