19d5402088
The CBMEM area is a downward-growing memory region used by coreboot to dynamically allocate tagged data structures ("CBMEM entries") that remain resident during boot. This implements a driver which exports access to the CBMEM entries via sysfs under /sys/bus/coreboot/devices/cbmem-<id>. This implementation is quite versatile. Examples of how it could be used are given below: * Tools like util/cbmem from the coreboot tree could use this driver instead of finding CBMEM in /dev/mem directly. Alternatively, firmware developers debugging an issue may find the sysfs interface more ergonomic than the cbmem tool and choose to use it directly. * The crossystem tool, which exposes verified boot variables, can use this driver to read the vboot work buffer. * Tools which read the BIOS SPI flash (e.g., flashrom) can find the flash layout in CBMEM directly, which is significantly faster than searching the flash directly. Write access is provided to all CBMEM regions via /sys/bus/coreboot/devices/cbmem-<id>/mem, as the existing cbmem tooling updates this memory region, and envisioned use cases with crossystem can benefit from updating memory regions. Link: https://issuetracker.google.com/239604743 Cc: Stephen Boyd <swboyd@chromium.org> Cc: Tzung-Bi Shih <tzungbi@kernel.org> Reviewed-by: Guenter Roeck <groeck@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org> Tested-by: Jack Rosenthal <jrosenth@chromium.org> Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Link: https://lore.kernel.org/r/20221104161528.531248-1-jrosenth@chromium.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
93 lines
2.9 KiB
Plaintext
93 lines
2.9 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
menuconfig GOOGLE_FIRMWARE
|
|
bool "Google Firmware Drivers"
|
|
default n
|
|
help
|
|
These firmware drivers are used by Google servers,
|
|
Chromebooks and other devices using coreboot firmware.
|
|
If in doubt, say "N".
|
|
|
|
if GOOGLE_FIRMWARE
|
|
|
|
config GOOGLE_SMI
|
|
tristate "SMI interface for Google platforms"
|
|
depends on X86 && ACPI && DMI
|
|
help
|
|
Say Y here if you want to enable SMI callbacks for Google
|
|
platforms. This provides an interface for writing to and
|
|
clearing the event log. If CONFIG_EFI is also enabled this
|
|
driver provides an interface for reading and writing NVRAM
|
|
variables.
|
|
|
|
config GOOGLE_CBMEM
|
|
tristate "CBMEM entries in sysfs"
|
|
depends on GOOGLE_COREBOOT_TABLE
|
|
help
|
|
CBMEM is a downwards-growing memory region created by the
|
|
Coreboot BIOS containing tagged data structures from the
|
|
BIOS. These data structures expose things like the verified
|
|
boot firmware variables, flash layout, firmware event log,
|
|
and more.
|
|
|
|
This option enables the cbmem module, which causes the
|
|
kernel to search for Coreboot CBMEM entries, and expose the
|
|
memory for each entry in sysfs under
|
|
/sys/bus/coreboot/devices/cbmem-<id>.
|
|
|
|
config GOOGLE_COREBOOT_TABLE
|
|
tristate "Coreboot Table Access"
|
|
depends on HAS_IOMEM && (ACPI || OF)
|
|
help
|
|
This option enables the coreboot_table module, which provides other
|
|
firmware modules access to the coreboot table. The coreboot table
|
|
pointer is accessed through the ACPI "GOOGCB00" object or the
|
|
device tree node /firmware/coreboot.
|
|
If unsure say N.
|
|
|
|
config GOOGLE_COREBOOT_TABLE_ACPI
|
|
tristate
|
|
select GOOGLE_COREBOOT_TABLE
|
|
|
|
config GOOGLE_COREBOOT_TABLE_OF
|
|
tristate
|
|
select GOOGLE_COREBOOT_TABLE
|
|
|
|
config GOOGLE_MEMCONSOLE
|
|
tristate
|
|
depends on GOOGLE_MEMCONSOLE_X86_LEGACY || GOOGLE_MEMCONSOLE_COREBOOT
|
|
|
|
config GOOGLE_MEMCONSOLE_X86_LEGACY
|
|
tristate "Firmware Memory Console - X86 Legacy support"
|
|
depends on X86 && ACPI && DMI
|
|
select GOOGLE_MEMCONSOLE
|
|
help
|
|
This option enables the kernel to search for a firmware log in
|
|
the EBDA on Google servers. If found, this log is exported to
|
|
userland in the file /sys/firmware/log.
|
|
|
|
config GOOGLE_FRAMEBUFFER_COREBOOT
|
|
tristate "Coreboot Framebuffer"
|
|
depends on FB_SIMPLE
|
|
depends on GOOGLE_COREBOOT_TABLE
|
|
help
|
|
This option enables the kernel to search for a framebuffer in
|
|
the coreboot table. If found, it is registered with simplefb.
|
|
|
|
config GOOGLE_MEMCONSOLE_COREBOOT
|
|
tristate "Firmware Memory Console"
|
|
depends on GOOGLE_COREBOOT_TABLE
|
|
select GOOGLE_MEMCONSOLE
|
|
help
|
|
This option enables the kernel to search for a firmware log in
|
|
the coreboot table. If found, this log is exported to userland
|
|
in the file /sys/firmware/log.
|
|
|
|
config GOOGLE_VPD
|
|
tristate "Vital Product Data"
|
|
depends on GOOGLE_COREBOOT_TABLE
|
|
help
|
|
This option enables the kernel to expose the content of Google VPD
|
|
under /sys/firmware/vpd.
|
|
|
|
endif # GOOGLE_FIRMWARE
|