lkml.org 
[lkml]   [2017]   [Jun]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH] RFC: platform/x86: wmi: Fix check for method instance number
Date
> -----Original Message-----
> From: Limonciello, Mario
> Sent: Thursday, June 15, 2017 10:16 AM
> To: 'Pali Rohár' <pali.rohar@gmail.com>; Darren Hart <dvhart@infradead.org>
> Cc: Andy Shevchenko <andy@infradead.org>; Andy Lutomirski <luto@kernel.org>;
> platform-driver-x86@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: RE: [PATCH] RFC: platform/x86: wmi: Fix check for method instance
> number
>
> > -----Original Message-----
> > From: Pali Rohár [mailto:pali.rohar@gmail.com]
> > Sent: Thursday, June 15, 2017 8:59 AM
> > To: Limonciello, Mario <Mario_Limonciello@Dell.com>; Darren Hart
> > <dvhart@infradead.org>
> > Cc: Andy Shevchenko <andy@infradead.org>; Andy Lutomirski
> <luto@kernel.org>;
> > platform-driver-x86@vger.kernel.org; linux-kernel@vger.kernel.org
> > Subject: Re: [PATCH] RFC: platform/x86: wmi: Fix check for method instance
> > number
> >
> > Mario, are you able to check if instance number passed to
> > wmi_evaluate_method in following dell WMI drivers is correct and should
> > be really 1?
> >
> > I suspect that it should be zero, as instance number is indexed from
> > zero.
> >
> > There is no comment in those dell WMI drivers why it is 1, nor what 1
> > means.
> >
> > Ideally it needs to be checked in ACPI byte code, MOF file and WDG dump.
> >
> I think you're likely correct. I don't have a box that supports alienware-wmi
> or dell-wmi-led.c handy at the current moment to confirm this hypothesis though.
> I'll confirm this later.
>
> I didn't realize it was zero indexed when I wrote alienware-wmi, and I'm guessing
> the author of dell-wmi-led didn't either.
>
> The reason it's probably working is the ACPI byte code isn't actually checking
> the instance since most times _WDG will only call out one instance.

I confirmed you're correct. Switching instance over to 0 works properly on an
ASM200 (supported by alienware-wmi).

Since only one instance is supported the ASL doesn't check Arg0 at all.
snippet:
Method (WMAX, 3, NotSerialized)
{
If ((Arg1 == One))
{
CreateByteField (Arg2, Zero, SOUR)
If ((SOUR == One))
{
GU01 = (GU01 | 0x80)
GIO1 = (GIO1 & 0x7F)
GL01 = (GL01 & 0x7F)
Return (Zero)
}

If ((SOUR == 0x02))
{
GU01 = (GU01 | 0x80)
GIO1 = (GIO1 & 0x7F)
GL01 = (GL01 | 0x80)
Return (Zero)
}

If ((SOUR == 0x03))
{
If ((CN00 == Zero))
{
CN00 = One
If (((GL01 & 0x80) == 0x80))
{
GL01 &= 0x7F
Return (Zero)
}

If (((GL01 & 0x80) == Zero))
{
GL01 |= 0x80
Return (Zero)
}
}

If ((CN00 == One))
{
CN00 = Zero
Return (Zero)
}

Return (One)
}

Return (One)
}

>
> > On Wednesday 14 June 2017 17:46:54 Pali Rohár wrote:
> > > Function wmi_evaluate_method:
> > ...
> > > alienware-wmi.c:
> > > instance=1 /* no comment why, guid=A70591CE-A997-11DA-B012-
> > B622A1EF5492 */
> > > instance=1 /* no comment why, guid=A80593CE-A997-11DA-B012-
> > B622A1EF5492 */
> > > instance=1 /* no comment why, guid=A70591CE-A997-11DA-B012-
> > B622A1EF5492 */
> > ...
> > > dell-wmi-led.c:
> > > instance=1 /* no comment why, guid=F6E4FE6E-909D-47cb-8BAB-
> > C9F6F2F8D396 */
> >
> > --
> > Pali Rohár
> > pali.rohar@gmail.com
\
 
 \ /
  Last update: 2017-06-16 18:34    [W:0.178 / U:0.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site