lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 8 Jan 2019 16:49:18 -0800
From:   João Paulo Rechi Vita <jprvita@...il.com>
To:     Sasha Levin <sashal@...nel.org>
Cc:     LKML <linux-kernel@...r.kernel.org>,
        Stable <stable@...r.kernel.org>,
        João Paulo Rechi Vita <jprvita@...lessm.com>,
        Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
        acpi4asus-user <acpi4asus-user@...ts.sourceforge.net>,
        Platform Driver <platform-driver-x86@...r.kernel.org>
Subject: Re: [PATCH AUTOSEL 4.20 008/117] platform/x86: asus-wmi: Tell the EC
 the OS will handle the display off hotkey

Hello Sasha,

On Tue, Jan 8, 2019 at 11:26 AM Sasha Levin <sashal@...nel.org> wrote:
>
> From: João Paulo Rechi Vita <jprvita@...il.com>
>
> [ Upstream commit 78f3ac76d9e5219589718b9e4733bee21627b3f5 ]
>
> In the past, Asus firmwares would change the panel backlight directly
> through the EC when the display off hotkey (Fn+F7) was pressed, and
> only notify the OS of such change, with 0x33 when the LCD was ON and
> 0x34 when the LCD was OFF. These are currently mapped to
> KEY_DISPLAYTOGGLE and KEY_DISPLAY_OFF, respectively.
>
> Most recently the EC on Asus most machines lost ability to toggle the
> LCD backlight directly, but unless the OS informs the firmware it is
> going to handle the display toggle hotkey events, the firmware still
> tries change the brightness through the EC, to no effect. The end result
> is a long list (at Endless we counted 11) of Asus laptop models where
> the display toggle hotkey does not perform any action. Our firmware
> engineers contacts at Asus were surprised that there were still machines
> out there with the old behavior.
>
> Calling WMNB(ASUS_WMI_DEVID_BACKLIGHT==0x00050011, 2) on the _WDG device
> tells the firmware that it should let the OS handle the display toggle
> event, in which case it will simply notify the OS of a key press with
> 0x35, as shown by the DSDT excerpts bellow.
>
>  Scope (_SB)
>  {
>      (...)
>
>      Device (ATKD)
>      {
>          (...)
>
>          Name (_WDG, Buffer (0x28)
>          {
>              /* 0000 */  0xD0, 0x5E, 0x84, 0x97, 0x6D, 0x4E, 0xDE, 0x11,
>              /* 0008 */  0x8A, 0x39, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66,
>              /* 0010 */  0x4E, 0x42, 0x01, 0x02, 0x35, 0xBB, 0x3C, 0x0B,
>              /* 0018 */  0xC2, 0xE3, 0xED, 0x45, 0x91, 0xC2, 0x4C, 0x5A,
>              /* 0020 */  0x6D, 0x19, 0x5D, 0x1C, 0xFF, 0x00, 0x01, 0x08
>          })
>          Method (WMNB, 3, Serialized)
>          {
>              CreateDWordField (Arg2, Zero, IIA0)
>              CreateDWordField (Arg2, 0x04, IIA1)
>              Local0 = (Arg1 & 0xFFFFFFFF)
>
>              (...)
>
>              If ((Local0 == 0x53564544))
>              {
>                  (...)
>
>                  If ((IIA0 == 0x00050011))
>                  {
>                      If ((IIA1 == 0x02))
>                      {
>                          ^^PCI0.SBRG.EC0.SPIN (0x72, One)
>                          ^^PCI0.SBRG.EC0.BLCT = One
>                      }
>
>                      Return (One)
>                  }
>              }
>              (...)
>          }
>          (...)
>      }
>      (...)
>  }
>  (...)
>
>  Scope (_SB.PCI0.SBRG.EC0)
>  {
>      (...)
>
>      Name (BLCT, Zero)
>
>      (...)
>
>      Method (_Q10, 0, NotSerialized)  // _Qxx: EC Query
>      {
>          If ((BLCT == Zero))
>          {
>              Local0 = One
>              Local0 = RPIN (0x72)
>              Local0 ^= One
>              SPIN (0x72, Local0)
>              If (ATKP)
>              {
>                  Local0 = (0x34 - Local0)
>                  ^^^^ATKD.IANE (Local0)
>              }
>          }
>          ElseIf ((BLCT == One))
>          {
>              If (ATKP)
>              {
>                  ^^^^ATKD.IANE (0x35)
>              }
>          }
>      }
>      (...)
>  }
>
> Signed-off-by: João Paulo Rechi Vita <jprvita@...lessm.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
> Signed-off-by: Sasha Levin <sashal@...nel.org>

I am not entirely sure this is linux-stable material. This patch makes
the "turn off the display backlight" hotkey work on some Asus machines
where, without this patch, the key would simply do nothing. It seems
to me this is more of a new feature support than a bug fix. That said,
if you or Andy think this should go to stable after this short
explanation, I'll not object it.

Thanks and best regards,

--
João Paulo Rechi Vita
http://about.me/jprvita

Powered by blists - more mailing lists