ACPI error messages on Lenovo W540
Eric McCorkle
eric at metricspace.net
Sun Aug 17 12:31:59 UTC 2014
Finally got time to do some more poking around regarding this. I
haven't read the entire ACPI spec, so bear with me...
As John Baldwin said, the wrapper nvidia_acpi.c passes in a buffer
instead of a package. In the definition for _DSM, you can see calls to
NVOP, NVPS, and NBCI. I looked at all three, and they seem to treat
Arg3 as a buffer as well (they call CreateField on it, which according
to the ACPI spec, should take a buffer argument).
So it looks like both the nvidia driver as well as the ALS code are
pretty thoroughly convinced that Arg3 (the fourth arg) is a buffer
instead of a package, despite what the spec says about what it "should" be.
Could this possibly be fixed by adding some kind of quirk to the ACPI
execution engine that says "_DSM's fourth argument is a buffer"?
On 06/24/2014 20:51, Eric McCorkle wrote:
>
> It looks like this is the definition:
>
> Method (_DSM, 4, NotSerialized) // _DSM:
> Device-Specific Method
> {
> If (\CMPB (Arg0, Buffer (0x10)
> {
> /* 0000 */ 0xF8, 0xD8, 0x86,
> 0xA4, 0xDA, 0x0B, 0x1B, 0x47,
> /* 0008 */ 0xA7, 0x2B, 0x60,
> 0x42, 0xA6, 0xB5, 0xBE, 0xE0
> }))
> {
> Return (NVOP (Arg0, Arg1, Arg2, Arg3))
> }
>
> If (\CMPB (Arg0, Buffer (0x10)
> {
> /* 0000 */ 0x01, 0x2D, 0x13,
> 0xA3, 0xDA, 0x8C, 0xBA, 0x49,
> /* 0008 */ 0xA5, 0x2E, 0xBC,
> 0x9D, 0x46, 0xDF, 0x6B, 0x81
> }))
> {
> Return (NVPS (Arg0, Arg1, Arg2, Arg3))
> }
>
> If (\WIN8)
> {
> If (\CMPB (Arg0, Buffer (0x10)
> {
> /* 0000 */ 0x75, 0x0B, 0xA5,
> 0xD4, 0xC7, 0x65, 0xF7, 0x46,
> /* 0008 */ 0xBF, 0xB7, 0x41,
> 0x51, 0x4C, 0xEA, 0x02, 0x44
> }))
> {
> Return (NBCI (Arg0, Arg1, Arg2, Arg3))
> }
> }
>
> Return (Buffer (0x04)
> {
> 0x01, 0x00, 0x00, 0x80
> })
> }
>
> Not sure if that's helpful at all...
>
>> Ah, the nvidia driver calls _DSM and it has the bug. In its
>> nvidia_acpi.c file
>> it uses a Buffer instead of a Package for the fourth argument to
>> _DSM. OTOH, the
>> warning doesn't prevent the method from running, so the warning may be
>> harmless.
>> You can try contacting the nvidia folks to tell them about the warning
>> and point
>> out the bug in their _DSM wrapper in nvidia_acpi.c to see what they say.
>
> Will do. Is there a preferred point of contact?
More information about the freebsd-acpi
mailing list