Mauro Carvalho Chehab | 06dedb4 | 2020-02-17 17:12:00 +0100 | [diff] [blame] | 1 | .. SPDX-License-Identifier: GPL-2.0 |
Matt Fleming | e913ca7 | 2012-10-04 09:57:31 +0100 | [diff] [blame] | 2 | |
Mauro Carvalho Chehab | 06dedb4 | 2020-02-17 17:12:00 +0100 | [diff] [blame] | 3 | ======================================= |
Matt Fleming | e913ca7 | 2012-10-04 09:57:31 +0100 | [diff] [blame] | 4 | efivarfs - a (U)EFI variable filesystem |
Mauro Carvalho Chehab | 06dedb4 | 2020-02-17 17:12:00 +0100 | [diff] [blame] | 5 | ======================================= |
Matt Fleming | e913ca7 | 2012-10-04 09:57:31 +0100 | [diff] [blame] | 6 | |
| 7 | The efivarfs filesystem was created to address the shortcomings of |
| 8 | using entries in sysfs to maintain EFI variables. The old sysfs EFI |
| 9 | variables code only supported variables of up to 1024 bytes. This |
| 10 | limitation existed in version 0.99 of the EFI specification, but was |
| 11 | removed before any full releases. Since variables can now be larger |
| 12 | than a single page, sysfs isn't the best interface for this. |
| 13 | |
| 14 | Variables can be created, deleted and modified with the efivarfs |
| 15 | filesystem. |
| 16 | |
Mauro Carvalho Chehab | 06dedb4 | 2020-02-17 17:12:00 +0100 | [diff] [blame] | 17 | efivarfs is typically mounted like this:: |
Matt Fleming | e913ca7 | 2012-10-04 09:57:31 +0100 | [diff] [blame] | 18 | |
| 19 | mount -t efivarfs none /sys/firmware/efi/efivars |
Peter Jones | ed8b0de | 2016-02-08 14:48:15 -0500 | [diff] [blame] | 20 | |
| 21 | Due to the presence of numerous firmware bugs where removing non-standard |
| 22 | UEFI variables causes the system firmware to fail to POST, efivarfs |
| 23 | files that are not well-known standardized variables are created |
| 24 | as immutable files. This doesn't prevent removal - "chattr -i" will work - |
| 25 | but it does prevent this kind of failure from being accomplished |
| 26 | accidentally. |
Flavio Suligoi | 2dcc51b | 2020-05-19 10:41:27 +0200 | [diff] [blame] | 27 | |
| 28 | .. warning :: |
| 29 | When a content of an UEFI variable in /sys/firmware/efi/efivars is |
| 30 | displayed, for example using "hexdump", pay attention that the first |
| 31 | 4 bytes of the output represent the UEFI variable attributes, |
| 32 | in little-endian format. |
| 33 | |
| 34 | Practically the output of each efivar is composed of: |
| 35 | |
| 36 | +-----------------------------------+ |
| 37 | |4_bytes_of_attributes + efivar_data| |
| 38 | +-----------------------------------+ |
| 39 | |
| 40 | *See also:* |
| 41 | |
| 42 | - Documentation/admin-guide/acpi/ssdt-overlays.rst |
| 43 | - Documentation/ABI/stable/sysfs-firmware-efi-vars |