coreboot CFR firmware attributes
Subsystems (11)
Sean Rhodes
maintainerv3 cover coreboot CFR firmware attributes
Hi,
This series adds a coreboot CFR firmware-attributes driver.
v3 addresses Julius's review feedback that this does not belong under platform/x86. The driver now lives under drivers/firmware/coreboot/, next to the existing coreboot table consumers. To support that, the firmware-attributes class helper is moved from drivers/platform/x86 to drivers/firmware.
The series also renames drivers/firmware/google to drivers/firmware/coreboot, because the drivers in that directory are coreboot table drivers rather than Google-specific firmware drivers. The existing CONFIG_GOOGLE_* symbols are intentionally kept to avoid user configuration churn.
The CFR driver uses the existing firmware-attributes ABI. It exposes runtime EFI variable-backed boolean, enum and integer options, skips suppressed, volatile, dependency-gated and non-runtime options, and keeps read-only or inactive options read-only in sysfs.
For CFR runtime-apply metadata using APM_CNT, x86 systems can apply a setting immediately after writing the EFI variable. Non-x86 builds keep the EFI write and report pending_reboot.
Changes in v3:
- Move the driver from platform/x86 to drivers/firmware/coreboot.
- Split out the firmware-attributes class helper move.
- Rename drivers/firmware/google to drivers/firmware/coreboot.
- Keep CONFIG_GOOGLE_* symbols unchanged.
- Keep coreboot bus internals private to drivers/firmware/coreboot.
- Keep CFR record definitions private to the CFR driver.
- Avoid rewriting EFI variables when userspace writes the current value.
Testing:
- Tested on a Star Labs Byte with firmware 26.07 and the driver built as a module against Linux 6.17.
- Verified runtime APM_CNT apply with power_led.
- Verified reboot-needed behavior with debug_level.
- Built x86 objects with W=1 for the CFR/coreboot/helper path and touched platform-x86 firmware-attributes users.
- Built ARM64 objects with clang for the CFR/coreboot/helper path.
- Passed git diff --check and scripts/checkpatch.pl --strict.
Sean Rhodes (3):
firmware: Move firmware attributes class helper
firmware: Rename google firmware directory to coreboot
firmware: coreboot: Add CFR firmware attributes driver
MAINTAINERS | 18 +-
drivers/firmware/Kconfig | 5 +-
drivers/firmware/Makefile | 3 +-
drivers/firmware/{google => coreboot}/Kconfig | 19 +-
.../firmware/{google => coreboot}/Makefile | 1 +
drivers/firmware/{google => coreboot}/cbmem.c | 0
drivers/firmware/coreboot/coreboot-cfr.c | 1068 +++++++++++++++++
.../{google => coreboot}/coreboot_table.c | 0
.../{google => coreboot}/coreboot_table.h | 0
.../framebuffer-coreboot.c | 0
drivers/firmware/{google => coreboot}/gsmi.c | 0
.../memconsole-coreboot.c | 0
.../memconsole-x86-legacy.c | 0
.../{google => coreboot}/memconsole.c | 0
.../{google => coreboot}/memconsole.h | 6 +-
drivers/firmware/{google => coreboot}/vpd.c | 0
.../{google => coreboot}/vpd_decode.c | 0
.../{google => coreboot}/vpd_decode.h | 0
.../firmware_attributes_class.c | 2 +-
drivers/platform/x86/Kconfig | 3 -
drivers/platform/x86/Makefile | 2 -
drivers/platform/x86/asus-armoury.c | 2 +-
.../x86/dell/dell-wmi-sysman/sysman.c | 2 +-
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 2 +-
drivers/platform/x86/lenovo/think-lmi.c | 2 +-
drivers/platform/x86/lenovo/wmi-other.c | 2 +-
drivers/platform/x86/samsung-galaxybook.c | 2 +-
.../linux/firmware_attributes.h | 6 +-
28 files changed, 1120 insertions(+), 25 deletions(-)
rename drivers/firmware/{google => coreboot}/Kconfig (83%)
rename drivers/firmware/{google => coreboot}/Makefile (92%)
rename drivers/firmware/{google => coreboot}/cbmem.c (100%)
create mode 100644 drivers/firmware/coreboot/coreboot-cfr.c
rename drivers/firmware/{google => coreboot}/coreboot_table.c (100%)
rename drivers/firmware/{google => coreboot}/coreboot_table.h (100%)
rename drivers/firmware/{google => coreboot}/framebuffer-coreboot.c (100%)
rename drivers/firmware/{google => coreboot}/gsmi.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole-coreboot.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole-x86-legacy.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole.h (82%)
rename drivers/firmware/{google => coreboot}/vpd.c (100%)
rename drivers/firmware/{google => coreboot}/vpd_decode.c (100%)
rename drivers/firmware/{google => coreboot}/vpd_decode.h (100%)
rename drivers/{platform/x86 => firmware}/firmware_attributes_class.c (94%)
rename drivers/platform/x86/firmware_attributes_class.h => include/linux/firmware_attributes.h (60%)Sean Rhodes
maintainerPATCH v3 1/3 firmware: Move firmware attributes class helper
Move the firmware attributes class helper from drivers/platform/x86 to drivers/firmware and expose its class declaration through a public Linux header.
The helper is not x86-specific. Keeping it in firmware lets coreboot firmware drivers use the standard firmware-attributes ABI without living under platform/x86.
---
MAINTAINERS | 8 ++++++++
drivers/firmware/Kconfig | 3 +++
drivers/firmware/Makefile | 1 +
.../x86 => firmware}/firmware_attributes_class.c | 2 +-
drivers/platform/x86/Kconfig | 3 ---
drivers/platform/x86/Makefile | 2 --
drivers/platform/x86/asus-armoury.c | 2 +-
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 2 +-
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 2 +-
drivers/platform/x86/lenovo/think-lmi.c | 2 +-
drivers/platform/x86/lenovo/wmi-other.c | 2 +-
drivers/platform/x86/samsung-galaxybook.c | 2 +-
.../linux/firmware_attributes.h | 6 +++---
13 files changed, 22 insertions(+), 15 deletions(-)
rename drivers/{platform/x86 => firmware}/firmware_attributes_class.c (94%)
rename drivers/platform/x86/firmware_attributes_class.h => include/linux/firmware_attributes.h (60%)MAINTAINERS +8 -0
@@ -10114,6 +10114,14 @@ F: include/linux/firewire.h F: include/uapi/linux/firewire*.h F: tools/firewire/ +FIRMWARE ATTRIBUTES CLASS +M: Hans de Goede <[email protected]> +M: Ilpo Järvinen <[email protected]> +L: [email protected] +S: Maintained +F: drivers/firmware/firmware_attributes_class.c +F: include/linux/firmware_attributes.h + FIRMWARE FRAMEWORK FOR ARMV8-A M: Sudeep Holla <[email protected]> L: [email protected] (moderated for non-subscribers)
drivers/firmware/Kconfig +3 -0
@@ -8,6 +8,9 @@ menu "Firmware Drivers" source "drivers/firmware/arm_scmi/Kconfig" +config FW_ATTR_CLASS + tristate + config ARM_SCPI_PROTOCOL tristate "ARM System Control and Power Interface (SCPI) Message Protocol" depends on ARM || ARM64 || COMPILE_TEST
drivers/firmware/Makefile +1 -0
@@ -16,6 +16,7 @@ obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o obj-$(CONFIG_MTK_ADSP_IPC) += mtk-adsp-ipc.o obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o +obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o obj-$(CONFIG_SYSFB) += sysfb.o obj-$(CONFIG_SYSFB_SIMPLEFB) += sysfb_simplefb.o obj-$(CONFIG_TH1520_AON_PROTOCOL) += thead,th1520-aon.o
drivers/firmware/firmware_attributes_class.c renamed from drivers/platform/x86/firmware_attributes_class.c +1 -1
@@ -3,7 +3,7 @@/* Firmware attributes class helper module */ #include <linux/module.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> const struct class firmware_attributes_class = { .name ="firmware-attributes" ,
drivers/platform/x86/Kconfig +0 -3
@@ -926,9 +926,6 @@ config DASHARO_ACPI source "drivers/platform/x86/x86-android-tablets/Kconfig" -config FW_ATTR_CLASS - tristate - config INTEL_IMR bool "Intel Isolated Memory Region support" depends on X86_INTEL_QUARK && IOSF_MBI
drivers/platform/x86/Makefile +0 -2
@@ -63,8 +63,6 @@ obj-$(CONFIG_X86_PLATFORM_DRIVERS_HP) += hp/ # Hewlett Packard Enterprise obj-$(CONFIG_UV_SYSFS) += uv_sysfs.o -obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o - # IBM Thinkpad (before 2005) obj-$(CONFIG_IBM_RTL) += ibm_rtl.o obj-$(CONFIG_SENSORS_HDAPS) += hdaps.o
drivers/platform/x86/asus-armoury.c +1 -1
@@ -34,7 +34,7 @@#include <linux/sysfs.h> #include "asus-armoury.h" -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define ASUS_NB_WMI_EVENT_GUID "0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C"
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +1 -1
@@ -16,7 +16,7 @@#include <linux/sysfs.h> #include <linux/wmi.h> #include "dell-wmi-sysman.h" -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define MAX_TYPES 4#include <linux/nls.h>
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +1 -1
@@ -14,7 +14,7 @@#include <linux/string.h> #include <linux/wmi.h> #include "bioscfg.h" -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/nls.h> #include <linux/errno.h>
drivers/platform/x86/lenovo/think-lmi.c +1 -1
@@ -20,7 +20,7 @@#include <linux/types.h> #include <linux/dmi.h> #include <linux/wmi.h> -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include "think-lmi.h" static bool debug_support;
drivers/platform/x86/lenovo/wmi-other.c +1 -1
@@ -50,7 +50,7 @@#include "wmi-capdata.h" #include "wmi-events.h" #include "wmi-helpers.h" -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define LENOVO_OTHER_MODE_GUID "DC2A8805-3A8C-41BA-A6F7-092E0089CD3B"
drivers/platform/x86/samsung-galaxybook.c +1 -1
@@ -28,7 +28,7 @@#include <linux/uuid.h> #include <linux/workqueue.h> #include <acpi/battery.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define DRIVER_NAME "samsung-galaxybook"
include/linux/firmware_attributes.h renamed from drivers/platform/x86/firmware_attributes_class.h +3 -3
@@ -2,11 +2,11 @@/* Firmware attributes class helper module */ -#ifndef FW_ATTR_CLASS_H -#define FW_ATTR_CLASS_H +#ifndef _LINUX_FIRMWARE_ATTRIBUTES_H +#define _LINUX_FIRMWARE_ATTRIBUTES_H#include <linux/device/class.h> extern const struct class firmware_attributes_class; -#endif /* FW_ATTR_CLASS_H */ +#endif /* _LINUX_FIRMWARE_ATTRIBUTES_H */
Re: [PATCH v3 1/3] firmware: Move firmware attributes class helper
Quoted 216 lines · Sean Rhodes
Move the firmware attributes class helper from
drivers/platform/x86todrivers/firmwareand expose its class declaration through a public Linux header.The helper is not x86-specific. Keeping it in firmware lets coreboot firmware drivers use the standard firmware-attributes ABI without living under platform/x86.
Signed-off-by Sean Rhodes <[email protected]>--- MAINTAINERS | 8 ++++++++ drivers/firmware/Kconfig | 3 +++ drivers/firmware/Makefile | 1 + .../x86 => firmware}/firmware_attributes_class.c | 2 +- drivers/platform/x86/Kconfig | 3 --- drivers/platform/x86/Makefile | 2 -- drivers/platform/x86/asus-armoury.c | 2 +- drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 2 +- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 2 +- drivers/platform/x86/lenovo/think-lmi.c | 2 +- drivers/platform/x86/lenovo/wmi-other.c | 2 +- drivers/platform/x86/samsung-galaxybook.c | 2 +- .../linux/firmware_attributes.h | 6 +++--- 13 files changed, 22 insertions(+), 15 deletions(-) rename drivers/{platform/x86 => firmware}/firmware_attributes_class.c (94%) rename drivers/platform/x86/firmware_attributes_class.h =>
include/linux/firmware_attributes.h(60%)MAINTAINERS +8
-0@@ -10114,6 +10114,14 @@ F: include/linux/firewire.h F: include/uapi/linux/firewire*.h F: tools/firewire/ +FIRMWARE ATTRIBUTES CLASS +M: Hans de Goede <[email protected]> +M: Ilpo Järvinen <[email protected]> +L: [email protected] +S: Maintained +F: drivers/firmware/firmware_attributes_class.c +F: include/linux/firmware_attributes.h + FIRMWARE FRAMEWORK FOR ARMV8-A M: Sudeep Holla <[email protected]> L: [email protected] (moderated for non-subscribers)drivers/firmware/Kconfig +3
-0@@ -8,6 +8,9 @@ menu "Firmware Drivers" source "drivers/firmware/arm_scmi/Kconfig" +config FW_ATTR_CLASS + tristate + config ARM_SCPI_PROTOCOL tristate "ARM System Control and Power Interface (SCPI) MessageProtocol"
drivers/firmware/Kconfig +0
-0depends on ARM || ARM64 || COMPILE_TESTdrivers/firmware/Makefile +1
-0@@ -16,6 +16,7 @@ obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o obj-$(CONFIG_MTK_ADSP_IPC) += mtk-adsp-ipc.o obj-$(CONFIG_RASPBERRYPI_FIRMWARE) += raspberrypi.o obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o +obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o obj-$(CONFIG_SYSFB) += sysfb.o obj-$(CONFIG_SYSFB_SIMPLEFB) += sysfb_simplefb.o obj-$(CONFIG_TH1520_AON_PROTOCOL) += thead,th1520-aon.odrivers/firmware/firmware_attributes_class.c renamed from drivers/platform/x86/firmware_attributes_class.c +1
-1@@ -3,7 +3,7 @@/* Firmware attributes class helper module */ #include <linux/module.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> const struct class firmware_attributes_class = { .name ="firmware-attributes" ,drivers/platform/x86/Kconfig +0
-3@@ -926,9 +926,6 @@ config DASHARO_ACPI source "drivers/platform/x86/x86-android-tablets/Kconfig" -config FW_ATTR_CLASS - tristate - config INTEL_IMR bool "Intel Isolated Memory Region support" depends on X86_INTEL_QUARK && IOSF_MBIdrivers/platform/x86/Makefile +0
-2@@ -63,8 +63,6 @@ obj-$(CONFIG_X86_PLATFORM_DRIVERS_HP) += hp/ # Hewlett Packard Enterprise obj-$(CONFIG_UV_SYSFS) += uv_sysfs.o -obj-$(CONFIG_FW_ATTR_CLASS) += firmware_attributes_class.o - # IBM Thinkpad (before 2005) obj-$(CONFIG_IBM_RTL) += ibm_rtl.o obj-$(CONFIG_SENSORS_HDAPS) += hdaps.odrivers/platform/x86/asus-armoury.c +1
-1@@ -34,7 +34,7 @@#include <linux/sysfs.h> #include "asus-armoury.h" -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define ASUS_NB_WMI_EVENT_GUID "0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C"drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +1
-1@@ -16,7 +16,7 @@#include <linux/sysfs.h> #include <linux/wmi.h> #include "dell-wmi-sysman.h" -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define MAX_TYPES 4#include <linux/nls.h> drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +1
-1@@ -14,7 +14,7 @@#include <linux/string.h> #include <linux/wmi.h> #include "bioscfg.h" -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/nls.h> #include <linux/errno.h> drivers/platform/x86/lenovo/think-lmi.c +1
-1@@ -20,7 +20,7 @@#include <linux/types.h> #include <linux/dmi.h> #include <linux/wmi.h> -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include "think-lmi.h" static bool debug_support;drivers/platform/x86/lenovo/wmi-other.c +1
-1@@ -50,7 +50,7 @@#include "wmi-capdata.h" #include "wmi-events.h" #include "wmi-helpers.h" -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define LENOVO_OTHER_MODE_GUID "DC2A8805-3A8C-41BA-A6F7-092E0089CD3B"drivers/platform/x86/samsung-galaxybook.c +1
-1@@ -28,7 +28,7 @@#include <linux/uuid.h> #include <linux/workqueue.h> #include <acpi/battery.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #define DRIVER_NAME "samsung-galaxybook"include/linux/firmware_attributes.h renamed from drivers/platform/x86/firmware_attributes_class.h +0
-1@@ -2,11 +2,11 @@/* Firmware attributes class helper module */ -#ifndef FW_ATTR_CLASS_H
include/linux/firmware_attributes.h line 12
Quoted 10 lines
include/linux/firmware_attributes.h renamed from drivers/platform/x86/firmware_attributes_class.h +3
-2-#define FW_ATTR_CLASS_H +#ifndef _LINUX_FIRMWARE_ATTRIBUTES_H +#define _LINUX_FIRMWARE_ATTRIBUTES_H#include <linux/device/class.h> extern const struct class firmware_attributes_class; -#endif /* FW_ATTR_CLASS_H */ +#endif /* _LINUX_FIRMWARE_ATTRIBUTES_H */
Looks good to me.
Mark
Sean Rhodes
maintainerPATCH v3 2/3 firmware: Rename google firmware directory to coreboot
In reply to Sean RhodesMost drivers in drivers/firmware/google are coreboot table drivers rather than Google-specific firmware drivers. Rename the directory to coreboot and update the Kconfig prompt, build path and maintainer entry.
Keep the existing CONFIG_GOOGLE_* symbols to avoid user configuration churn in this mechanical move.
---
MAINTAINERS | 4 ++--
drivers/firmware/Kconfig | 2 +-
drivers/firmware/Makefile | 2 +-
drivers/firmware/{google => coreboot}/Kconfig | 6 +++---
drivers/firmware/{google => coreboot}/Makefile | 0
drivers/firmware/{google => coreboot}/cbmem.c | 0
drivers/firmware/{google => coreboot}/coreboot_table.c | 0
drivers/firmware/{google => coreboot}/coreboot_table.h | 0
.../firmware/{google => coreboot}/framebuffer-coreboot.c | 0
drivers/firmware/{google => coreboot}/gsmi.c | 0
drivers/firmware/{google => coreboot}/memconsole-coreboot.c | 0
.../firmware/{google => coreboot}/memconsole-x86-legacy.c | 0
drivers/firmware/{google => coreboot}/memconsole.c | 0
drivers/firmware/{google => coreboot}/memconsole.h | 6 +++---
drivers/firmware/{google => coreboot}/vpd.c | 0
drivers/firmware/{google => coreboot}/vpd_decode.c | 0
drivers/firmware/{google => coreboot}/vpd_decode.h | 0
17 files changed, 10 insertions(+), 10 deletions(-)
rename drivers/firmware/{google => coreboot}/Kconfig (94%)
rename drivers/firmware/{google => coreboot}/Makefile (100%)
rename drivers/firmware/{google => coreboot}/cbmem.c (100%)
rename drivers/firmware/{google => coreboot}/coreboot_table.c (100%)
rename drivers/firmware/{google => coreboot}/coreboot_table.h (100%)
rename drivers/firmware/{google => coreboot}/framebuffer-coreboot.c (100%)
rename drivers/firmware/{google => coreboot}/gsmi.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole-coreboot.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole-x86-legacy.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole.c (100%)
rename drivers/firmware/{google => coreboot}/memconsole.h (82%)
rename drivers/firmware/{google => coreboot}/vpd.c (100%)
rename drivers/firmware/{google => coreboot}/vpd_decode.c (100%)
rename drivers/firmware/{google => coreboot}/vpd_decode.h (100%)MAINTAINERS +2 -2
@@ -11068,14 +11068,14 @@ S: Maintained F: Documentation/networking/device_drivers/ethernet/google/gve.rst F: drivers/net/ethernet/google -GOOGLE FIRMWARE DRIVERS +COREBOOT FIRMWARE DRIVERS M: Tzung-Bi Shih <[email protected]> R: Brian Norris <[email protected]> R: Julius Werner <[email protected]> L: [email protected] S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git -F: drivers/firmware/google/ +F: drivers/firmware/coreboot/ F: include/linux/coreboot.h GOOGLE TENSOR SoC SUPPORT
drivers/firmware/Kconfig +1 -1
@@ -293,7 +293,7 @@ endif # TURRIS_MOX_RWTM source "drivers/firmware/arm_ffa/Kconfig" source "drivers/firmware/broadcom/Kconfig" source "drivers/firmware/cirrus/Kconfig" -source "drivers/firmware/google/Kconfig" +source "drivers/firmware/coreboot/Kconfig" source "drivers/firmware/efi/Kconfig" source "drivers/firmware/imx/Kconfig" source "drivers/firmware/meson/Kconfig"
drivers/firmware/Makefile +1 -1
@@ -30,7 +30,7 @@ obj-y += broadcom/ obj-y += cirrus/ obj-y += meson/ obj-y += microchip/ -obj-$(CONFIG_GOOGLE_FIRMWARE) += google/ +obj-$(CONFIG_GOOGLE_FIRMWARE) += coreboot/ obj-y += efi/ obj-y += imx/ obj-y += psci/
drivers/firmware/coreboot/Kconfig renamed from drivers/firmware/google/Kconfig +3 -3
@@ -1,10 +1,10 @@ # SPDX-License-Identifier: GPL-2.0-only menuconfig GOOGLE_FIRMWARE - bool "Google Firmware Drivers" + bool "coreboot firmware drivers" default n help - These firmware drivers are used by Google servers, - Chromebooks and other devices using coreboot firmware. + These firmware drivers are used by devices running coreboot + firmware, including Chromebooks and some Google servers. If in doubt, say "N". if GOOGLE_FIRMWARE
drivers/firmware/coreboot/Makefile renamed from drivers/firmware/google/Makefile +0 -0
drivers/firmware/coreboot/cbmem.c renamed from drivers/firmware/google/cbmem.c +0 -0
drivers/firmware/coreboot/coreboot_table.c renamed from drivers/firmware/google/coreboot_table.c +0 -0
drivers/firmware/coreboot/coreboot_table.h renamed from drivers/firmware/google/coreboot_table.h +0 -0
drivers/firmware/coreboot/framebuffer-coreboot.c renamed from drivers/firmware/google/framebuffer-coreboot.c +0 -0
drivers/firmware/coreboot/gsmi.c renamed from drivers/firmware/google/gsmi.c +0 -0
drivers/firmware/coreboot/memconsole-coreboot.c renamed from drivers/firmware/google/memconsole-coreboot.c +0 -0
drivers/firmware/coreboot/memconsole-x86-legacy.c renamed from drivers/firmware/google/memconsole-x86-legacy.c +0 -0
drivers/firmware/coreboot/memconsole.c renamed from drivers/firmware/google/memconsole.c +0 -0
drivers/firmware/coreboot/memconsole.h renamed from drivers/firmware/google/memconsole.h +3 -3
@@ -7,8 +7,8 @@* Copyright 2017 Google Inc. */ -#ifndef __FIRMWARE_GOOGLE_MEMCONSOLE_H -#define __FIRMWARE_GOOGLE_MEMCONSOLE_H +#ifndef __FIRMWARE_COREBOOT_MEMCONSOLE_H +#define __FIRMWARE_COREBOOT_MEMCONSOLE_H#include <linux/types.h>
@@ -33,4 +33,4 @@ int memconsole_sysfs_init(void);*/ void memconsole_exit (void ); -#endif /* __FIRMWARE_GOOGLE_MEMCONSOLE_H */ +#endif /* __FIRMWARE_COREBOOT_MEMCONSOLE_H */
drivers/firmware/coreboot/vpd.c renamed from drivers/firmware/google/vpd.c +0 -0
drivers/firmware/coreboot/vpd_decode.c renamed from drivers/firmware/google/vpd_decode.c +0 -0
drivers/firmware/coreboot/vpd_decode.h renamed from drivers/firmware/google/vpd_decode.h +0 -0
Re: [PATCH v3 2/3] firmware: Rename google firmware directory to coreboot
Hi
Am 10.07.26 um 08:12 schrieb Sean Rhodes:
Quoted 6 lines
Most drivers in
drivers/firmware/googleare coreboot table drivers rather than Google-specific firmware drivers. Rename the directory to coreboot and update theKconfigprompt, build path and maintainer entry.Keep the existing CONFIG_GOOGLE_* symbols to avoid user configuration churn in this mechanical move.
You can use 'transitional' for easily renaming Kconfig options.
https://elixir.bootlin.com/linux/v7.1.2/source/Documentation/kbuild/kconfig-language.rst#L245
Best regards
Thomas
Quoted 176 lines
Signed-off-by Sean Rhodes <[email protected]>--- MAINTAINERS | 4 ++-- drivers/firmware/Kconfig | 2 +- drivers/firmware/Makefile | 2 +- drivers/firmware/{google => coreboot}/Kconfig | 6 +++--- drivers/firmware/{google => coreboot}/Makefile | 0 drivers/firmware/{google => coreboot}/cbmem.c | 0 drivers/firmware/{google => coreboot}/coreboot_table.c | 0 drivers/firmware/{google => coreboot}/coreboot_table.h | 0 .../firmware/{google => coreboot}/framebuffer-coreboot.c | 0 drivers/firmware/{google => coreboot}/gsmi.c | 0 drivers/firmware/{google => coreboot}/memconsole-coreboot.c | 0 .../firmware/{google => coreboot}/memconsole-x86-legacy.c | 0 drivers/firmware/{google => coreboot}/memconsole.c | 0 drivers/firmware/{google => coreboot}/memconsole.h | 6 +++--- drivers/firmware/{google => coreboot}/vpd.c | 0 drivers/firmware/{google => coreboot}/vpd_decode.c | 0 drivers/firmware/{google => coreboot}/vpd_decode.h | 0 17 files changed, 10 insertions(+), 10 deletions(-)rename
drivers/firmware/{google=> coreboot}/Kconfig (94%) renamedrivers/firmware/{google=> coreboot}/Makefile (100%) renamedrivers/firmware/{google=>coreboot}/cbmem.c(100%) renamedrivers/firmware/{google=>coreboot}/coreboot_table.c(100%) renamedrivers/firmware/{google=>coreboot}/coreboot_table.h(100%) renamedrivers/firmware/{google=>coreboot}/framebuffer-coreboot.c(100%) renamedrivers/firmware/{google=>coreboot}/gsmi.c(100%) renamedrivers/firmware/{google=>coreboot}/memconsole-coreboot.c(100%) renamedrivers/firmware/{google=>coreboot}/memconsole-x86-legacy.c(100%) renamedrivers/firmware/{google=>coreboot}/memconsole.c(100%) renamedrivers/firmware/{google=>coreboot}/memconsole.h(82%) renamedrivers/firmware/{google=>coreboot}/vpd.c(100%) renamedrivers/firmware/{google=>coreboot}/vpd_decode.c(100%) renamedrivers/firmware/{google=>coreboot}/vpd_decode.h(100%)MAINTAINERS +2
-2@@ -11068,14 +11068,14 @@ S: Maintained F: Documentation/networking/device_drivers/ethernet/google/gve.rst F: drivers/net/ethernet/google -GOOGLE FIRMWARE DRIVERS +COREBOOT FIRMWARE DRIVERS M: Tzung-Bi Shih <[email protected]> R: Brian Norris <[email protected]> R: Julius Werner <[email protected]> L: [email protected] S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git -F: drivers/firmware/google/ +F: drivers/firmware/coreboot/ F: include/linux/coreboot.h GOOGLE TENSOR SoC SUPPORTdrivers/firmware/Kconfig +1
-1@@ -293,7 +293,7 @@ endif # TURRIS_MOX_RWTM source "drivers/firmware/arm_ffa/Kconfig" source "drivers/firmware/broadcom/Kconfig" source "drivers/firmware/cirrus/Kconfig" -source "drivers/firmware/google/Kconfig" +source "drivers/firmware/coreboot/Kconfig" source "drivers/firmware/efi/Kconfig" source "drivers/firmware/imx/Kconfig" source "drivers/firmware/meson/Kconfig"drivers/firmware/Makefile +1
-1@@ -30,7 +30,7 @@ obj-y += broadcom/ obj-y += cirrus/ obj-y += meson/ obj-y += microchip/ -obj-$(CONFIG_GOOGLE_FIRMWARE) += google/ +obj-$(CONFIG_GOOGLE_FIRMWARE) += coreboot/ obj-y += efi/ obj-y += imx/ obj-y += psci/drivers/firmware/coreboot/Kconfig renamed from drivers/firmware/google/Kconfig +3
-3@@ -1,10 +1,10 @@ # SPDX-License-Identifier: GPL-2.0-only menuconfig GOOGLE_FIRMWARE - bool "Google Firmware Drivers" + bool "coreboot firmware drivers" default n help - These firmware drivers are used by Google servers, - Chromebooks and other devices using coreboot firmware. + These firmware drivers are used by devices running coreboot + firmware, including Chromebooks and some Google servers. If in doubt, say "N". if GOOGLE_FIRMWAREdrivers/firmware/coreboot/Makefile renamed from drivers/firmware/google/Makefile +0
-0drivers/firmware/coreboot/cbmem.c renamed from drivers/firmware/google/cbmem.c +0
-0drivers/firmware/coreboot/coreboot_table.c renamed from drivers/firmware/google/coreboot_table.c +0
-0drivers/firmware/coreboot/coreboot_table.h renamed from drivers/firmware/google/coreboot_table.h +0
-0drivers/firmware/coreboot/framebuffer-coreboot.c renamed from drivers/firmware/google/framebuffer-coreboot.c +0
-0drivers/firmware/coreboot/gsmi.c renamed from drivers/firmware/google/gsmi.c +0
-0drivers/firmware/coreboot/memconsole-coreboot.c renamed from drivers/firmware/google/memconsole-coreboot.c +0
-0drivers/firmware/coreboot/memconsole-x86-legacy.c renamed from drivers/firmware/google/memconsole-x86-legacy.c +0
-0drivers/firmware/coreboot/memconsole.c renamed from drivers/firmware/google/memconsole.c +0
-0drivers/firmware/coreboot/memconsole.h renamed from drivers/firmware/google/memconsole.h +3
-3@@ -7,8 +7,8 @@* Copyright 2017 Google Inc. */ -#ifndef __FIRMWARE_GOOGLE_MEMCONSOLE_H -#define __FIRMWARE_GOOGLE_MEMCONSOLE_H +#ifndef __FIRMWARE_COREBOOT_MEMCONSOLE_H +#define __FIRMWARE_COREBOOT_MEMCONSOLE_H#include <linux/types.h> @@ -33,4 +33,4 @@ int memconsole_sysfs_init(void);*/ void memconsole_exit (void ); -#endif /* __FIRMWARE_GOOGLE_MEMCONSOLE_H */ +#endif /* __FIRMWARE_COREBOOT_MEMCONSOLE_H */ drivers/firmware/coreboot/vpd.c renamed from drivers/firmware/google/vpd.c +0
-0drivers/firmware/coreboot/vpd_decode.c renamed from drivers/firmware/google/vpd_decode.c +0
-0drivers/firmware/coreboot/vpd_decode.h renamed from drivers/firmware/google/vpd_decode.h +0
-0
Signature · 6 lines
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)
Sean Rhodes
maintainerPATCH v3 3/3 firmware: coreboot: Add CFR firmware attributes driver
In reply to Sean Rhodescoreboot 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 on x86. If firmware reports a failure, restore the old EFI variable value. Settings without a runtime apply hook, or non-x86 builds, keep the EFI variable update and set pending_reboot.
Tested on a Star Labs Byte with firmware 26.07 and the driver built as a module against Linux 6.17: runtime APM_CNT apply was verified with power_led, and reboot-needed behavior was verified with debug_level.
--- MAINTAINERS | 6 + drivers/firmware/coreboot/Kconfig | 13 + drivers/firmware/coreboot/Makefile | 1 + drivers/firmware/coreboot/coreboot-cfr.c | 1068 ++++++++++++++++++++++ 4 files changed, 1088 insertions(+) create mode 100644 drivers/firmware/coreboot/coreboot-cfr.c
MAINTAINERS +6 -0
@@ -6665,6 +6665,12 @@ F: tools/testing/selftests/cgroup/test_hugetlb_memcg.c F: tools/testing/selftests/cgroup/test_kmem.c F: tools/testing/selftests/cgroup/test_memcontrol.c +COREBOOT CFR FIRMWARE ATTRIBUTES DRIVER +M: Sean Rhodes <[email protected]> +L: [email protected] +S: Maintained +F: drivers/firmware/coreboot/coreboot-cfr.c + CORETEMP HARDWARE MONITORING DRIVER L: [email protected] S: Orphan
drivers/firmware/coreboot/Kconfig +13 -0
@@ -44,6 +44,19 @@ config GOOGLE_COREBOOT_TABLE device tree node /firmware/coreboot. If unsure say N. +config COREBOOT_CFR + tristate "coreboot CFR firmware attributes" + depends on EFI + depends on GOOGLE_COREBOOT_TABLE + 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 GOOGLE_MEMCONSOLE tristate depends on GOOGLE_MEMCONSOLE_X86_LEGACY || GOOGLE_MEMCONSOLE_COREBOOT
drivers/firmware/coreboot/Makefile +1 -0
@@ -2,6 +2,7 @@ obj-$(CONFIG_GOOGLE_SMI) += gsmi.o obj-$(CONFIG_GOOGLE_COREBOOT_TABLE) += coreboot_table.o +obj-$(CONFIG_COREBOOT_CFR) += coreboot-cfr.o obj-$(CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT) += framebuffer-coreboot.o obj-$(CONFIG_GOOGLE_MEMCONSOLE) += memconsole.o obj-$(CONFIG_GOOGLE_MEMCONSOLE_COREBOOT) += memconsole-coreboot.o
drivers/firmware/coreboot/coreboot-cfr.c new file +1068 -0
1,068 lines not on this page · raw message
Re: [PATCH v3 3/3] firmware: coreboot: Add CFR firmware attributes driver
Quoted 1 line · Sean Rhodes
+#include <
linux/mod_devicetable.h>
Please don't add new users for this header file. Only use those <linux/device-id/*.h> that you actually need (if any).
Thanks
Uwe