mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 21:24:00 +08:00
2dcc51b3fe
When an EFI variable is reading from: /sys/firmware/efi/efivars (for example using "hexdump"), the first 4 bytes of the output are not the real EFI variable data, but the variable attributes (in little-endian format). Signed-off-by: Flavio Suligoi <f.suligoi@asem.it> Link: https://lore.kernel.org/r/20200519084128.12756-1-f.suligoi@asem.it Signed-off-by: Jonathan Corbet <corbet@lwn.net>
44 lines
1.6 KiB
ReStructuredText
44 lines
1.6 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
=======================================
|
|
efivarfs - a (U)EFI variable filesystem
|
|
=======================================
|
|
|
|
The efivarfs filesystem was created to address the shortcomings of
|
|
using entries in sysfs to maintain EFI variables. The old sysfs EFI
|
|
variables code only supported variables of up to 1024 bytes. This
|
|
limitation existed in version 0.99 of the EFI specification, but was
|
|
removed before any full releases. Since variables can now be larger
|
|
than a single page, sysfs isn't the best interface for this.
|
|
|
|
Variables can be created, deleted and modified with the efivarfs
|
|
filesystem.
|
|
|
|
efivarfs is typically mounted like this::
|
|
|
|
mount -t efivarfs none /sys/firmware/efi/efivars
|
|
|
|
Due to the presence of numerous firmware bugs where removing non-standard
|
|
UEFI variables causes the system firmware to fail to POST, efivarfs
|
|
files that are not well-known standardized variables are created
|
|
as immutable files. This doesn't prevent removal - "chattr -i" will work -
|
|
but it does prevent this kind of failure from being accomplished
|
|
accidentally.
|
|
|
|
.. warning ::
|
|
When a content of an UEFI variable in /sys/firmware/efi/efivars is
|
|
displayed, for example using "hexdump", pay attention that the first
|
|
4 bytes of the output represent the UEFI variable attributes,
|
|
in little-endian format.
|
|
|
|
Practically the output of each efivar is composed of:
|
|
|
|
+-----------------------------------+
|
|
|4_bytes_of_attributes + efivar_data|
|
|
+-----------------------------------+
|
|
|
|
*See also:*
|
|
|
|
- Documentation/admin-guide/acpi/ssdt-overlays.rst
|
|
- Documentation/ABI/stable/sysfs-firmware-efi-vars
|