Skip to contentSkip to conversation

Bugs in my DSDT (aopen 1556/1557 ou keynux impact)

DISCUSSION giggz 2 participants 7 messages May 27, 2007 – May 28, 2007 ACPI

lore
Share & tools
lore

giggz

author
#0 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

I have done that :

cat /proc/acpi/dsdt > dsdt.dat
iasl -d dsdt.dat
iasl -tc dsdt.dsl

The output :

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 18 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a

dsdt.dsl 207: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)

dsdt.dsl 2600: Field (RAM, AnyAcc, Lock, Preserve)
Error 4074 - ^ Host Operation Region
requires ByteAcc access

dsdt.dsl 2714: Store (Arg2, DAT3)
Error 4005 - Method argument is not initialized ^ (Arg2)

dsdt.dsl 2714: Store (Arg2, DAT3)
Remark 5065 - Not a parameter, used as local only ^ (Arg2)

dsdt.dsl 3121: Release (MTIO)
Warning 1098 - Statement is unreachable ^

ASL Input: dsdt.dsl - 4852 lines, 179994 bytes, 2068 keywords Compilation complete. 2 Errors, 2 Warnings, 1 Remarks, 493 Optimizations

Do anyone can and want to help me, please ? I can post the dsdt.dsl too but it's quite long...

Thx
Guillaume
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGWb71RvQAQ6Awr6YRAidyAJ9qiAZmu908ZepZDgZNR2zeuf8mdgCfaiJk p2gI9zWA8pY2qO7px72XQuU=
=RCLO
-----END PGP SIGNATURE-----

author
#1 lore raw
Quoted 31 lines · giggz

Hi,

I have done that :

cat /proc/acpi/dsdt > dsdt.dat
iasl -d dsdt.dat
iasl -tc dsdt.dsl

The output :

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 18 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a

dsdt.dsl 207: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)

dsdt.dsl 2600: Field (RAM, AnyAcc, Lock, Preserve)
Error 4074 - ^ Host Operation Region
requires ByteAcc access

dsdt.dsl 2714: Store (Arg2, DAT3)
Error 4005 - Method argument is not initialized ^ (Arg2)

dsdt.dsl 2714: Store (Arg2, DAT3)
Remark 5065 - Not a parameter, used as local only ^ (Arg2)

dsdt.dsl 3121: Release (MTIO)
Warning 1098 - Statement is unreachable ^

Quoted 8 lines

ASL Input: dsdt.dsl - 4852 lines, 179994 bytes, 2068 keywords Compilation complete. 2 Errors, 2 Warnings, 1 Remarks, 493 Optimizations

Do anyone can and want to help me, please ? I can post the dsdt.dsl too but it's quite long...

Thx
Guillaume

Hi,

I found solutions of 3 compilation problems on the net :
For the error :
dsdt.dsl 207: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)

I had that :
Method (_WAK, 1, NotSerialized)

    {
        Store (Arg0, P80H)
        Store (0x29, SMIF)
        Store (0x00, TRP0)
        If (LEqual (Arg0, 0x03))
        {
            Store (0xA1, \_SB.PCI0.LPCB.EC0.P54S)
            Store (0x12, SMIF)
            Store (0x00, TRP0)
            If (LEqual (PAR1, 0x00))
            {
                Notify (\_SB.SLPB, 0x02)
            }

            Store (0x66, P80H)
        }

        If (LEqual (Arg0, 0x04))
        {
            If (CondRefOf (_OSI, Local0))
            {
                Store (0x07D1, OSYS)
            }
            Else
            {
                If (LEqual (SizeOf (_OS), 0x14))
                {
                    Store (0x07D0, OSYS)
                }
                Else
                {
                    If (LEqual (SizeOf (_OS), 0x27))
                    {
                        Store (0x07CF, OSYS)
                    }
                    Else
                    {
                        Store (0x07CE, OSYS)
                    }
                }
            }
        }

    }

I put at the end :

	Return(Package(0x02){0x00, 0x00}) 	

The warning diseapears but I don't know if it's the good solution...If anyone can tell me that's true or false...

For the error :
dsdt.dsl 2600: Field (RAM, AnyAcc, Lock, Preserve)
Error 4074 - ^ Host Operation Region
requires ByteAcc access

I changed AnyAcc with ByteAcc.

For the error :
dsdt.dsl 3121: Release (MTIO)
Warning 1098 - Statement is unreachable ^

I had :
Method (READ, 1, Serialized)
{
Acquire (MTIO, 0xFFFF)
Store (Arg0, INDX)
Store (DATA, Local0)
Return (Local0)
Release (MTIO)
}

And now I have that :
Method (READ, 1, Serialized)
{
Acquire (MTIO, 0xFFFF)
Store (Arg0, INDX)
Store (DATA, Local0)
Release (MTIO)
Return (Local0)
}

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }

                        Release (MUTX)
                    }

