From: Ross Philipson <ross.philipson@gmail.com>
To: linux-kernel@vger.kernel.org, x86@kernel.org,
linux-integrity@vger.kernel.org, linux-doc@vger.kernel.org,
linux-crypto@vger.kernel.org, kexec@lists.infradead.org,
linux-efi@vger.kernel.org, iommu@lists.linux.dev
Cc: ross.philipson@gmail.com, dpsmith@apertussolutions.com,
tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
hpa@zytor.com, dave.hansen@linux.intel.com, ardb@kernel.org,
mjg59@srcf.ucam.org, James.Bottomley@hansenpartnership.com,
peterhuewe@gmx.de, jarkko@kernel.org, jgg@ziepe.ca,
luto@amacapital.net, nivedita@alum.mit.edu,
herbert@gondor.apana.org.au, davem@davemloft.net, corbet@lwn.net,
ebiederm@xmission.com, dwmw2@infradead.org,
baolu.lu@linux.intel.com, kanth.ghatraju@oracle.com,
daniel.kiper@oracle.com, andrew.cooper3@citrix.com,
trenchboot-devel@googlegroups.com
Subject: [PATCH v16 00/38] x86: Secure Launch support for Intel TXT
Date: Fri, 15 May 2026 14:13:32 -0700 [thread overview]
Message-ID: <20260515211410.31440-1-ross.philipson@gmail.com> (raw)
Secure Launch is a vendor-neutral approach to implementing TGC Dynamic
Root of Trust (DRTM) support in the kernel. This is complementary to
better known Static Root of Trust (SRTM) schemes such as UEFI
SecureBoot.
This series provides the common infrastructure along with Intel TXT
support, without needing the tboot exokernel. Support for AMD SKINIT is
pending the common infrastructure getting nailed down, and ARM are
looking to build on it too.
Originally, tboot were approached to see if they'd take support for
other vendors, but they elected not to. Hence this approach instead.
Work is being coordinated by the Trenchboot project,
https://trenchboot.org/, organising Secure Launch support for upstream
open source projects including Grub, iPXE and Xen. The goal of the
Trenchboot project is to make DTRM easy to use, e.g. GRUB adds "slaunch"
as a command in the boot stanza. See
https://trenchboot.org/user-docs/QUICKSTART/#linux-quick-start-guide for
more details
Patch set based on commit:
torvalds/master/028ef9c96e96197026887c0f092424679298aae8
(tag: v7.0) Linux 7.0
Finally we would like to thank everyone for their input and
assistance. It has all been very helpful in improving the quality of
our solution and in reviewing/strengthening our security posture.
Thanks
Ross Philipson and Daniel P. Smith
Changes in v16:
- Moved Secure Launch entry point out of the x86 setup kernel into the
mainline kernel.
- Add EFI protocol support for DL stub callback.
- Add SHA 384/512 PCR extend support.
- Rewrote Secure Launch kernel documentation.
- Updated the reorganization of TPM header and buffer related files.
- TXT early heap parsing support.
- Corrected commit messages and tag lists per review feedback.
- Fix code formatting and typos.
Changes in v15:
- Rewriting and reformatting of the cover letter, commit message and
code comments per requests from maintainers.
- Introduction of a early TPM driver in the x86 setup kernel to allow
TPM extend command very early in the boot.
- Remove previous TPM extending architecture that attempted to update
the TPM PCRs later in the boot process.
- Include set of split up TPM header files to allow TPM driver reuse
in other environments (e.g. early kernel, x86).
- Split slaunch.h into 2 files, with a new txt.h. The former contains
platform agnostic definitions for the SL feature. The new txt.h file
contains Intel TXT definitions from the public specs.
- Split TPM headers up following the specifications where the
technologies are defined.
- Fix code formatting and typos.
Alec Brown (1):
tpm: Remove main TPM header from TPM event log header
Ard Biesheuvel (3):
x86/boot: Slight refactor of the 5 level paging logic
x86/efistub: EFI stub DRTM support for Secure Launch
x86/boot: Legacy boot DRTM support for Secure Launch
Daniel P. Smith (9):
tpm/tpm_tis: Close all localities
tpm/tpm_tis: Address positive localities in tpm_tis_request_locality()
tpm/tpm_tis: Allow locality to be set to a different value
tpm/sysfs: Show locality used by kernel
Documentation/security: Secure Launch kernel documentation
x86: Add early SHA-1 support for Secure Launch early measurements
x86: Add early SHA-256 support for Secure Launch early measurements
x86: Add early SHA-384/512 support for Secure Launch early
measurements
x86/slaunch: Secure Launch late initcall platform module
Jarkko Sakkinen (3):
tpm-buf: Merge TPM_BUF_BOUNDARY_ERROR and TPM_BUF_OVERFLOW
tpm-buf: Remove chip parameter from tpm_buf_append_handle()
tpm-buf: Implement managed allocations
Ross Philipson (22):
tpm: Initial step to reorganize TPM public headers
tpm: Move TPM1 specific definitions to the command header
tpm: Move TPM2 specific definitions to the command header
tpm: Move TPM common base definitions to the command header
tpm: Move platform specific definitions to the new PTP header
tpm-buf: Add TPM buffer support header for standalone reuse
x86: Secure Launch Kconfig
x86: Secure Launch Resource Table header file
x86/efi: Secure Launch Resource Table EFI definitions header file
x86: Secure Launch main header file
x86/txt: Intel Trusted eXecution Technology (TXT) definitions
lib/crypto: Add SHA1 support for pre-boot environments
lib/crypto: Add SHA512 support for pre-boot environments
x86: Allow WARN_trap() macro to be included in pre-boot environments
x86/msr: Add variable MTRR base/mask and x2apic ID registers
x86/tpm: Early startup TPM PCR extending driver
x86/slaunch: Add MLE header and Secure Launch entrypoint to the core
kernel
x86/slaunch: Secure Launch kernel early boot initialization
x86/slaunch: Secure Launch kernel late boot initialization
x86/slaunch: Secure Launch SMP bringup support
kexec/slaunch: Secure Launch kexec SEXIT support
reboot/slaunch: Secure Launch SEXIT support on reboot paths
Documentation/arch/x86/boot.rst | 8 +
Documentation/arch/x86/zero-page.rst | 1 +
Documentation/security/index.rst | 1 +
.../security/launch-integrity/index.rst | 9 +
.../launch-integrity/secure_launch.rst | 681 ++++++++++++++
arch/x86/Kconfig | 15 +
arch/x86/boot/compressed/Makefile | 2 +-
arch/x86/boot/compressed/misc.c | 55 +-
arch/x86/boot/compressed/pgtable_64.c | 18 +-
arch/x86/boot/startup/Makefile | 8 +
arch/x86/boot/startup/exports.h | 7 +
arch/x86/boot/startup/lib-sha1.c | 6 +
arch/x86/boot/startup/lib-sha256.c | 6 +
arch/x86/boot/startup/lib-sha512.c | 6 +
arch/x86/boot/startup/sl_main.c | 638 +++++++++++++
arch/x86/boot/startup/tpm.h | 47 +
arch/x86/boot/startup/tpm_drv.c | 567 ++++++++++++
arch/x86/include/asm/boot.h | 4 +
arch/x86/include/asm/bug.h | 8 +-
arch/x86/include/asm/msr-index.h | 5 +
arch/x86/include/asm/realmode.h | 3 +
arch/x86/include/asm/txt.h | 281 ++++++
arch/x86/include/uapi/asm/bootparam.h | 3 +-
arch/x86/kernel/Makefile | 3 +
arch/x86/kernel/asm-offsets.c | 22 +
arch/x86/kernel/reboot.c | 14 +
arch/x86/kernel/setup.c | 3 +
arch/x86/kernel/sl_stub.S | 847 ++++++++++++++++++
arch/x86/kernel/slaunch.c | 619 +++++++++++++
arch/x86/kernel/slmodule.c | 353 ++++++++
arch/x86/kernel/smpboot.c | 47 +-
arch/x86/kernel/vmlinux.lds.S | 5 +
arch/x86/realmode/init.c | 8 +
arch/x86/realmode/rm/header.S | 3 +
arch/x86/realmode/rm/trampoline_64.S | 32 +
arch/x86/tools/relocs.c | 1 +
drivers/char/tpm/tpm-buf.c | 148 +--
drivers/char/tpm/tpm-chip.c | 35 +-
drivers/char/tpm/tpm-sysfs.c | 31 +-
drivers/char/tpm/tpm.h | 180 ----
drivers/char/tpm/tpm1-cmd.c | 193 ++--
drivers/char/tpm/tpm2-cmd.c | 338 +++----
drivers/char/tpm/tpm2-sessions.c | 144 ++-
drivers/char/tpm/tpm2-space.c | 57 +-
drivers/char/tpm/tpm_tis_core.c | 24 +-
drivers/char/tpm/tpm_tis_core.h | 64 +-
drivers/char/tpm/tpm_vtpm_proxy.c | 30 +-
drivers/firmware/efi/libstub/Makefile | 1 +
drivers/firmware/efi/libstub/efistub.h | 24 +
drivers/firmware/efi/libstub/x86-slaunch.c | 38 +
drivers/firmware/efi/libstub/x86-stub.c | 27 +-
drivers/iommu/intel/dmar.c | 4 +
include/keys/trusted_tpm.h | 1 -
include/linux/slaunch.h | 262 ++++++
include/linux/slr_efi.h | 40 +
include/linux/slr_table.h | 339 +++++++
include/linux/tpm.h | 234 +----
include/linux/tpm_buf.h | 57 ++
include/linux/tpm_command.h | 516 ++++++++++-
include/linux/tpm_eventlog.h | 4 +-
include/linux/tpm_ptp.h | 151 ++++
kernel/kexec_core.c | 8 +
lib/crypto/sha1.c | 10 +-
lib/crypto/sha512.c | 10 +-
security/keys/trusted-keys/trusted_tpm1.c | 37 +-
security/keys/trusted-keys/trusted_tpm2.c | 171 ++--
66 files changed, 6385 insertions(+), 1129 deletions(-)
create mode 100644 Documentation/security/launch-integrity/index.rst
create mode 100644 Documentation/security/launch-integrity/secure_launch.rst
create mode 100644 arch/x86/boot/startup/lib-sha1.c
create mode 100644 arch/x86/boot/startup/lib-sha256.c
create mode 100644 arch/x86/boot/startup/lib-sha512.c
create mode 100644 arch/x86/boot/startup/sl_main.c
create mode 100644 arch/x86/boot/startup/tpm.h
create mode 100644 arch/x86/boot/startup/tpm_drv.c
create mode 100644 arch/x86/include/asm/txt.h
create mode 100644 arch/x86/kernel/sl_stub.S
create mode 100644 arch/x86/kernel/slaunch.c
create mode 100644 arch/x86/kernel/slmodule.c
create mode 100644 drivers/firmware/efi/libstub/x86-slaunch.c
create mode 100644 include/linux/slaunch.h
create mode 100644 include/linux/slr_efi.h
create mode 100644 include/linux/slr_table.h
create mode 100644 include/linux/tpm_buf.h
create mode 100644 include/linux/tpm_ptp.h
--
2.47.3
next reply other threads:[~2026-05-15 21:14 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 21:13 Ross Philipson [this message]
2026-05-15 21:13 ` [PATCH v16 01/38] tpm: Initial step to reorganize TPM public headers Ross Philipson
2026-05-15 23:03 ` Jarkko Sakkinen
2026-05-15 23:05 ` Jason Gunthorpe
2026-05-15 23:10 ` Dave Hansen
2026-05-15 23:51 ` Jarkko Sakkinen
2026-05-15 21:13 ` [PATCH v16 02/38] tpm: Move TPM1 specific definitions to the command header Ross Philipson
2026-05-15 23:14 ` Jarkko Sakkinen
2026-05-15 21:13 ` [PATCH v16 03/38] tpm: Move TPM2 " Ross Philipson
2026-05-15 23:15 ` Jarkko Sakkinen
2026-05-15 21:13 ` [PATCH v16 04/38] tpm: Move TPM common base " Ross Philipson
2026-05-15 23:22 ` Jarkko Sakkinen
2026-05-15 21:13 ` [PATCH v16 05/38] tpm: Move platform specific definitions to the new PTP header Ross Philipson
2026-05-15 21:13 ` [PATCH v16 06/38] tpm: Remove main TPM header from TPM event log header Ross Philipson
2026-05-15 21:13 ` [PATCH v16 07/38] tpm-buf: Merge TPM_BUF_BOUNDARY_ERROR and TPM_BUF_OVERFLOW Ross Philipson
2026-05-15 21:13 ` [PATCH v16 08/38] tpm-buf: Remove chip parameter from tpm_buf_append_handle() Ross Philipson
2026-05-15 21:13 ` [PATCH v16 09/38] tpm-buf: Implement managed allocations Ross Philipson
2026-05-15 21:13 ` [PATCH v16 10/38] tpm-buf: Add TPM buffer support header for standalone reuse Ross Philipson
2026-05-15 21:13 ` [PATCH v16 11/38] tpm/tpm_tis: Close all localities Ross Philipson
2026-05-15 21:13 ` [PATCH v16 12/38] tpm/tpm_tis: Address positive localities in tpm_tis_request_locality() Ross Philipson
2026-05-15 21:13 ` [PATCH v16 13/38] tpm/tpm_tis: Allow locality to be set to a different value Ross Philipson
2026-05-15 21:13 ` [PATCH v16 14/38] tpm/sysfs: Show locality used by kernel Ross Philipson
2026-05-15 21:13 ` [PATCH v16 15/38] Documentation/security: Secure Launch kernel documentation Ross Philipson
2026-05-15 22:02 ` Randy Dunlap
2026-05-15 21:13 ` [PATCH v16 16/38] x86: Secure Launch Kconfig Ross Philipson
2026-05-15 21:13 ` [PATCH v16 17/38] x86: Secure Launch Resource Table header file Ross Philipson
2026-05-15 21:13 ` [PATCH v16 18/38] x86/efi: Secure Launch Resource Table EFI definitions " Ross Philipson
2026-05-15 21:13 ` [PATCH v16 19/38] x86: Secure Launch main " Ross Philipson
2026-05-15 21:13 ` [PATCH v16 20/38] x86/txt: Intel Trusted eXecution Technology (TXT) definitions Ross Philipson
2026-05-15 21:13 ` [PATCH v16 21/38] lib/crypto: Add SHA1 support for pre-boot environments Ross Philipson
2026-05-15 21:13 ` [PATCH v16 22/38] lib/crypto: Add SHA512 " Ross Philipson
2026-05-15 21:13 ` [PATCH v16 23/38] x86: Allow WARN_trap() macro to be included in " Ross Philipson
2026-05-15 21:13 ` [PATCH v16 24/38] x86/msr: Add variable MTRR base/mask and x2apic ID registers Ross Philipson
2026-05-15 21:13 ` [PATCH v16 25/38] x86/boot: Slight refactor of the 5 level paging logic Ross Philipson
2026-05-15 21:13 ` [PATCH v16 26/38] x86: Add early SHA-1 support for Secure Launch early measurements Ross Philipson
2026-05-15 21:13 ` [PATCH v16 27/38] x86: Add early SHA-256 " Ross Philipson
2026-05-15 21:14 ` [PATCH v16 28/38] x86: Add early SHA-384/512 " Ross Philipson
2026-05-15 21:14 ` [PATCH v16 29/38] x86/tpm: Early startup TPM PCR extending driver Ross Philipson
2026-05-15 22:32 ` Dave Hansen
2026-05-15 21:14 ` [PATCH v16 30/38] x86/slaunch: Add MLE header and Secure Launch entrypoint to the core kernel Ross Philipson
2026-05-15 21:14 ` [PATCH v16 31/38] x86/slaunch: Secure Launch kernel early boot initialization Ross Philipson
2026-05-15 21:14 ` [PATCH v16 32/38] x86/slaunch: Secure Launch kernel late " Ross Philipson
2026-05-15 21:14 ` [PATCH v16 33/38] x86/slaunch: Secure Launch SMP bringup support Ross Philipson
2026-05-15 21:14 ` [PATCH v16 34/38] kexec/slaunch: Secure Launch kexec SEXIT support Ross Philipson
2026-05-15 21:14 ` [PATCH v16 35/38] reboot/slaunch: Secure Launch SEXIT support on reboot paths Ross Philipson
2026-05-15 21:14 ` [PATCH v16 36/38] x86/slaunch: Secure Launch late initcall platform module Ross Philipson
2026-05-15 21:14 ` [PATCH v16 37/38] x86/efistub: EFI stub DRTM support for Secure Launch Ross Philipson
2026-05-15 21:14 ` [PATCH v16 38/38] x86/boot: Legacy boot " Ross Philipson
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=20260515211410.31440-1-ross.philipson@gmail.com \
--to=ross.philipson@gmail.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=andrew.cooper3@citrix.com \
--cc=ardb@kernel.org \
--cc=baolu.lu@linux.intel.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=daniel.kiper@oracle.com \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=dpsmith@apertussolutions.com \
--cc=dwmw2@infradead.org \
--cc=ebiederm@xmission.com \
--cc=herbert@gondor.apana.org.au \
--cc=hpa@zytor.com \
--cc=iommu@lists.linux.dev \
--cc=jarkko@kernel.org \
--cc=jgg@ziepe.ca \
--cc=kanth.ghatraju@oracle.com \
--cc=kexec@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-efi@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=mjg59@srcf.ucam.org \
--cc=nivedita@alum.mit.edu \
--cc=peterhuewe@gmx.de \
--cc=tglx@linutronix.de \
--cc=trenchboot-devel@googlegroups.com \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.