| Mike Waychison | 54fad53 | 2011-03-11 17:43:32 -0800 | [diff] [blame] | 1 | What:		/sys/firmware/efi/vars | 
 | 2 | Date:		April 2004 | 
 | 3 | Contact:	Matt Domsch <Matt_Domsch@dell.com> | 
 | 4 | Description: | 
 | 5 | 		This directory exposes interfaces for interactive with | 
 | 6 | 		EFI variables.  For more information on EFI variables, | 
 | 7 | 		see 'Variable Services' in the UEFI specification | 
 | 8 | 		(section 7.2 in specification version 2.3 Errata D). | 
 | 9 |  | 
 | 10 | 		In summary, EFI variables are named, and are classified | 
 | 11 | 		into separate namespaces through the use of a vendor | 
 | 12 | 		GUID.  They also have an arbitrary binary value | 
 | 13 | 		associated with them. | 
 | 14 |  | 
 | 15 | 		The efivars module enumerates these variables and | 
 | 16 | 		creates a separate directory for each one found.  Each | 
 | 17 | 		directory has a name of the form "<key>-<vendor guid>" | 
 | 18 | 		and contains the following files: | 
 | 19 |  | 
 | 20 | 		attributes:	A read-only text file enumerating the | 
 | 21 | 				EFI variable flags.  Potential values | 
 | 22 | 				include: | 
 | 23 |  | 
 | 24 | 				EFI_VARIABLE_NON_VOLATILE | 
 | 25 | 				EFI_VARIABLE_BOOTSERVICE_ACCESS | 
 | 26 | 				EFI_VARIABLE_RUNTIME_ACCESS | 
 | 27 | 				EFI_VARIABLE_HARDWARE_ERROR_RECORD | 
 | 28 | 				EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS | 
 | 29 |  | 
 | 30 | 				See the EFI documentation for an | 
 | 31 | 				explanation of each of these variables. | 
 | 32 |  | 
 | 33 | 		data:		A read-only binary file that can be read | 
 | 34 | 				to attain the value of the EFI variable | 
 | 35 |  | 
 | 36 | 		guid:		The vendor GUID of the variable.  This | 
 | 37 | 				should always match the GUID in the | 
 | 38 | 				variable's name. | 
 | 39 |  | 
 | 40 | 		raw_var:	A binary file that can be read to obtain | 
 | 41 | 				a structure that contains everything | 
 | 42 | 				there is to know about the variable. | 
 | 43 | 				For structure definition see "struct | 
 | 44 | 				efi_variable" in the kernel sources. | 
 | 45 |  | 
 | 46 | 				This file can also be written to in | 
 | 47 | 				order to update the value of a variable. | 
 | 48 | 				For this to work however, all fields of | 
 | 49 | 				the "struct efi_variable" passed must | 
 | 50 | 				match byte for byte with the structure | 
 | 51 | 				read out of the file, save for the value | 
 | 52 | 				portion. | 
 | 53 |  | 
 | 54 | 				**Note** the efi_variable structure | 
 | 55 | 				read/written with this file contains a | 
 | 56 | 				'long' type that may change widths | 
 | 57 | 				depending on your underlying | 
 | 58 | 				architecture. | 
 | 59 |  | 
 | 60 | 		size:		As ASCII representation of the size of | 
 | 61 | 				the variable's value. | 
 | 62 |  | 
 | 63 |  | 
 | 64 | 		In addition, two other magic binary files are provided | 
 | 65 | 		in the top-level directory and are used for adding and | 
 | 66 | 		removing variables: | 
 | 67 |  | 
 | 68 | 		new_var:	Takes a "struct efi_variable" and | 
 | 69 | 				instructs the EFI firmware to create a | 
 | 70 | 				new variable. | 
 | 71 |  | 
 | 72 | 		del_var:	Takes a "struct efi_variable" and | 
 | 73 | 				instructs the EFI firmware to remove any | 
 | 74 | 				variable that has a matching vendor GUID | 
 | 75 | 				and variable key name. |