git: e10bda708903 - stable/15 - random: TPM_HARVEST should have been named RANDOM_ENABLE_TPM
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 11 Oct 2026 01:06:25 UTC
The branch stable/15 has been updated by kbowling:
URL: https://cgit.FreeBSD.org/src/commit/?id=e10bda7089033ece33bec182e748a8361cf5764e
commit e10bda7089033ece33bec182e748a8361cf5764e
Author: David E. O'Brien <obrien@FreeBSD.org>
AuthorDate: 2025-10-28 03:53:43 +0000
Commit: Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-10-11 01:05:00 +0000
random: TPM_HARVEST should have been named RANDOM_ENABLE_TPM
* Enable RANDOM_ENABLE_TPM by default
* The commit of TPM_HARVEST failed to add it to NOTES
so that the LINT kernel would build the code.
Fixes: 4ee7d3b0118c82e651712bb65da53d08e78cd7b1
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D53460
Include the follow-up header guard fix so RANDOM_ENABLE_TPM also
provides the entropy harvest task in struct tpm_sc.
(cherry picked from commit 3deb21f1afd5c4abfd9cb93ca120097a841536c5)
(cherry picked from commit f1b9c1aafd8496c5bfdbc2be57bcfecfe58f12a8)
---
share/man/man4/random.4 | 1 +
sys/amd64/conf/GENERIC | 6 +++++-
sys/amd64/conf/MINIMAL | 6 +++++-
sys/arm/conf/GENERIC | 4 ++++
sys/arm64/conf/std.arm64 | 4 ++++
sys/conf/NOTES | 2 ++
sys/conf/options | 1 +
sys/dev/tpm/tpm20.c | 10 +++++-----
sys/dev/tpm/tpm20.h | 2 +-
sys/riscv/conf/GENERIC | 4 ++++
10 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/share/man/man4/random.4 b/share/man/man4/random.4
index 04d46e4d32aa..457f49f3d3ce 100644
--- a/share/man/man4/random.4
+++ b/share/man/man4/random.4
@@ -30,6 +30,7 @@
.Sh SYNOPSIS
.Cd "options RANDOM_LOADABLE"
.Cd "options RANDOM_ENABLE_ETHER"
+.Cd "options RANDOM_ENABLE_TPM"
.Cd "options RANDOM_ENABLE_UMA"
.Sh DESCRIPTION
The
diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC
index d775b20653f6..0548c90985d1 100644
--- a/sys/amd64/conf/GENERIC
+++ b/sys/amd64/conf/GENERIC
@@ -311,7 +311,6 @@ device crypto # core crypto support
device aesni # AES-NI OpenCrypto module
device loop # Network loopback
device padlock_rng # VIA Padlock RNG
-device rdrand_rng # Intel Bull Mountain RNG
device ether # Ethernet support
device vlan # 802.1Q VLAN support
device tuntap # Packet tunnel.
@@ -325,6 +324,11 @@ device xz # lzma decompression
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter
+# random(4)
+device rdrand_rng # Intel Bull Mountain RNG
+device tpm # Trusted Platform Module
+options RANDOM_ENABLE_TPM # enable entropy from TPM 2.0
+
# USB support
options USB_DEBUG # enable debug msgs
device uhci # UHCI PCI->USB interface
diff --git a/sys/amd64/conf/MINIMAL b/sys/amd64/conf/MINIMAL
index 06680cf6c774..b7baa2bd061d 100644
--- a/sys/amd64/conf/MINIMAL
+++ b/sys/amd64/conf/MINIMAL
@@ -128,7 +128,6 @@ device uart # Generic UART driver
# Pseudo devices.
device loop # Network loopback
device padlock_rng # VIA Padlock RNG
-device rdrand_rng # Intel Bull Mountain RNG
device ether # Ethernet support
# The `bpf' device enables the Berkeley Packet Filter.
@@ -136,6 +135,11 @@ device ether # Ethernet support
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter
+# random(4)
+device rdrand_rng # Intel Bull Mountain RNG
+device tpm # Trusted Platform Module
+options RANDOM_ENABLE_TPM # enable entropy from TPM 2.0
+
# VirtIO support
device virtio # Generic VirtIO bus (required)
device virtio_pci # VirtIO PCI device
diff --git a/sys/arm/conf/GENERIC b/sys/arm/conf/GENERIC
index 22bb75993834..0d741a7e584a 100644
--- a/sys/arm/conf/GENERIC
+++ b/sys/arm/conf/GENERIC
@@ -216,6 +216,10 @@ device ffec # Freescale Fast Ethernet Controller
device neta # Marvell 10/100/1000 Network controller
device smsc # SMSC LAN91C111
+# random(4)
+device tpm # Trusted Platform Module
+options RANDOM_ENABLE_TPM # enable entropy from TPM 2.0
+
# Sound support
device sound
diff --git a/sys/arm64/conf/std.arm64 b/sys/arm64/conf/std.arm64
index f9a7d9a2f7f4..427ac0ddad44 100644
--- a/sys/arm64/conf/std.arm64
+++ b/sys/arm64/conf/std.arm64
@@ -106,3 +106,7 @@ device efirtc # EFI RTC
# SMBIOS -- all EFI platforms
device smbios
+
+# random(4)
+device tpm # Trusted Platform Module
+options RANDOM_ENABLE_TPM # enable entropy from TPM 2.0
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 494303203e2f..70834e93f3f0 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -2824,6 +2824,8 @@ options RANDOM_ENABLE_UMA # slab allocator
# environment.
options RANDOM_ENABLE_ETHER # ether_input
+options RANDOM_ENABLE_TPM # implies TPM_HARVEST
+
# Module to enable execution of application via emulators like QEMU
options IMGACT_BINMISC
diff --git a/sys/conf/options b/sys/conf/options
index d0737f6595ce..10485fe7f765 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -958,6 +958,7 @@ RANDOM_LOADABLE opt_global.h
# the uma slab allocator.
RANDOM_ENABLE_UMA opt_global.h
RANDOM_ENABLE_ETHER opt_global.h
+RANDOM_ENABLE_TPM opt_global.h
# This options turns TPM into entropy source.
TPM_HARVEST opt_tpm.h
diff --git a/sys/dev/tpm/tpm20.c b/sys/dev/tpm/tpm20.c
index ca73b0de8529..c521ca9dda9d 100644
--- a/sys/dev/tpm/tpm20.c
+++ b/sys/dev/tpm/tpm20.c
@@ -42,7 +42,7 @@
MALLOC_DEFINE(M_TPM20, "tpm_buffer", "buffer for tpm 2.0 driver");
static void tpm20_discard_buffer(void *arg);
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
static void tpm20_harvest(void *arg, int unused);
#endif
static int tpm20_restart(device_t dev, bool clear);
@@ -185,7 +185,7 @@ tpm20_ioctl(struct cdev *dev, u_long cmd, caddr_t data,
return (ENOTTY);
}
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
static const struct random_source random_tpm = {
.rs_ident = "TPM",
.rs_source = RANDOM_PURE_TPM,
@@ -213,7 +213,7 @@ tpm20_init(struct tpm_sc *sc)
if (result != 0)
tpm20_release(sc);
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
random_source_register(&random_tpm);
TIMEOUT_TASK_INIT(taskqueue_thread, &sc->harvest_task, 0,
tpm20_harvest, sc);
@@ -228,7 +228,7 @@ void
tpm20_release(struct tpm_sc *sc)
{
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
if (device_is_attached(sc->dev))
taskqueue_drain_timeout(taskqueue_thread, &sc->harvest_task);
random_source_deregister(&random_tpm);
@@ -277,7 +277,7 @@ tpm20_shutdown(device_t dev)
return (tpm20_save_state(dev, false));
}
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
/*
* Get TPM_HARVEST_SIZE random bytes and add them
* into system entropy pool.
diff --git a/sys/dev/tpm/tpm20.h b/sys/dev/tpm/tpm20.h
index 7f6e8f39c5e6..96b2920283b6 100644
--- a/sys/dev/tpm/tpm20.h
+++ b/sys/dev/tpm/tpm20.h
@@ -128,7 +128,7 @@ struct tpm_sc {
lwpid_t owner_tid;
struct callout discard_buffer_callout;
-#ifdef TPM_HARVEST
+#if defined TPM_HARVEST || defined RANDOM_ENABLE_TPM
struct timeout_task harvest_task;
#endif
diff --git a/sys/riscv/conf/GENERIC b/sys/riscv/conf/GENERIC
index e5f88b811219..49055af9d5ee 100644
--- a/sys/riscv/conf/GENERIC
+++ b/sys/riscv/conf/GENERIC
@@ -207,6 +207,10 @@ options FDT
device iicbus # Bus support, required for iicoc below.
device iicoc # OpenCores I2C controller support
+# random(4)
+device tpm # Trusted Platform Module
+options RANDOM_ENABLE_TPM # enable entropy from TPM 2.0
+
# Include SoC specific configuration
include "std.allwinner"
include "std.cvitek"