And Arg2 doesn't exist...but what can I do ?

Thx
Have a nice day
Guillaume

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#2 lore raw

Hi,

giggz ?????:

Quoted 16 lines
Quoted 15 lines · giggz

Hi,

I have done that :

cat /proc/acpi/dsdt > dsdt.dat
iasl -d dsdt.dat
iasl -tc dsdt.dsl

The output :

Intel ACPI Component Architecture
ASL Optimizing Compiler version 20061109 [May 18 2007] Copyright (C) 2000 - 2006 Intel Corporation Supports ACPI Specification Revision 3.0a

Quoted 7 lines
Quoted 7 lines

dsdt.dsl 207: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)
dsdt.dsl 2714: Store (Arg2, DAT3)
Error 4005 - Method argument is not initialized ^ (Arg2)

dsdt.dsl 2714: Store (Arg2, DAT3)
Remark 5065 - Not a parameter, used as local only ^ (Arg2)

For this too need to look at source of the method(s).

Quoted 3 lines
Quoted 3 lines

dsdt.dsl 3121: Release (MTIO)
Warning 1098 - Statement is unreachable ^

Same here.

Quoted 64 lines
Quoted 9 lines

ASL Input: dsdt.dsl - 4852 lines, 179994 bytes, 2068 keywords Compilation complete. 2 Errors, 2 Warnings, 1 Remarks, 493 Optimizations

Do anyone can and want to help me, please ? I can post the dsdt.dsl too but it's quite long...

Thx
Guillaume

Hi,

I found solutions of 3 compilation problems on the net :
For the error :
dsdt.dsl 207: Method (_WAK, 1, NotSerialized)
Warning 1079 - ^ Reserved method must return a value (_WAK)

I had that :

   Method (_WAK, 1, NotSerialized)
    {
        Store (Arg0, P80H)
        Store (0x29, SMIF)
        Store (0x00, TRP0)
        If (LEqual (Arg0, 0x03))
        {
            Store (0xA1, \_SB.PCI0.LPCB.EC0.P54S)
            Store (0x12, SMIF)
            Store (0x00, TRP0)
            If (LEqual (PAR1, 0x00))
            {
                Notify (\_SB.SLPB, 0x02)
            }

            Store (0x66, P80H)
        }

        If (LEqual (Arg0, 0x04))
        {
            If (CondRefOf (_OSI, Local0))
            {
                Store (0x07D1, OSYS)
            }
            Else
            {
                If (LEqual (SizeOf (_OS), 0x14))
                {
                    Store (0x07D0, OSYS)
                }
                Else
                {
                    If (LEqual (SizeOf (_OS), 0x27))
                    {
                        Store (0x07CF, OSYS)
                    }
                    Else
                    {
                        Store (0x07CE, OSYS)
                    }
                }
            }
        }

    }
Quoted 4 lines

I put at the end :

	Return(Package(0x02){0x00, 0x00}) 	

The warning diseapears but I don't know if it's the good solution...If anyone can tell me that's true or false...

This one doesn't matter as linux does not look at the result anyway.

Quoted 9 lines

For the error :
dsdt.dsl 2600: Field (RAM, AnyAcc, Lock, Preserve)
Error 4074 - ^ Host Operation Region
requires ByteAcc access

I changed AnyAcc with ByteAcc.

Right.

Quoted 16 lines

For the error :
dsdt.dsl 3121: Release (MTIO)
Warning 1098 - Statement is unreachable ^

I had :
Method (READ, 1, Serialized)
{
Acquire (MTIO, 0xFFFF)
Store (Arg0, INDX)
Store (DATA, Local0)
Return (Local0)
Release (MTIO)
}

Quoted 10 lines

And now I have that :
Method (READ, 1, Serialized)
{
Acquire (MTIO, 0xFFFF)
Store (Arg0, INDX)
Store (DATA, Local0)
Release (MTIO)
Return (Local0)
}

Right.

Quoted 29 lines

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }

                        Release (MUTX)
                    }
Quoted 1 line

And Arg2 doesn't exist...but what can I do ?

Find callers of this method, if they pass more than 2 args to it, then simply change Method(RAMW, 2 -> Method(RAMW, 3.
If noone sends 3rd argument, then the only choice is to remove the whole
"If () {}".

Quoted 10 lines

Thx
Have a nice day
Guillaume

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Quoted 5 lines

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author
#3 lore raw

[...] (little cut)

Quoted 25 lines
Quoted 25 lines

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }
Quoted 8 lines
Quoted 4 lines
                        Release (MUTX)
                    }

And Arg2 doesn't exist...but what can I do ?

