Comment 3 for bug 1255843

Revision history for this message
Ivan Hu (ivan.hu) wrote :

Base on the fwts log on the comment#2,

There are some critical/high failures that from the buggy firmware.

Critical failures: 2
 method: Detected error 'Type' when evaluating '\_SB_.PCI0.LPCB.H_EC.BAT0._PCL'.
 method: Detected error 'Type' when evaluating '\_SB_.ADP1._PCL'.

are due the return Type is wrong '\_SB_.PCI0.LPCB.H_EC.BAT0._PCL' and '\_SB_.ADP1._PCL'.
according to the ACPI spec, the _PCL method should return:
A variable-length Package containing a list of References to devices or buses
not Return (\_SB)

High failures: 1
 method: Detected error 'Uninitialized local variable' when evaluating '\_SB_.PCI0.GFX0.DD02._BCM'.

from the ACPI table,
                Method (_BCM, 1, NotSerialized)
                {
                    P8XH (0x00, Arg0)
                    Store (Match (\_SB.PCI0.LPCB.H_EC.BRTW, MEQ, Arg0, MTR, 0x00, 0x02), Local0)
                    If (LNotEqual (Local0, Ones))
                    {
                        Subtract (Local0, 0x02, Local1)
                        Store (Local1, \BRLV)
                    }

                    If (LLessEqual (Local1, 0x11))
                    {
                        Store (DerefOf (Index (\_SB.PCI0.LPCB.H_EC.BMAP, Local1)), Local0)
                    }
                    Else
                    {
                        Store (0x00, Local0)
                    }

                    If (LAnd (LGreaterEqual (Local0, 0x00), LLessEqual (Local0, 0x64)))
                    {
                        \_SB.PCI0.GFX0.AINT (0x01, Local0)
                        Store (Arg0, BRTL)
                    }
                }

this failure is due to the
                    Store (Match (\_SB.PCI0.LPCB.H_EC.BRTW, MEQ, Arg0, MTR, 0x00, 0x02), Local0)
return Ones, cause the Uninitialized Local1
                    If (LNotEqual (Local0, Ones))
                    {
                        Subtract (Local0, 0x02, Local1)
                        Store (Local1, \BRLV)
                    }
and cannot be used
                    If (LLessEqual (Local1, 0x11))
                    {
                        Store (DerefOf (Index (\_SB.PCI0.LPCB.H_EC.BMAP, Local1)), Local0)
                    }
                    ...