[coreboot] TPM device has gone missing

Aaron Durbin adurbin at google.com
Mon Dec 12 22:08:53 CET 2016


On Mon, Dec 12, 2016 at 2:58 PM, Trammell Hudson <hudson at trmm.net> wrote:
> On Mon, Dec 12, 2016 at 01:14:58PM -0600, Aaron Durbin via coreboot wrote:
>> Can you provide the isal -d dumps of before and after for your board?
>> I think in one they'll be in SSDT and the other in DSDT.  They should
>> reside in /sys/firmware/acpi/tables/ that you can copy them and run
>> them through iasl -d.
>
> Here's the diff:


What about the SSDT? With the patch I think the device is in the SSDT
-- not DSDT. Thus you are showing DSDT contents which are the
equivalent of this file:
https://review.coreboot.org/#/c/17425/12/src/drivers/pc80/tpm/acpi/tpm.asl

>
> --- ./no-tpm/DSDT.dsl   2016-12-12 15:46:55.909063709 -0500
> +++ ./yes-tpm/DSDT.dsl  2016-12-12 15:56:26.308433858 -0500
> @@ -5,13 +5,13 @@
>   *
>   * Disassembling to symbolic ASL+ operators
>   *
> - * Disassembly of DSDT, Mon Dec 12 15:46:55 2016
> + * Disassembly of DSDT, Mon Dec 12 15:56:26 2016
>   *
>   * Original Table Header:
>   *     Signature        "DSDT"
> - *     Length           0x000033DC (13276)
> + *     Length           0x00003627 (13863)
>   *     Revision         0x02
> - *     Checksum         0x58
> + *     Checksum         0x26
>   *     OEM ID           "COREv4"
>   *     OEM Table ID     "COREBOOT"
>   *     OEM Revision     0x20110725 (537986853)
> @@ -36,7 +36,7 @@
>
>      Scope (\)
>      {
> -        Name (NVSA, 0xBFEC8000)
> +        Name (NVSA, 0xBFECB000)
>      }
>
>      If (Zero)
> @@ -3961,6 +3961,205 @@
>
>      Scope (_SB.PCI0.LPCB)
>      {
> +        Device (TPM)
> +        {
> +            Name (_HID, EisaId ("PNP0C31"))  // _HID: Hardware ID
> +            Name (_CID, EisaId ("PNP0C31"))  // _CID: Compatible ID
> +            Name (_UID, One)  // _UID: Unique ID
> +            OperationRegion (TREG, SystemMemory, 0xFED40000, 0x5000)
> +            Field (TREG, ByteAcc, NoLock, Preserve)
> +            {
> +                Offset (0x08),
> +                    ,   3,
> +                ITPL,   2,
> +                Offset (0x0C),
> +                IVEC,   4,
> +                Offset (0xF00),
> +                DVID,   32
> +            }
> +
> +            Method (_STA, 0, NotSerialized)  // _STA: Status
> +            {
> +                If (((DVID > Zero) && (DVID < 0xFFFFFFFF)))
> +                {
> +                    Return (0x0F)
> +                }
> +                Else
> +                {
> +                    Return (Zero)
> +                }
> +            }
> +
> +            Name (IBUF, ResourceTemplate ()
> +            {
> +                Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, _Y02)
> +                {
> +                    0x00000000,
> +                }
> +            })
> +            Name (RBUF, ResourceTemplate ()
> +            {
> +                IO (Decode16,
> +                    0x002E,             // Range Minimum
> +                    0x002E,             // Range Maximum
> +                    0x01,               // Alignment
> +                    0x02,               // Length
> +                    )
> +                Memory32Fixed (ReadWrite,
> +                    0xFED40000,         // Address Base
> +                    0x00005000,         // Address Length
> +                    )
> +            })
> +            Method (_CRS, 0, Serialized)  // _CRS: Current Resource Settings
> +            {
> +                CreateField (IBUF, \_SB.PCI0.LPCB.TPM._Y02._INT, 0x20, TVEC)  // _INT: Interrupts
> +                CreateBitField (IBUF, \_SB.PCI0.LPCB.TPM._Y02._HE, TTYP)  // _HE_: High-Edge
> +                CreateBitField (IBUF, \_SB.PCI0.LPCB.TPM._Y02._LL, TPOL)  // _LL_: Low Level
> +                CreateBitField (IBUF, \_SB.PCI0.LPCB.TPM._Y02._SHR, TSHR)  // _SHR: Sharable
> +                If (Zero)
> +                {
> +                    TVEC = Zero
> +                    TPOL = One
> +                    TTYP = Zero
> +                    TSHR = One
> +                    Return (ConcatenateResTemplate (RBUF, IBUF))
> +                }
> +                Else
> +                {
> +                    If ((IVEC > Zero))
> +                    {
> +                        TVEC = IVEC /* \_SB_.PCI0.LPCB.TPM_.IVEC */
> +                        If ((ITPL == Zero))
> +                        {
> +                            TPOL = Zero
> +                            TTYP = Zero
> +                            TSHR = One
> +                        }
> +                        Else
> +                        {
> +                            If ((ITPL == One))
> +                            {
> +                                TPOL = One
> +                                TTYP = Zero
> +                                TSHR = One
> +                            }
> +                            Else
> +                            {
> +                                If ((ITPL == 0x02))
> +                                {
> +                                    TPOL = Zero
> +                                    TTYP = One
> +                                    TSHR = Zero
> +                                }
> +                                Else
> +                                {
> +                                    If ((ITPL == 0x03))
> +                                    {
> +                                        TPOL = One
> +                                        TTYP = One
> +                                        TSHR = Zero
> +                                    }
> +                                }
> +                            }
> +                        }
> +
> +                        Return (ConcatenateResTemplate (RBUF, IBUF))
> +                    }
> +                    Else
> +                    {
> +                        Return (RBUF) /* \_SB_.PCI0.LPCB.TPM_.RBUF */
> +                    }
> +                }
> +            }
> +
> +            Method (_DSM, 4, Serialized)  // _DSM: Device-Specific Method
> +            {
> +                If ((Arg0 == ToUUID ("3dddfaa6-361b-4eb4-a424-8d10089d1653") /* Physical Presence Interface */))
> +                {
> +                    If ((Arg2 == Zero))
> +                    {
> +                        Return (Buffer (0x02)
> +                        {
> +                             0xFF, 0x01                                       /* .. */
> +                        })
> +                    }
> +
> +                    If ((Arg2 == One))
> +                    {
> +                        Return ("1.2")
> +                    }
> +
> +                    If ((Arg2 == 0x02))
> +                    {
> +                        Return (Zero)
> +                    }
> +
> +                    If ((Arg2 == 0x03))
> +                    {
> +                        Return (Package (0x02)
> +                        {
> +                            Zero,
> +                            Zero
> +                        })
> +                    }
> +
> +                    If ((Arg2 == 0x04))
> +                    {
> +                        Return (0x02)
> +                    }
> +
> +                    If ((Arg2 == 0x05))
> +                    {
> +                        Return (Package (0x03)
> +                        {
> +                            Zero,
> +                            Zero,
> +                            Zero
> +                        })
> +                    }
> +
> +                    If ((Arg2 == 0x06))
> +                    {
> +                        Return (0x03)
> +                    }
> +
> +                    If ((Arg2 == 0x07))
> +                    {
> +                        Return (0x03)
> +                    }
> +
> +                    If ((Arg2 == 0x08))
> +                    {
> +                        Return (One)
> +                    }
> +
> +                    Return (One)
> +                }
> +
> +                If ((Arg0 == ToUUID ("376054ed-cc13-4675-901c-4756d7f2d45d")))
> +                {
> +                    If ((Arg2 == Zero))
> +                    {
> +                        Return (Buffer (One)
> +                        {
> +                             0x03                                             /* . */
> +                        })
> +                    }
> +
> +                    If ((Arg2 == One))
> +                    {
> +                        Return (Zero)
> +                    }
> +
> +                    Return (One)
> +                }
> +
> +                Return (Buffer (One)
> +                {
> +                     0x00                                             /* . */
> +                })
> +            }
> +        }
>      }
>
>      Name (_S0, Package (0x04)  // _S0_: S0 System State
>
> --
> Trammell



More information about the coreboot mailing list