mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
firmware: coreboot: Add CFR firmware attributes driver
coreboot can publish a CFR tree in its coreboot table to describe firmware setup options. Add a firmware-attributes driver for that table entry under the coreboot firmware driver directory. The driver exposes runtime EFI variable-backed boolean, enum and integer settings through the firmware-attributes ABI. It only registers settings with readable runtime EFI variables, skips suppressed, volatile, dependency-gated and non-runtime options, and keeps read-only or inactive options read-only in sysfs. For settings with an APM_CNT runtime-apply record, write the EFI variable and ask firmware to apply the setting immediately with an I/O port SMI command. If firmware reports a failure, restore the old EFI variable value. Settings without a runtime apply hook keep the EFI variable update and set pending_reboot. Depend on HAS_IOPORT because APM_CNT uses legacy I/O ports. Tested on a Star Labs Byte with firmware 26.07: runtime APM_CNT apply was verified with power_led, and reboot-needed behavior was verified with debug_level. Link: https://doc.coreboot.org/drivers/cfr.html Link: https://doc.coreboot.org/drivers/cfr_internal.html Signed-off-by: Sean Rhodes <sean@starlabs.systems> Link: https://lore.kernel.org/r/73204be94586622903da7fa90757fb091e8a7c2c.1788284852.git.sean@starlabs.systems Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
This commit is contained in:
parent
6f3adf358c
commit
f2e05ce976
|
|
@ -6716,6 +6716,12 @@ F: tools/testing/selftests/cgroup/test_hugetlb_memcg.c
|
||||||
F: tools/testing/selftests/cgroup/test_kmem.c
|
F: tools/testing/selftests/cgroup/test_kmem.c
|
||||||
F: tools/testing/selftests/cgroup/test_memcontrol.c
|
F: tools/testing/selftests/cgroup/test_memcontrol.c
|
||||||
|
|
||||||
|
COREBOOT CFR FIRMWARE ATTRIBUTES DRIVER
|
||||||
|
M: Sean Rhodes <sean@starlabs.systems>
|
||||||
|
L: chrome-platform@lists.linux.dev
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/firmware/coreboot/coreboot-cfr.c
|
||||||
|
|
||||||
COREBOOT FIRMWARE DRIVERS
|
COREBOOT FIRMWARE DRIVERS
|
||||||
M: Tzung-Bi Shih <tzungbi@kernel.org>
|
M: Tzung-Bi Shih <tzungbi@kernel.org>
|
||||||
R: Brian Norris <briannorris@chromium.org>
|
R: Brian Norris <briannorris@chromium.org>
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,21 @@ config COREBOOT_TABLE
|
||||||
device tree node /firmware/coreboot.
|
device tree node /firmware/coreboot.
|
||||||
If unsure say N.
|
If unsure say N.
|
||||||
|
|
||||||
|
config COREBOOT_CFR
|
||||||
|
tristate "coreboot CFR firmware attributes"
|
||||||
|
depends on EFI
|
||||||
|
depends on COREBOOT_TABLE
|
||||||
|
depends on HAS_IOPORT
|
||||||
|
select CRC32
|
||||||
|
select FW_ATTR_CLASS
|
||||||
|
help
|
||||||
|
This driver parses the coreboot CFR table and exposes runtime EFI
|
||||||
|
variable-backed options through the firmware-attributes sysfs
|
||||||
|
interface.
|
||||||
|
|
||||||
|
If you have a system running coreboot with CFR runtime
|
||||||
|
configuration support, say Y or M here.
|
||||||
|
|
||||||
config COREBOOT_MEMCONSOLE_COMMON
|
config COREBOOT_MEMCONSOLE_COMMON
|
||||||
tristate
|
tristate
|
||||||
depends on GOOGLE_MEMCONSOLE_X86_LEGACY || COREBOOT_MEMCONSOLE
|
depends on GOOGLE_MEMCONSOLE_X86_LEGACY || COREBOOT_MEMCONSOLE
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
obj-$(CONFIG_GOOGLE_SMI) += gsmi.o
|
obj-$(CONFIG_GOOGLE_SMI) += gsmi.o
|
||||||
obj-$(CONFIG_COREBOOT_TABLE) += coreboot_table.o
|
obj-$(CONFIG_COREBOOT_TABLE) += coreboot_table.o
|
||||||
|
obj-$(CONFIG_COREBOOT_CFR) += coreboot-cfr.o
|
||||||
obj-$(CONFIG_COREBOOT_FRAMEBUFFER) += framebuffer-coreboot.o
|
obj-$(CONFIG_COREBOOT_FRAMEBUFFER) += framebuffer-coreboot.o
|
||||||
obj-$(CONFIG_COREBOOT_MEMCONSOLE_COMMON) += memconsole.o
|
obj-$(CONFIG_COREBOOT_MEMCONSOLE_COMMON) += memconsole.o
|
||||||
obj-$(CONFIG_COREBOOT_MEMCONSOLE) += memconsole-coreboot.o
|
obj-$(CONFIG_COREBOOT_MEMCONSOLE) += memconsole-coreboot.o
|
||||||
|
|
|
||||||
1204
drivers/firmware/coreboot/coreboot-cfr.c
Normal file
1204
drivers/firmware/coreboot/coreboot-cfr.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user