Skip to content

Commit e3daa26

Browse files
committed
Merge branch 'acpi-pfrut'
Merge support for the Platform Firmware Runtime Update and Telemetry interface based on ACPI. The interface provided here allows updating certain pieces of the platform firmware without restarting the system and collecting platform firmware telemetry data. This also includes a utility for accesing the new interface from user space. * acpi-pfrut: ACPI: pfr_telemetry: Fix info leak in pfrt_log_ioctl() ACPI: pfr_update: Fix return value check in pfru_write() ACPI: tools: Introduce utility for firmware updates/telemetry ACPI: Introduce Platform Firmware Runtime Telemetry driver ACPI: Introduce Platform Firmware Runtime Update device driver efi: Introduce EFI_FIRMWARE_MANAGEMENT_CAPSULE_HEADER and corresponding structures
2 parents ebf8b13 + 7bf2e4d commit e3daa26

File tree

13 files changed

+1936
-9
lines changed

13 files changed

+1936
-9
lines changed

Documentation/userspace-api/ioctl/ioctl-number.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ Code Seq# Include File Comments
367367
<mailto:aherrman@de.ibm.com>
368368
0xE5 00-3F linux/fuse.h
369369
0xEC 00-01 drivers/platform/chrome/cros_ec_dev.h ChromeOS EC driver
370+
0xEE 00-09 uapi/linux/pfrut.h Platform Firmware Runtime Update and Telemetry
370371
0xF3 00-3F drivers/usb/misc/sisusbvga/sisusb.h sisfb (in development)
371372
<mailto:thomas@winischhofer.net>
372373
0xF6 all LTTng Linux Trace Toolkit Next Generation

drivers/acpi/Kconfig

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -517,6 +517,28 @@ config ACPI_CONFIGFS
517517
userspace. The configurable ACPI groups will be visible under
518518
/config/acpi, assuming configfs is mounted under /config.
519519

520+
config ACPI_PFRUT
521+
tristate "ACPI Platform Firmware Runtime Update and Telemetry"
522+
depends on 64BIT
523+
help
524+
This mechanism allows certain pieces of the platform firmware
525+
to be updated on the fly while the system is running (runtime)
526+
without the need to restart it, which is key in the cases when
527+
the system needs to be available 100% of the time and it cannot
528+
afford the downtime related to restarting it, or when the work
529+
carried out by the system is particularly important, so it cannot
530+
be interrupted, and it is not practical to wait until it is complete.
531+
532+
The existing firmware code can be modified (driver update) or
533+
extended by adding new code to the firmware (code injection).
534+
535+
Besides, the telemetry driver allows user space to fetch telemetry
536+
data from the firmware with the help of the Platform Firmware Runtime
537+
Telemetry interface.
538+
539+
To compile the drivers as modules, choose M here:
540+
the modules will be called pfr_update and pfr_telemetry.
541+
520542
if ARM64
521543
source "drivers/acpi/arm64/Kconfig"
522544

drivers/acpi/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ obj-$(CONFIG_ACPI_CPPC_LIB) += cppc_acpi.o
103103
obj-$(CONFIG_ACPI_SPCR_TABLE) += spcr.o
104104
obj-$(CONFIG_ACPI_DEBUGGER_USER) += acpi_dbg.o
105105
obj-$(CONFIG_ACPI_PPTT) += pptt.o
106+
obj-$(CONFIG_ACPI_PFRUT) += pfr_update.o pfr_telemetry.o
106107

107108
# processor has its own "processor." module_param namespace
108109
processor-y := processor_driver.o

0 commit comments

Comments
 (0)