| What:		/sys/class/firmware-attributes/*/attributes/*/ | 
 | Date:		February 2021 | 
 | KernelVersion:	5.11 | 
 | Contact:	Divya Bharathi <Divya.Bharathi@Dell.com>, | 
 | 		Prasanth KSR <prasanth.ksr@dell.com> | 
 | 		Dell.Client.Kernel@dell.com | 
 | Description: | 
 | 		A sysfs interface for systems management software to enable | 
 | 		configuration capability on supported systems.  This directory | 
 | 		exposes interfaces for interacting with configuration options. | 
 |  | 
 | 		Unless otherwise specified in an attribute description all attributes are optional | 
 | 		and will accept UTF-8 input. | 
 |  | 
 | 		type: | 
 | 		    A file that can be read to obtain the type of attribute. | 
 | 		    This attribute is mandatory. | 
 |  | 
 | 		The following are known types: | 
 |  | 
 | 			- enumeration: a set of pre-defined valid values | 
 | 			- integer: a range of numerical values | 
 | 			- string | 
 |  | 
 | 		HP specific types | 
 | 		----------------- | 
 | 			- ordered-list - a set of ordered list valid values | 
 |  | 
 |  | 
 | 		All attribute types support the following values: | 
 |  | 
 | 		current_value: | 
 | 				A file that can be read to obtain the current | 
 | 				value of the <attr>. | 
 |  | 
 | 				This file can also be written to in order to update the value of a | 
 | 				<attr> | 
 |  | 
 | 				This attribute is mandatory. | 
 |  | 
 | 		default_value: | 
 | 				A file that can be read to obtain the default | 
 | 				value of the <attr> | 
 |  | 
 | 		display_name: | 
 | 				A file that can be read to obtain a user friendly | 
 | 				description of the at <attr> | 
 |  | 
 | 		display_name_language_code: | 
 | 						A file that can be read to obtain | 
 | 						the IETF language tag corresponding to the | 
 | 						"display_name" of the <attr> | 
 |  | 
 | 		"enumeration"-type specific properties: | 
 |  | 
 | 		possible_values: | 
 | 					A file that can be read to obtain the possible | 
 | 					values of the <attr>. Values are separated using | 
 | 					semi-colon (``;``). | 
 |  | 
 | 		"integer"-type specific properties: | 
 |  | 
 | 		min_value: | 
 | 				A file that can be read to obtain the lower | 
 | 				bound value of the <attr> | 
 |  | 
 | 		max_value: | 
 | 				A file that can be read to obtain the upper | 
 | 				bound value of the <attr> | 
 |  | 
 | 		scalar_increment: | 
 | 					A file that can be read to obtain the scalar value used for | 
 | 					increments of current_value this attribute accepts. | 
 |  | 
 | 		"string"-type specific properties: | 
 |  | 
 | 		max_length: | 
 | 				A file that can be read to obtain the maximum | 
 | 				length value of the <attr> | 
 |  | 
 | 		min_length: | 
 | 				A file that can be read to obtain the minimum | 
 | 				length value of the <attr> | 
 |  | 
 | 		Dell specific class extensions | 
 | 		------------------------------ | 
 |  | 
 | 		On Dell systems the following additional attributes are available: | 
 |  | 
 | 		dell_modifier: | 
 | 				A file that can be read to obtain attribute-level | 
 | 				dependency rule. It says an attribute X will become read-only or | 
 | 				suppressed, if/if-not attribute Y is configured. | 
 |  | 
 | 				modifier rules can be in following format:: | 
 |  | 
 | 				    [ReadOnlyIf:<attribute>=<value>] | 
 | 				    [ReadOnlyIfNot:<attribute>=<value>] | 
 | 				    [SuppressIf:<attribute>=<value>] | 
 | 				    [SuppressIfNot:<attribute>=<value>] | 
 |  | 
 | 				For example:: | 
 |  | 
 | 				    AutoOnFri/dell_modifier has value, | 
 | 					    [SuppressIfNot:AutoOn=SelectDays] | 
 |  | 
 | 				This means AutoOnFri will be suppressed in BIOS setup if AutoOn | 
 | 				attribute is not "SelectDays" and its value will not be effective | 
 | 				through sysfs until this rule is met. | 
 |  | 
 | 		Enumeration attributes also support the following: | 
 |  | 
 | 		dell_value_modifier: | 
 | 					A file that can be read to obtain value-level dependency. | 
 | 					This file is similar to dell_modifier but here,	an | 
 | 					attribute's current value will be forcefully changed based | 
 | 					dependent attributes value. | 
 |  | 
 | 					dell_value_modifier rules can be in following format:: | 
 |  | 
 | 					    <value>[ForceIf:<attribute>=<value>] | 
 | 					    <value>[ForceIfNot:<attribute>=<value>] | 
 |  | 
 | 					For example:: | 
 |  | 
 | 					    LegacyOrom/dell_value_modifier has value: | 
 | 						    Disabled[ForceIf:SecureBoot=Enabled] | 
 |  | 
 | 					This means LegacyOrom's current value will be forced to | 
 | 					"Disabled" in BIOS setup if SecureBoot is Enabled and its | 
 | 					value will not be effective through sysfs until this rule is | 
 | 					met. | 
 |  | 
 | 		HP specific class extensions | 
 | 		------------------------------ | 
 |  | 
 | 		On HP systems the following additional attributes are available: | 
 |  | 
 | 		"ordered-list"-type specific properties: | 
 |  | 
 | 		elements: | 
 | 					A file that can be read to obtain the possible | 
 | 					list of values of the <attr>. Values are separated using | 
 | 					semi-colon (``;``) and listed according to their priority. | 
 | 					An element listed first has the highest priority. Writing | 
 | 					the list in a different order to current_value alters | 
 | 					the priority order for the particular attribute. | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/authentication/ | 
 | Date:		February 2021 | 
 | KernelVersion:	5.11 | 
 | Contact:	Divya Bharathi <Divya.Bharathi@Dell.com>, | 
 | 		Prasanth KSR <prasanth.ksr@dell.com> | 
 | 		Dell.Client.Kernel@dell.com | 
 | Description: | 
 | 		Devices support various authentication mechanisms which can be exposed | 
 | 		as a separate configuration object. | 
 |  | 
 | 		For example a "BIOS Admin" password and "System" Password can be set, | 
 | 		reset or cleared using these attributes. | 
 |  | 
 | 		- An "Admin" password is used for preventing modification to the BIOS | 
 | 		  settings. | 
 | 		- A "System" password is required to boot a machine. | 
 |  | 
 | 		Change in any of these two authentication methods will also generate an | 
 | 		uevent KOBJ_CHANGE. | 
 |  | 
 | 		is_enabled: | 
 | 					A file that can be read to obtain a 0/1 flag to see if | 
 | 					<attr> authentication is enabled. | 
 | 					This attribute is mandatory. | 
 |  | 
 | 		role: | 
 | 					The type of authentication used. | 
 | 					This attribute is mandatory. | 
 |  | 
 | 					Known types: | 
 | 						bios-admin: | 
 | 							Representing BIOS administrator password | 
 | 						power-on: | 
 | 							Representing a password required to use | 
 | 							the system | 
 | 						system-mgmt: | 
 | 							Representing System Management password. | 
 | 							See Lenovo extensions section for details | 
 | 						HDD: | 
 | 							Representing HDD password | 
 | 							See Lenovo extensions section for details | 
 | 						NVMe: | 
 | 							Representing NVMe password | 
 | 							See Lenovo extensions section for details | 
 |  | 
 | 		mechanism: | 
 | 					The means of authentication.  This attribute is mandatory. | 
 | 					Supported types are "password" or "certificate". | 
 |  | 
 | 		max_password_length: | 
 | 					A file that can be read to obtain the | 
 | 					maximum length of the Password | 
 |  | 
 | 		min_password_length: | 
 | 					A file that can be read to obtain the | 
 | 					minimum length of the Password | 
 |  | 
 | 		current_password: | 
 | 					A write only value used for privileged access such as | 
 | 					setting	attributes when a system or admin password is set | 
 | 					or resetting to a new password | 
 |  | 
 | 					This attribute is mandatory when mechanism == "password". | 
 |  | 
 | 		new_password: | 
 | 					A write only value that when used in tandem with | 
 | 					current_password will reset a system or admin password. | 
 |  | 
 | 		Note, password management is session specific. If Admin password is set, | 
 | 		same password must be written into current_password file (required for | 
 | 		password-validation) and must be cleared once the session is over. | 
 | 		For example:: | 
 |  | 
 | 			echo "password" > current_password | 
 | 			echo "disabled" > TouchScreen/current_value | 
 | 			echo "" > current_password | 
 |  | 
 | 		Drivers may emit a CHANGE uevent when a password is set or unset | 
 | 		userspace may check it again. | 
 |  | 
 | 		On Dell, Lenovo and HP systems, if Admin password is set, then all BIOS attributes | 
 | 		require password validation. | 
 | 		On Lenovo systems if you change the Admin password the new password is not active until | 
 | 		the next boot. | 
 |  | 
 | 		Lenovo specific class extensions | 
 | 		-------------------------------- | 
 |  | 
 | 		On Lenovo systems the following additional settings are available: | 
 |  | 
 | 		role: system-mgmt	This gives the same authority as the bios-admin password to control | 
 | 					security related features. The authorities allocated can be set via | 
 | 					the BIOS menu SMP Access Control Policy | 
 |  | 
 | 		role: HDD & NVMe	This password is used to unlock access to the drive at boot. Note see | 
 | 					'level' and 'index' extensions below. | 
 |  | 
 | 		lenovo_encoding: | 
 | 					The encoding method that is used. This can be either "ascii" | 
 | 					or "scancode". Default is set to "ascii" | 
 |  | 
 | 		lenovo_kbdlang: | 
 | 					The keyboard language method that is used. This is generally a | 
 | 					two char code (e.g. "us", "fr", "gr") and may vary per platform. | 
 | 					Default is set to "us" | 
 |  | 
 | 		level: | 
 | 					Available for HDD and NVMe authentication to set 'user' or 'master' | 
 | 					privilege level. | 
 | 					If only the user password is configured then this should be used to | 
 | 					unlock the drive at boot. If both master and user passwords are set | 
 | 					then either can be used. If a master password is set a user password | 
 | 					is required. | 
 | 					This attribute defaults to 'user' level | 
 |  | 
 | 		index: | 
 | 					Used with HDD and NVME authentication to set the drive index | 
 | 					that is being referenced (e.g hdd1, hdd2 etc) | 
 | 					This attribute defaults to device 1. | 
 |  | 
 | 		certificate, signature, save_signature: | 
 | 					These attributes are used for certificate based authentication. This is | 
 | 					used in conjunction with a signing server as an alternative to password | 
 | 					based authentication. | 
 | 					The user writes to the attribute(s) with a BASE64 encoded string obtained | 
 | 					from the signing server. | 
 | 					The attributes can be displayed to check the stored value. | 
 |  | 
 | 					Some usage examples: | 
 |  | 
 | 						Installing a certificate to enable feature:: | 
 |  | 
 | 							echo "supervisor password" > authentication/Admin/current_password | 
 | 							echo "signed certificate" > authentication/Admin/certificate | 
 |  | 
 | 						Updating the installed certificate:: | 
 |  | 
 | 							echo "signature" > authentication/Admin/signature | 
 | 							echo "signed certificate" > authentication/Admin/certificate | 
 |  | 
 | 						Removing the installed certificate:: | 
 |  | 
 | 							echo "signature" > authentication/Admin/signature | 
 | 							echo "" > authentication/Admin/certificate | 
 |  | 
 | 						Changing a BIOS setting:: | 
 |  | 
 | 							echo "signature" > authentication/Admin/signature | 
 | 							echo "save signature" > authentication/Admin/save_signature | 
 | 							echo Enable > attribute/PasswordBeep/current_value | 
 |  | 
 | 					You cannot enable certificate authentication if a supervisor password | 
 | 					has not been set. | 
 | 					Clearing the certificate results in no bios-admin authentication method | 
 | 					being configured allowing anyone to make changes. | 
 | 					After any of these operations the system must reboot for the changes to | 
 | 					take effect. | 
 | 					Admin and System certificates are supported from 2025 systems onward. | 
 |  | 
 | 		certificate_thumbprint: | 
 | 					Read only attribute used to display the MD5, SHA1 and SHA256 thumbprints | 
 | 					for the certificate installed in the BIOS. | 
 |  | 
 | 		certificate_to_password: | 
 | 					Write only attribute used to switch from certificate based authentication | 
 | 					back to password based. | 
 | 					Usage:: | 
 |  | 
 | 						echo "signature" > authentication/Admin/signature | 
 | 						echo "password" > authentication/Admin/certificate_to_password | 
 |  | 
 | 		HP specific class extensions | 
 | 		-------------------------------- | 
 |  | 
 | 		On HP systems the following additional settings are available: | 
 |  | 
 | 		role: enhanced-bios-auth: | 
 | 					This role is specific to Secure Platform Management (SPM) attribute. | 
 | 					It requires configuring an endorsement (kek) and signing certificate (sk). | 
 |  | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/pending_reboot | 
 | Date:		February 2021 | 
 | KernelVersion:	5.11 | 
 | Contact:	Divya Bharathi <Divya.Bharathi@Dell.com>, | 
 | 		Prasanth KSR <prasanth.ksr@dell.com> | 
 | 		Dell.Client.Kernel@dell.com | 
 | Description: | 
 | 		A read-only attribute reads 1 if a reboot is necessary to apply | 
 | 		pending BIOS attribute changes. Also, an uevent_KOBJ_CHANGE is | 
 | 		generated when it changes to 1. | 
 |  | 
 | 			==	========================================= | 
 | 			0	All BIOS attributes setting are current | 
 | 			1	A reboot is necessary to get pending BIOS | 
 | 				attribute changes applied | 
 | 			==	========================================= | 
 |  | 
 | 		Note, userspace applications need to follow below steps for efficient | 
 | 		BIOS management, | 
 |  | 
 | 		1.	Check if admin password is set. If yes, follow session method for | 
 | 			password management as briefed under authentication section above. | 
 | 		2.	Before setting any attribute, check if it has any modifiers | 
 | 			or value_modifiers. If yes, incorporate them and then modify | 
 | 			attribute. | 
 |  | 
 | 		Drivers may emit a CHANGE uevent when this value changes and userspace | 
 | 		may check it again. | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/reset_bios | 
 | Date:		February 2021 | 
 | KernelVersion:	5.11 | 
 | Contact:	Divya Bharathi <Divya.Bharathi@Dell.com>, | 
 | 		Prasanth KSR <prasanth.ksr@dell.com> | 
 | 		Dell.Client.Kernel@dell.com | 
 | Description: | 
 | 		This attribute can be used to reset the BIOS Configuration. | 
 | 		Specifically, it tells which type of reset BIOS configuration is being | 
 | 		requested on the host. | 
 |  | 
 | 		Reading from it returns a list of supported options encoded as: | 
 |  | 
 | 			- 'builtinsafe' (Built in safe configuration profile) | 
 | 			- 'lastknowngood' (Last known good saved configuration profile) | 
 | 			- 'factory' (Default factory settings configuration profile) | 
 | 			- 'custom' (Custom saved configuration profile) | 
 |  | 
 | 		The currently selected option is printed in square brackets as | 
 | 		shown below:: | 
 |  | 
 | 		    # echo "factory" > /sys/class/firmware-attributes/*/device/attributes/reset_bios | 
 | 		    # cat /sys/class/firmware-attributes/*/device/attributes/reset_bios | 
 | 		    builtinsafe lastknowngood [factory] custom | 
 |  | 
 | 		Note that any changes to this attribute requires a reboot | 
 | 		for changes to take effect. | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/save_settings | 
 | Date:		August 2023 | 
 | KernelVersion:	6.6 | 
 | Contact:	Mark Pearson <mpearson-lenovo@squebb.ca> | 
 | Description: | 
 | 		On Lenovo platforms there is a limitation in the number of times an attribute can be | 
 | 		saved. This is an architectural limitation and it limits the number of attributes | 
 | 		that can be modified to 48. | 
 | 		A solution for this is instead of the attribute being saved after every modification, | 
 | 		to allow a user to bulk set the attributes, and then trigger a final save. This allows | 
 | 		unlimited attributes. | 
 |  | 
 | 		Read the attribute to check what save mode is enabled (single or bulk). | 
 | 		E.g: | 
 | 		# cat /sys/class/firmware-attributes/thinklmi/attributes/save_settings | 
 | 		single | 
 |  | 
 | 		Write the attribute with 'bulk' to enable bulk save mode. | 
 | 		Write the attribute with 'single' to enable saving, after every attribute set. | 
 | 		The default setting is single mode. | 
 | 		E.g: | 
 | 		# echo bulk > /sys/class/firmware-attributes/thinklmi/attributes/save_settings | 
 |  | 
 | 		When in bulk mode write 'save' to trigger a save of all currently modified attributes. | 
 | 		Note, once a save has been triggered, in bulk mode, attributes can no longer be set and | 
 | 		will return a permissions error. This is to prevent users hitting the 48+ save limitation | 
 | 		(which requires entering the BIOS to clear the error condition) | 
 | 		E.g: | 
 | 		# echo save > /sys/class/firmware-attributes/thinklmi/attributes/save_settings | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/debug_cmd | 
 | Date:		July 2021 | 
 | KernelVersion:	5.14 | 
 | Contact:	Mark Pearson <markpearson@lenovo.com> | 
 | Description: | 
 | 		This write only attribute can be used to send debug commands to the BIOS. | 
 | 		This should only be used when recommended by the BIOS vendor. Vendors may | 
 | 		use it to enable extra debug attributes or BIOS features for testing purposes. | 
 |  | 
 | 		Note that any changes to this attribute requires a reboot for changes to take effect. | 
 |  | 
 |  | 
 | 		HP specific class extensions - Secure Platform Manager (SPM) | 
 | 		-------------------------------- | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/authentication/SPM/kek | 
 | Date:		March 2023 | 
 | KernelVersion:	5.18 | 
 | Contact:	"Jorge Lopez" <jorge.lopez2@hp.com> | 
 | Description: | 
 | 		'kek' Key-Encryption-Key is a write-only file that can be used to configure the | 
 | 		RSA public key that will be used by the BIOS to verify | 
 | 		signatures when setting the signing key.  When written, | 
 | 		the bytes should correspond to the KEK certificate | 
 | 		(x509 .DER format containing an OU).  The size of the | 
 | 		certificate must be less than or equal to 4095 bytes. | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/authentication/SPM/sk | 
 | Date:		March 2023 | 
 | KernelVersion:	5.18 | 
 | Contact:	"Jorge Lopez" <jorge.lopez2@hp.com> | 
 | Description: | 
 | 		'sk' Signature Key is a write-only file that can be used to configure the RSA | 
 | 		public key that will be used by the BIOS to verify signatures | 
 | 		when configuring BIOS settings and security features.  When | 
 | 		written, the bytes should correspond to the modulus of the | 
 | 		public key.  The exponent is assumed to be 0x10001. | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/authentication/SPM/status | 
 | Date:		March 2023 | 
 | KernelVersion:	5.18 | 
 | Contact:	"Jorge Lopez" <jorge.lopez2@hp.com> | 
 | Description: | 
 | 		'status' is a read-only file that returns ASCII text in JSON format reporting | 
 | 		the status information. | 
 |  | 
 | 		  "State": "not provisioned | provisioned | provisioning in progress", | 
 | 		  "Version": "Major.Minor", | 
 | 		  "Nonce": <16-bit unsigned number display in base 10>, | 
 | 		  "FeaturesInUse": <16-bit unsigned number display in base 10>, | 
 | 		  "EndorsementKeyMod": "<256 bytes in base64>", | 
 | 		  "SigningKeyMod": "<256 bytes in base64>" | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/Sure_Start/audit_log_entries | 
 | Date:		March 2023 | 
 | KernelVersion:	5.18 | 
 | Contact:	"Jorge Lopez" <jorge.lopez2@hp.com> | 
 | Description: | 
 | 		'audit_log_entries' is a read-only file that returns the events in the log. | 
 |  | 
 | 			Audit log entry format | 
 |  | 
 | 			Byte 0-15:   Requested Audit Log entry  (Each Audit log is 16 bytes) | 
 | 			Byte 16-127: Unused | 
 |  | 
 | What:		/sys/class/firmware-attributes/*/attributes/Sure_Start/audit_log_entry_count | 
 | Date:		March 2023 | 
 | KernelVersion:	5.18 | 
 | Contact:	"Jorge Lopez" <jorge.lopez2@hp.com> | 
 | Description: | 
 | 		'audit_log_entry_count' is a read-only file that returns the number of existing | 
 | 		audit log events available to be read. Values are separated using comma. (``,``) | 
 |  | 
 | 			[No of entries],[log entry size],[Max number of entries supported] | 
 |  | 
 | 		log entry size identifies audit log size for the current BIOS version. | 
 | 		The current size is 16 bytes but it can be up to 128 bytes long in future BIOS | 
 | 		versions. |