Find callers of this method, if they pass more than 2 args to it, then simply change Method(RAMW, 2 -> Method(RAMW, 3.
If noone sends 3rd argument, then the only choice is to remove the whole
"If () {}".

I'm total newbie in this domain...So How can I find "callers" .

I have done that :
search for "RAMW" in all the dsdt.dsl file. I don't find any other, just the definition of the Method. Do I just remove the method ?

Thx
Guillaume

Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author
#4 lore raw
Quoted 37 lines · giggz

[...] (little cut)

Quoted 25 lines
Quoted 25 lines

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }
Quoted 8 lines
Quoted 4 lines
                        Release (MUTX)
                    }

And Arg2 doesn't exist...but what can I do ?

Find callers of this method, if they pass more than 2 args to it, then simply change Method(RAMW, 2 -> Method(RAMW, 3.
If noone sends 3rd argument, then the only choice is to remove the whole
"If () {}".

Quoted 6 lines

I'm total newbie in this domain...So How can I find "callers" .

I have done that :
search for "RAMW" in all the dsdt.dsl file. I don't find any other, just the definition of the Method. Do I just remove the method ?

I test to compile with Method (RAMW, 3, NotSerialized). And I have no more error.
What Do I have to do ? Remove this Method or put 3 arguments ?

Quoted 9 lines

Thx
Guillaume

Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Quoted 5 lines

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author
#5 lore raw
Quoted 38 lines · giggz
Quoted 37 lines · giggz

[...] (little cut)

Quoted 25 lines
Quoted 25 lines

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }
Quoted 8 lines
Quoted 4 lines
                        Release (MUTX)
                    }

And Arg2 doesn't exist...but what can I do ?

Find callers of this method, if they pass more than 2 args to it, then simply change Method(RAMW, 2 -> Method(RAMW, 3.
If noone sends 3rd argument, then the only choice is to remove the whole
"If () {}".

I'm total newbie in this domain...So How can I find "callers" .

Quoted 9 lines
Quoted 4 lines

I have done that :
search for "RAMW" in all the dsdt.dsl file. I don't find any other, just the definition of the Method. Do I just remove the method ?

I test to compile with Method (RAMW, 3, NotSerialized). And I have no more error.
What Do I have to do ? Remove this Method or put 3 arguments ?

Ok I looked through the dsdt.dsl file. Juste above this method I found this other method :

                    Method (RAMR, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg1, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (0xBA, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }

                        Store (DAT1, Local0)
                        Release (MUTX)
                        Return (Local0)
                    }

Perhaps the error is really a bug in the dsdt : Arg2 must be Arg1!

How can I know ?

Quoted 14 lines
Quoted 4 lines

Thx
Guillaume

Quoted 9 lines
Quoted 4 lines

To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Quoted 5 lines

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#6 lore raw

giggz ?????:

Quoted 77 lines
Quoted 38 lines · giggz
Quoted 37 lines · giggz

[...] (little cut)

Quoted 25 lines
Quoted 25 lines

But I can't find the solution for the other error problem :
I have that :

                  Method (RAMW, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg2, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (Arg1, DAT1)
                        Store (0xBB, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }
Quoted 8 lines
Quoted 4 lines
                        Release (MUTX)
                    }

And Arg2 doesn't exist...but what can I do ?

Find callers of this method, if they pass more than 2 args to it, then simply change Method(RAMW, 2 -> Method(RAMW, 3.
If noone sends 3rd argument, then the only choice is to remove the whole
"If () {}".

I'm total newbie in this domain...So How can I find "callers" .

Quoted 8 lines
Quoted 4 lines

I have done that :
search for "RAMW" in all the dsdt.dsl file. I don't find any other, just the definition of the Method. Do I just remove the method ?

I test to compile with Method (RAMW, 3, NotSerialized). And I have no more error.
What Do I have to do ? Remove this Method or put 3 arguments ?

Ok I looked through the dsdt.dsl file. Juste above this method I found this other method :

                    Method (RAMR, 2, NotSerialized)
                    {
                        Acquire (MUTX, 0xFFFF)
                        If (LGreater (Arg0, 0x7F))
                        {
                            Store (Arg1, DAT3)
                        }

                        Store (Arg0, DAT2)
                        Store (0xBA, CMCD)
                        Store (0x64, Local1)
                        While (Local1)
                        {
                            Decrement (Local1)
                            Sleep (0x05)
                            Store (CMCD, Local0)
                            If (LEqual (Local0, Zero))
                            {
                                Store (Zero, Local1)
                            }
                        }

                        Store (DAT1, Local0)
                        Release (MUTX)
                        Return (Local0)
                    }
Quoted 3 lines

Perhaps the error is really a bug in the dsdt : Arg2 must be Arg1!

How can I know ?

Ask AOpen technical support :)

Regards,
Alex.

Quoted 4 lines
Quoted 4 lines
Quoted 4 lines

Thx
Guillaume

-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html