coreboot CFR firmware attributes
Subsystems (14)
Sean Rhodes
maintainerv13 cover coreboot CFR firmware attributes
Resending v13 because the previous send path corrupted several inline patch bodies. No patch content changes.
Move the firmware attributes class helper out of platform/x86, rename the coreboot-table firmware driver directory from google to coreboot, and add a coreboot CFR firmware attributes driver.
Changes in v13:
- Rebase on current upstream master.
- Restore the CONFIG_GOOGLE_* to CONFIG_COREBOOT_* renames for generic coreboot firmware symbols, with the old names kept as transitional symbols. Julius clarified that the symbol names are part of the directory rename cleanup and should describe coreboot rather than Google. Update the matching Kconfig dependencies and Makefile gates to use the new symbols.
- Split the arm64 defconfig symbol update into a separate final patch, as requested by Krzysztof and Julius, instead of folding it into the rename.
- Move the COREBOOT FIRMWARE DRIVERS MAINTAINERS entry to its alphabetical position.
- Make the CFR APM_CNT runtime-apply dependency explicit with HAS_IOPORT instead of using an x86-only runtime branch.
Changes in v12:
- Temporarily kept the existing CONFIG_GOOGLE_* symbols and dropped the arm64 defconfig update after review feedback against the user-visible config rename. v13 supersedes this with transitional symbols and a split defconfig patch.
- Free invalid enum labels before returning an error from CFR enum parsing.
Changes in v11:
- Keep the scoped cleanup in the CFR driver, but use explicit goto cleanup for the nested sysfs group registration path.
Changes in v10:
- Rename generic firmware Kconfig symbols from CONFIG_GOOGLE_* to CONFIG_COREBOOT_* and keep the old names as transitional symbols, as suggested by Julius.
- Update arm64 defconfig and DRM coreboot framebuffer dependencies for the new symbols. In v13, the arm64 defconfig update is split into its own patch.
- Address the nested cleanup-path review on CFR attribute registration.
Changes in v9:
- Add the missing kstrtox.h include used by kstrtou32().
- Use a single kobject rollback path when setting registration fails.
- Split a few helper locals for readability, including the pending reboot device lookup and enum-value population.
- Avoid an intermediate void pointer cast while parsing numeric CFR options.
- Check the possible-values buffer length before computing each label length.
Changes in v8:
- Add a preparatory include-order cleanup before moving the firmware attributes class helper.
- Add direct includes for __packed and container_of(), use scoped cleanup for EFI names and the driver mutex, and document the efivar lock requirement on private helpers.
- Replace the duplicated CFR record walkers with one checked iterator that distinguishes malformed input from the end of a record list.
- Validate enum entries before accessing them and propagate malformed child records instead of treating them as absent.
- Restore the EFI variable after a failed runtime apply without retrying the failed firmware operation, and only emit a change event when the new EFI value remains stored.
- Document the possible-values size limit and why CFR entries without a usable runtime EFI variable are skipped.
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.
Sean Rhodes (5):
platform/x86: Sort firmware attributes class includes
firmware: Move firmware attributes class helper
firmware: Rename google firmware directory to coreboot
firmware: coreboot: Add CFR firmware attributes driver
arm64: defconfig: Update coreboot firmware symbols
MAINTAINERS | 34 +-
arch/arm64/configs/defconfig | 6 +-
drivers/firmware/Kconfig | 5 +-
drivers/firmware/Makefile | 3 +-
drivers/firmware/{google => coreboot}/Kconfig | 89 +-
drivers/firmware/coreboot/Makefile | 15 +
drivers/firmware/{google => coreboot}/cbmem.c | 0
drivers/firmware/coreboot/coreboot-cfr.c | 1204 +++++++++++++++++
.../{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/firmware/google/Makefile | 14 -
drivers/gpu/drm/sysfb/Kconfig | 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 | 9 +-
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 9 +-
drivers/platform/x86/lenovo/think-lmi.c | 5 +-
drivers/platform/x86/lenovo/wmi-other.c | 2 +-
drivers/platform/x86/samsung-galaxybook.c | 3 +-
.../linux/firmware_attributes.h | 6 +-
31 files changed, 1348 insertions(+), 73 deletions(-)
rename drivers/firmware/{google => coreboot}/Kconfig (57%)
create mode 100644 drivers/firmware/coreboot/Makefile
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%)
delete mode 100644 drivers/firmware/google/Makefile
rename drivers/platform/x86/firmware_attributes_class.h => include/linux/firmware_attributes.h (60%)Sean Rhodes
maintainerPATCH RESEND v13 1/5 platform/x86: Sort firmware attributes class includes
Move firmware_attributes_class.h into the main include block and sort the affected includes. This lets the header move replace each include in place.
--- drivers/platform/x86/asus-armoury.c | 2 +- drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 9 +++++---- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 9 +++++---- drivers/platform/x86/lenovo/think-lmi.c | 5 +++-- drivers/platform/x86/lenovo/wmi-other.c | 2 +- drivers/platform/x86/samsung-galaxybook.c | 3 ++- 6 files changed, 17 insertions(+), 13 deletions(-)
drivers/platform/x86/asus-armoury.c +1 -1
@@ -20,6 +20,7 @@#include <linux/dmi.h> #include <linux/err.h> #include <linux/errno.h> +#include "firmware_attributes_class.h" #include <linux/fs.h> #include <linux/kernel.h> #include <linux/kmod.h>
@@ -34,7 +35,6 @@#include <linux/sysfs.h> #include "asus-armoury.h" -#include "firmware_attributes_class.h" #define ASUS_NB_WMI_EVENT_GUID "0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C"
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +5 -4
@@ -8,18 +8,19 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/align.h> -#include <linux/fs.h> #include <linux/dmi.h> -#include <linux/module.h> +#include "../../firmware_attributes_class.h" +#include <linux/fs.h> #include <linux/kernel.h> +#include <linux/module.h> +#include <linux/nls.h> #include <linux/string.h> #include <linux/sysfs.h> #include <linux/wmi.h> +#include "dell-wmi-sysman.h" -#include "../../firmware_attributes_class.h" #define MAX_TYPES 4 -#include <linux/nls.h> struct wmi_sysman_priv wmi_priv = { .mutex =__MUTEX_INITIALIZER (wmi_priv.mutex),
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +5 -4
@@ -7,16 +7,17 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/errno.h> +#include "../../firmware_attributes_class.h" #include <linux/fs.h> -#include <linux/module.h> #include <linux/kernel.h> +#include <linux/module.h> +#include <linux/nls.h> #include <linux/printk.h> #include <linux/string.h> #include <linux/wmi.h> +#include "bioscfg.h" -#include "../../firmware_attributes_class.h" -#include <linux/nls.h> -#include <linux/errno.h> MODULE_AUTHOR ("Jorge Lopez <[email protected]>" );MODULE_DESCRIPTION ("HP BIOS Configuration Driver" );
drivers/platform/x86/lenovo/think-lmi.c +3 -2
@@ -13,14 +13,15 @@#include <linux/acpi.h> #include <linux/array_size.h> +#include <linux/dmi.h> #include <linux/errno.h> +#include "../firmware_attributes_class.h" #include <linux/fs.h> #include <linux/mutex.h> #include <linux/string_helpers.h> #include <linux/types.h> -#include <linux/dmi.h> #include <linux/wmi.h> -#include "../firmware_attributes_class.h" +#include "think-lmi.h" static bool debug_support;
drivers/platform/x86/lenovo/wmi-other.c +1 -1
@@ -33,6 +33,7 @@#include <linux/container_of.h> #include <linux/device.h> #include <linux/export.h> +#include "../firmware_attributes_class.h" #include <linux/gfp_types.h> #include <linux/hwmon.h> #include <linux/idr.h>
@@ -50,7 +51,6 @@#include "wmi-capdata.h" #include "wmi-events.h" #include "wmi-helpers.h" -#include "../firmware_attributes_class.h" #define LENOVO_OTHER_MODE_GUID "DC2A8805-3A8C-41BA-A6F7-092E0089CD3B"
drivers/platform/x86/samsung-galaxybook.c +2 -1
@@ -14,6 +14,7 @@#include <linux/acpi.h> #include <linux/bits.h> #include <linux/err.h> +#include "firmware_attributes_class.h" #include <linux/i8042.h> #include <linux/init.h> #include <linux/input.h>
@@ -27,8 +28,8 @@#include <linux/sysfs.h> #include <linux/uuid.h> #include <linux/workqueue.h> +#include <acpi/battery.h> -#include "firmware_attributes_class.h" #define DRIVER_NAME "samsung-galaxybook"
[email protected]
AI reviewRe: [PATCH v13 RESEND 1/5] platform/x86: Sort firmware attributes class includes
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
Pre-existing issues:
- [High] Out-of-bounds array read in get_instance_id macro due to an off-by-one error.
- [High] Out-of-bounds heap read and write in attribute_property_store macro via memchr. --
--- Patch [1]: [PATCH v13 RESEND 1/5] platform/x86: Sort firmware attributes class includes --- commit dff06344a1a1c35eb28b9e59670eeac00408066c
Author: Sean Rhodes <[email protected]>
platform/x86: Sort firmware attributes class includes
Move firmware_attributes_class.h into the main include block and sort the affected includes. This lets the header move replace each include in place.
Quoted 11 lines
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +0
-2@@ -8,18 +8,19 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/align.h> -#include <linux/fs.h> #include <linux/dmi.h> -#include <linux/module.h>
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c line 21
Quoted 10 lines
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +5
-0+#include "../../firmware_attributes_class.h" +#include <linux/fs.h> #include <linux/kernel.h> +#include <linux/module.h> +#include <linux/nls.h> #include <linux/string.h> #include <linux/sysfs.h> #include <linux/wmi.h> +#include "dell-wmi-sysman.h"
[Severity: High]
This is a pre-existing issue, but does the get_instance_id() macro in dell-wmi-sysman.h have an off-by-one error in its loop condition?
drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h:get_instance_id() {
...
for (i = 0; i <= wmi_priv.type##_instances_count; i++) {
if (!(strcmp(kobj->name, wmi_priv.type##_data[i].attribute_name)))
...
}If no match is found among the valid entries, the loop will evaluate i = instances_count and access wmi_priv.type##_data[i].attribute_name, which is memory beyond the allocated array. The subsequent strcmp() function will then dereference this out-of-bounds heap memory.
[Severity: High]
This is a pre-existing issue, but does the attribute_property_store() macro in dell-wmi-sysman.h have an out-of-bounds memory access?
drivers/platform/x86/dell/dell-wmi-sysman/dell-wmi-sysman.h:attribute_property_store() {
...
buf_cp = kstrdup(buf, GFP_KERNEL);
if (!buf_cp)
return -ENOMEM;
p = memchr(buf_cp, '\n', count);
if (p != NULL)
*p = '\0';
...
}kstrdup() determines the allocation size using strlen(buf). If a user provides an input buffer with an embedded null byte before the newline character, kstrdup() will allocate a buffer smaller than the user-provided count.
Subsequently, memchr() searches for a newline character up to count bytes, reading beyond the dynamically allocated memory. Furthermore, if a newline character happens to be found in the out-of-bounds memory block, the code executes *p = '\0', causing an out-of-bounds heap write.
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
Tzung-Bi Shih
maintainerRe: [PATCH v13 RESEND 1/5] platform/x86: Sort firmware attributes class includes
In reply to Sean RhodesQuoted 2 lines · Sean Rhodes
Move
firmware_attributes_class.hinto the main include block and sort the affected includes. This lets the header move replace each include in place.
...
drivers/platform/x86/asus-armoury.c line 26
Quoted 12 lines
drivers/platform/x86/asus-armoury.c +1
-0@@ -20,6 +20,7 @@#include <linux/dmi.h> #include <linux/err.h> #include <linux/errno.h> +#include "firmware_attributes_class.h" #include <linux/fs.h> #include <linux/kernel.h> #include <linux/kmod.h>
I don't really follow why it is beneficial to make the firmware_attributes_class.h replacement in-place. Moving relative includes like "firmware_attributes_class.h" into the <linux/...> block creates an awkward intermediate state. How about drop patch 1 and simply update the includes directly in patch 2?
Sean Rhodes
maintainerPATCH RESEND v13 2/5 firmware: Move firmware attributes class helper
In reply to Sean RhodesMove 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
@@ -10106,6 +10106,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
@@ -20,7 +20,7 @@#include <linux/dmi.h> #include <linux/err.h> #include <linux/errno.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/fs.h> #include <linux/kernel.h> #include <linux/kmod.h>
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c +1 -1
@@ -9,7 +9,7 @@#include <linux/align.h> #include <linux/dmi.h> -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/fs.h> #include <linux/kernel.h> #include <linux/module.h>
drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +1 -1
@@ -8,7 +8,7 @@#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt#include <linux/errno.h> -#include "../../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/fs.h> #include <linux/kernel.h> #include <linux/module.h>
drivers/platform/x86/lenovo/think-lmi.c +1 -1
@@ -15,7 +15,7 @@#include <linux/array_size.h> #include <linux/dmi.h> #include <linux/errno.h> -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/fs.h> #include <linux/mutex.h> #include <linux/string_helpers.h>
drivers/platform/x86/lenovo/wmi-other.c +1 -1
@@ -33,7 +33,7 @@#include <linux/container_of.h> #include <linux/device.h> #include <linux/export.h> -#include "../firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/gfp_types.h> #include <linux/hwmon.h> #include <linux/idr.h>
drivers/platform/x86/samsung-galaxybook.c +1 -1
@@ -14,7 +14,7 @@#include <linux/acpi.h> #include <linux/bits.h> #include <linux/err.h> -#include "firmware_attributes_class.h" +#include <linux/firmware_attributes.h> #include <linux/i8042.h> #include <linux/init.h> #include <linux/input.h>
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 */
Sean Rhodes
maintainerPATCH RESEND v13 3/5 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.
Rename the generic firmware Kconfig symbols to CONFIG_COREBOOT_* at the same time so new configurations describe the firmware interface rather than one vendor. Keep the old CONFIG_GOOGLE_* names as transitional symbols so existing configurations keep selecting the same drivers during the rename.
Leave defconfig updates to a separate patch so the configuration churn is easy to review independently.
---
MAINTAINERS | 20 ++---
drivers/firmware/Kconfig | 2 +-
drivers/firmware/Makefile | 2 +-
drivers/firmware/{google => coreboot}/Kconfig | 74 ++++++++++++++-----
.../firmware/{google => coreboot}/Makefile | 10 +--
drivers/firmware/{google => coreboot}/cbmem.c | 0
.../{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
drivers/gpu/drm/sysfb/Kconfig | 2 +-
18 files changed, 77 insertions(+), 39 deletions(-)
rename drivers/firmware/{google => coreboot}/Kconfig (64%)
rename drivers/firmware/{google => coreboot}/Makefile (51%)
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 +10 -10
@@ -6657,6 +6657,16 @@ 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 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/coreboot/ +F: include/linux/coreboot.h + CORETEMP HARDWARE MONITORING DRIVER L: [email protected] S: Orphan
@@ -11065,16 +11075,6 @@ S: Maintained F: Documentation/networking/device_drivers/ethernet/google/gve.rst F: drivers/net/ethernet/google -GOOGLE 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: include/linux/coreboot.h - GOOGLE TENSOR SoC SUPPORT M: Peter Griffin <[email protected]> R: André Draszik <[email protected]>
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_COREBOOT_FIRMWARE) += coreboot/ obj-y += efi/ obj-y += imx/ obj-y += psci/
drivers/firmware/coreboot/Kconfig renamed from drivers/firmware/google/Kconfig +56 -18
129 lines not on this page · raw message
drivers/firmware/coreboot/Makefile renamed from drivers/firmware/google/Makefile +5 -5
@@ -1,14 +1,14 @@ # SPDX-License-Identifier: GPL-2.0 obj-$(CONFIG_GOOGLE_SMI) += gsmi.o -obj-$(CONFIG_GOOGLE_COREBOOT_TABLE) += coreboot_table.o -obj-$(CONFIG_GOOGLE_FRAMEBUFFER_COREBOOT) += framebuffer-coreboot.o -obj-$(CONFIG_GOOGLE_MEMCONSOLE) += memconsole.o -obj-$(CONFIG_GOOGLE_MEMCONSOLE_COREBOOT) += memconsole-coreboot.o +obj-$(CONFIG_COREBOOT_TABLE) += coreboot_table.o +obj-$(CONFIG_COREBOOT_FRAMEBUFFER) += framebuffer-coreboot.o +obj-$(CONFIG_COREBOOT_MEMCONSOLE_COMMON) += memconsole.o +obj-$(CONFIG_COREBOOT_MEMCONSOLE) += memconsole-coreboot.o obj-$(CONFIG_GOOGLE_MEMCONSOLE_X86_LEGACY) += memconsole-x86-legacy.o # Must come after coreboot_table.o, as this driver depends on that bus type. -obj-$(CONFIG_GOOGLE_CBMEM) += cbmem.o +obj-$(CONFIG_COREBOOT_CBMEM) += cbmem.o vpd-sysfs-y := vpd.o vpd_decode.o obj-$(CONFIG_GOOGLE_VPD) += vpd-sysfs.o
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
drivers/gpu/drm/sysfb/Kconfig +1 -1
@@ -10,7 +10,7 @@ config DRM_SYSFB_HELPER config DRM_COREBOOTDRM tristate "Coreboot framebuffer driver" depends on DRM && MMU - depends on GOOGLE_FRAMEBUFFER_COREBOOT + depends on COREBOOT_FRAMEBUFFER select APERTURE_HELPERS select DRM_CLIENT_SELECTION select DRM_GEM_SHMEM_HELPER
Tzung-Bi Shih
maintainerRe: [PATCH v13 RESEND 3/5] firmware: Rename google firmware directory to coreboot
Quoted 3 lines · Sean Rhodes
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.
...
Quoted 1 line
drivers/gpu/drm/sysfb/Kconfig | 2 +-
The patch has no build-time dependency on other patches in the series. I'm happy to apply it once v7.3-rc1 is out to move this forward.
For the drivers/gpu/drm/sysfb/Kconfig change, could the DRM maintainers please provide an Acked-by so this can go through the same tree? Otherwise, it needs to be separated before the patch can be applied.
Sean Rhodes
maintainerPATCH RESEND v13 4/5 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 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.
--- MAINTAINERS | 6 + drivers/firmware/coreboot/Kconfig | 15 + drivers/firmware/coreboot/Makefile | 1 + drivers/firmware/coreboot/coreboot-cfr.c | 1204 ++++++++++++++++++++++ 4 files changed, 1226 insertions(+) create mode 100644 drivers/firmware/coreboot/coreboot-cfr.c
MAINTAINERS +6 -0
@@ -6657,6 +6657,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 + COREBOOT FIRMWARE DRIVERS M: Tzung-Bi Shih <[email protected]> R: Brian Norris <[email protected]>
drivers/firmware/coreboot/Kconfig +15 -0
@@ -49,6 +49,21 @@ config COREBOOT_TABLE device tree node /firmware/coreboot. 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 tristate depends on GOOGLE_MEMCONSOLE_X86_LEGACY || COREBOOT_MEMCONSOLE
drivers/firmware/coreboot/Makefile +1 -0
@@ -2,6 +2,7 @@ obj-$(CONFIG_GOOGLE_SMI) += gsmi.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_MEMCONSOLE_COMMON) += memconsole.o obj-$(CONFIG_COREBOOT_MEMCONSOLE) += memconsole-coreboot.o
drivers/firmware/coreboot/coreboot-cfr.c new file +1204 -0
1,204 lines not on this page · raw message
Sean Rhodes
maintainerPATCH RESEND v13 5/5 arm64: defconfig: Update coreboot firmware symbols
In reply to Sean RhodesThe generic coreboot firmware Kconfig symbols were renamed from CONFIG_GOOGLE_* to CONFIG_COREBOOT_* while keeping the old names as transitional compatibility symbols.
Select the new names directly in the arm64 defconfig so the checked-in defconfig follows the visible Kconfig symbols. Keep this separate from the rename patch so the configuration churn is easy to review independently.
--- arch/arm64/configs/defconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
arch/arm64/configs/defconfig +3 -3
@@ -267,9 +267,9 @@ CONFIG_RASPBERRYPI_FIRMWARE=y CONFIG_INTEL_STRATIX10_SERVICE=y CONFIG_INTEL_STRATIX10_RSU=m CONFIG_MTK_ADSP_IPC=m -CONFIG_GOOGLE_FIRMWARE=y -CONFIG_GOOGLE_CBMEM=m -CONFIG_GOOGLE_COREBOOT_TABLE=m +CONFIG_COREBOOT_FIRMWARE=y +CONFIG_COREBOOT_CBMEM=m +CONFIG_COREBOOT_TABLE=m CONFIG_EFI_CAPSULE_LOADER=y CONFIG_IMX_SCU=y CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE=y