From: Jarkko Sakkinen <jarkko@kernel.org>
To: Julien <julien82453@gmail.com>
Cc: linux-integrity@vger.kernel.org, regressions@lists.linux.dev,
rafael.j.wysocki@intel.com
Subject: Re: [REGRESSION] no TPM device after "tpm_crb: Convert ACPI driver to a platform one"
Date: Mon, 3 Aug 2026 14:59:03 +0300 [thread overview]
Message-ID: <anCCh9auNjBNJzlm@kernel.org> (raw)
In-Reply-To: <CAJOGg3z6LJPDsdPNBxajgy8_wQxfhYBRxe4EiurZf3kPU5A5Bw@mail.gmail.com>
On Sun, Aug 02, 2026 at 02:54:47PM +0200, Julien wrote:
> Hello,
>
> Please keep in mind this is my first time reporting a Linux kernel regression.
Thanks I investigate this properly before answering. It's my first day
after holiday so might take until Tue/Wed.
BR, Jarkko
>
> Since commit 48fe2cddc85c ("tpm_crb: Convert ACPI driver to a platform one"),
> my TPM device is no longer available. Both /dev/tpm0 and /dev/tpmrm0 are
> missing.
>
> Log messages:
> platform MSFT0101:00: failed to claim resource 1: [mem 0xfed40000-0xfed40fff]
> acpi MSFT0101:00: platform device creation failed: -16
>
> I added some debug logging:
> ACPI resourcet[0] = [mem 0xfed40040-0xfed4103f flags 0x200]
> ACPI resourcet[1] = [mem 0xfed40000-0xfed40fff flags 0x200]
>
> I think the failure happens in kernel/resource.c: __insert_resource() because
> of the two memory regions overlapping.
>
> I am attaching the TPM SSDT and the SDDT defining PTTB ACPI variable address.
> The value of PPTB
> dd if=/dev/mem bs=1 skip=$((0x8AE5CFDC)) count=8 | hexdump -C
> 40 00 d4 fe 00 00 00 00
>
> Hardware information:
> Manufacturer: Acer
> Model: Aspire ES1-572
> BIOS vendor: Insyde Corp.
> BIOS version: V1.16
> BIOS date: 09/18/2018
>
> Thanks
>
> #regzbot introduced: 48fe2cddc85c
>
> /*
> * Intel ACPI Component Architecture
> * AML/ASL+ Disassembler version 20251212 (64-bit version)
> * Copyright (c) 2000 - 2025 Intel Corporation
> *
> * Disassembling to symbolic ASL+ operators
> *
> * Disassembly of ssdt10.dat
> *
> * Original Table Header:
> * Signature "SSDT"
> * Length 0x000004C8 (1224)
> * Revision 0x02
> * Checksum 0x69
> * OEM ID "ACRSYS"
> * OEM Table ID "ACRPRDCT"
> * OEM Revision 0x00001000 (4096)
> * Compiler ID "1025"
> * Compiler Version 0x00040000 (262144)
> */
> DefinitionBlock ("", "SSDT", 2, "ACRSYS", "ACRPRDCT", 0x00001000)
> {
> External (PTTB, UnknownObj)
>
> Scope (\_SB)
> {
> Device (TPM)
> {
> Name (_HID, "MSFT0101" /* TPM 2.0 Security Device */) // _HID: Hardware ID
> Name (_STR, Unicode ("TPM 2.0 Device")) // _STR: Description String
> Name (CRS, ResourceTemplate ()
> {
> Memory32Fixed (ReadOnly,
> 0x00000000, // Address Base
> 0x00001000, // Address Length
> _Y00)
> Memory32Fixed (ReadOnly,
> 0xFED40000, // Address Base
> 0x00001000, // Address Length
> )
> })
> Name (PTTA, 0xFED40000)
> Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings
> {
> CreateDWordField (CRS, \_SB.TPM._Y00._BAS, CBAS) // _BAS: Base Address
> CBAS = PTTB /* External reference */
> PTTA = PTTB /* External reference */
> Return (CRS) /* \_SB_.TPM_.CRS_ */
> }
>
> OperationRegion (SMIP, SystemIO, 0xB2, One)
> Field (SMIP, ByteAcc, NoLock, Preserve)
> {
> IOB2, 8
> }
>
> OperationRegion (TPMR, SystemMemory, PTTA, 0x1000)
> Field (TPMR, AnyAcc, NoLock, Preserve)
> {
> Offset (0x44),
> FERR, 32,
> Offset (0x4C),
> STRT, 32
> }
>
> OperationRegion (FHCI, SystemMemory, 0xFED40000, 0x1000)
> Field (FHCI, AnyAcc, NoLock, Preserve)
> {
> Offset (0x04),
> HERR, 32,
> Offset (0x40),
> CREQ, 32,
> CSTS, 32,
> Offset (0x4C),
> HCMD, 32
> }
>
> OperationRegion (TNVS, SystemMemory, 0x8AE4F000, 0x2B)
> Field (TNVS, AnyAcc, NoLock, Preserve)
> {
> PPIN, 8,
> PPIP, 32,
> PPRP, 32,
> PPRQ, 32,
> PPRM, 32,
> LPPR, 32,
> FRET, 32,
> MCIN, 8,
> MCIP, 32,
> MORD, 32,
> MRET, 32
> }
>
> Method (PTS, 1, Serialized)
> {
> If (((Arg0 < 0x06) && (Arg0 > 0x03)))
> {
> If (!(MORD & 0x10))
> {
> MCIP = 0x02
> IOB2 = MCIN /* \_SB_.TPM_.MCIN */
> }
> }
>
> Return (Zero)
> }
>
> Method (_STA, 0, NotSerialized) // _STA: Status
> {
> Return (0x0F)
> }
>
> Method (HINF, 3, Serialized)
> {
> Switch (ToInteger (Arg1))
> {
> Case (Zero)
> {
> Return (Buffer (One)
> {
> 0x03 // .
> })
> }
> Case (One)
> {
> Name (TPMV, Package (0x02)
> {
> One,
> Package (0x02)
> {
> One,
> 0x20
> }
> })
> If ((_STA () == Zero))
> {
> Return (Package (0x01)
> {
> Zero
> })
> }
>
> Return (TPMV) /* \_SB_.TPM_.HINF.TPMV */
> }
> Default
> {
> BreakPoint
> }
>
> }
>
> Return (Buffer (One)
> {
> 0x00 // .
> })
> }
>
> Name (TPM2, Package (0x02)
> {
> Zero,
> Zero
> })
> Name (TPM3, Package (0x03)
> {
> Zero,
> Zero,
> Zero
> })
> Method (TPPI, 3, Serialized)
> {
> Switch (ToInteger (Arg1))
> {
> Case (Zero)
> {
> Return (Buffer (0x02)
> {
> 0xFF, 0x01 // ..
> })
> }
> Case (One)
> {
> Return ("1.2")
> }
> Case (0x02)
> {
> PPRQ = DerefOf (Arg2 [Zero])
> PPIP = 0x02
> IOB2 = PPIN /* \_SB_.TPM_.PPIN */
> Return (FRET) /* \_SB_.TPM_.FRET */
> }
> Case (0x03)
> {
> TPM2 [One] = PPRQ /* \_SB_.TPM_.PPRQ */
> Return (TPM2) /* \_SB_.TPM_.TPM2 */
> }
> Case (0x04)
> {
> Return (0x02)
> }
> Case (0x05)
> {
> PPIP = 0x05
> IOB2 = PPIN /* \_SB_.TPM_.PPIN */
> TPM3 [One] = LPPR /* \_SB_.TPM_.LPPR */
> TPM3 [0x02] = PPRP /* \_SB_.TPM_.PPRP */
> Return (TPM3) /* \_SB_.TPM_.TPM3 */
> }
> Case (0x06)
> {
> Return (0x03)
> }
> Case (0x07)
> {
> PPIP = 0x07
> PPRQ = DerefOf (Arg2 [Zero])
> PPRM = Zero
> If ((PPRQ == 0x17))
> {
> PPRM = DerefOf (Arg2 [One])
> }
>
> IOB2 = PPIN /* \_SB_.TPM_.PPIN */
> Return (FRET) /* \_SB_.TPM_.FRET */
> }
> Case (0x08)
> {
> PPIP = 0x08
> PPRQ = DerefOf (Arg2 [Zero])
> IOB2 = PPIN /* \_SB_.TPM_.PPIN */
> Return (FRET) /* \_SB_.TPM_.FRET */
> }
> Default
> {
> BreakPoint
> }
>
> }
>
> Return (One)
> }
>
> Method (TMCI, 3, Serialized)
> {
> Switch (ToInteger (Arg1))
> {
> Case (Zero)
> {
> Return (Buffer (One)
> {
> 0x03 // .
> })
> }
> Case (One)
> {
> MORD = DerefOf (Arg2 [Zero])
> MCIP = One
> IOB2 = MCIN /* \_SB_.TPM_.MCIN */
> Return (MRET) /* \_SB_.TPM_.MRET */
> }
> Default
> {
> BreakPoint
> }
>
> }
>
> Return (One)
> }
>
> Method (TSMI, 3, Serialized)
> {
> Name (WTME, Zero)
> Switch (ToInteger (Arg1))
> {
> Case (Zero)
> {
> Return (Buffer (One)
> {
> 0x03 // .
> })
> }
> Case (One)
> {
> CREQ = One
> While (((WTME <= 0xC8) && ((CREQ & One) !=
> Zero)))
> {
> Sleep (One)
> WTME++
> }
>
> HCMD = 0x02
> Return (Zero)
> }
> Default
> {
> BreakPoint
> }
>
> }
>
> Return (One)
> }
>
> Method (_DSM, 4, Serialized) // _DSM: Device-Specific Method
> {
> If ((Arg0 == ToUUID ("cf8e16a5-c1e8-4e25-b712-4f54a96702c8") /* TPM Hardware Information */))
> {
> Return (HINF (Arg1, Arg2, Arg3))
> }
>
> If ((Arg0 == ToUUID ("3dddfaa6-361b-4eb4-a424-8d10089d1653") /* Physical Presence Interface */))
> {
> Return (TPPI (Arg1, Arg2, Arg3))
> }
>
> If ((Arg0 == ToUUID ("376054ed-cc13-4675-901c-4756d7f2d45d") /* TPM Memory Clear */))
> {
> Return (TMCI (Arg1, Arg2, Arg3))
> }
>
> If ((Arg0 == ToUUID ("6bbf6cab-5463-4714-b7cd-f0203c0368d4") /* TPM Start Method */))
> {
> Return (TSMI (Arg1, Arg2, Arg3))
> }
>
> Return (Buffer (One)
> {
> 0x00 // .
> })
> }
> }
> }
> }
>
> /*
> * Intel ACPI Component Architecture
> * AML/ASL+ Disassembler version 20251212 (64-bit version)
> * Copyright (c) 2000 - 2025 Intel Corporation
> *
> * Disassembling to symbolic ASL+ operators
> *
> * Disassembly of ssdt1.dat
> *
> * Original Table Header:
> * Signature "SSDT"
> * Length 0x00000046 (70)
> * Revision 0x02
> * Checksum 0x01
> * OEM ID "ACRSYS"
> * OEM Table ID "ACRPRDCT"
> * OEM Revision 0x00003000 (12288)
> * Compiler ID "1025"
> * Compiler Version 0x00040000 (262144)
> */
> DefinitionBlock ("", "SSDT", 2, "ACRSYS", "ACRPRDCT", 0x00003000)
> {
> OperationRegion (MENV, SystemMemory, 0x8AE5CFD8, 0x000C)
> Field (MENV, AnyAcc, Lock, Preserve)
> {
> MERV, 32,
> PTTB, 64
> }
> }
>
prev parent reply other threads:[~2026-08-03 11:59 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-02 12:54 [REGRESSION] no TPM device after "tpm_crb: Convert ACPI driver to a platform one" Julien
2026-08-03 11:59 ` Jarkko Sakkinen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=anCCh9auNjBNJzlm@kernel.org \
--to=jarkko@kernel.org \
--cc=julien82453@gmail.com \
--cc=linux-integrity@vger.kernel.org \
--cc=rafael.j.wysocki@intel.com \
--cc=regressions@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox