Bug 50521 - nouveau_acpi call _DSM with wrong parameter
Summary: nouveau_acpi call _DSM with wrong parameter
Status: REOPENED
Alias: None
Product: Drivers
Classification: Unclassified
Component: Video(DRI - non Intel) (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: drivers_video-dri
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-13 15:17 UTC by Alex Williamson
Modified: 2013-12-28 12:10 UTC (History)
2 users (show)

See Also:
Kernel Version: 2.6.38
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Alex Williamson 2012-11-13 15:17:44 UTC
Cloning for nouveau

+++ This bug was initially created as a clone of Bug #32602 +++

Both drivers/gpu/drm/i915/intel_acpi.c and drivers/gpu/drm/nouveau/nouveau_acpi.c call _DSM methods with parameters of _DSM(Buffer, Integer, Integer, Integer).  The ACPI spec defines the parameters to be _DSM(Buffer, Integer, Integer, Package).  On a UL30VT, the AML preforms operations on Arg3 which are not valid for an Integer data type, resulting in ACPI faults.  Excerpt of DSDT:

Method (_DSM, 4, NotSerialized)
{
    If (LEqual (Arg0, Buffer (0x10)
            {
                /* 0000 */    0xA0, 0xA0, 0x95, 0x9D, 0x60, 0x00, 0x48, 0x4D,
                /* 0008 */    0xB3, 0x4D, 0x7E, 0x5F, 0xEA, 0x12, 0x9F, 0xD4
            }))
    {
        Store (Zero, Local0)
        Store (ShiftLeft (DerefOf (Index (Arg3, 0x03)), 0x18), Local0)
        Add (ShiftLeft (DerefOf (Index (Arg3, 0x02)), 0x10), Local0, Local0)
        Add (ShiftLeft (DerefOf (Index (Arg3, One)), 0x08), Local0, Local0)
        Add (ShiftLeft (DerefOf (Index (Arg3, Zero)), Zero), Local0, Local0)
        ...

The Index operation is only valid on a Buffer, String, or Package, which is perfectly reasonable given the definition of the _DSM call.
Comment 1 Yill Din 2013-12-28 07:14:18 UTC
Why was this closed as "RESOLVED"? The code is still present in the kernel, and it still causes errors. My _DSM looks identically to the above. (Asus X73SV)
Comment 2 Alan 2013-12-28 12:07:55 UTC
It was fixed on August 1st. If you have an older kernel you'll need to update

commit 6d5c2d8ca3c15a191a8078316e547c1f4e5ad6eb
Comment 3 Alan 2013-12-28 12:10:07 UTC
Ah .. sorry only Intel was fixed.. Nouveau folks must be slacking ;-)

Note You need to log in before you can comment on or make changes to this bug.