brintos

brintos / linux-shallow public Read only

0
0
Text · 3.8 KiB · 54d1bfd Raw
104 lines · plain
1What:		/sys/firmware/qemu_fw_cfg/2Date:		August 20153Contact:	Gabriel Somlo <somlo@cmu.edu>4Description:5		Several different architectures supported by QEMU (x86, arm,6		sun4*, ppc/mac) are provisioned with a firmware configuration7		(fw_cfg) device, originally intended as a way for the host to8		provide configuration data to the guest firmware. Starting9		with QEMU v2.4, arbitrary fw_cfg file entries may be specified10		by the user on the command line, which makes fw_cfg additionally11		useful as an out-of-band, asynchronous mechanism for providing12		configuration data to the guest userspace.13 14		The authoritative guest-side hardware interface documentation15		to the fw_cfg device can be found in "docs/specs/fw_cfg.rst"16		in the QEMU source tree, or online at:17		https://qemu-project.gitlab.io/qemu/specs/fw_cfg.html18 19		**SysFS fw_cfg Interface**20 21		The fw_cfg sysfs interface described in this document is only22		intended to display discoverable blobs (i.e., those registered23		with the file directory), as there is no way to determine the24		presence or size of "legacy" blobs (with selector keys between25		0x0002 and 0x0018) programmatically.26 27		All fw_cfg information is shown under:28 29			/sys/firmware/qemu_fw_cfg/30 31		The only legacy blob displayed is the fw_cfg device revision:32 33			/sys/firmware/qemu_fw_cfg/rev34 35		**Discoverable fw_cfg blobs by selector key**36 37		All discoverable blobs listed in the fw_cfg file directory are38		displayed as entries named after their unique selector key39		value, e.g.:40 41			/sys/firmware/qemu_fw_cfg/by_key/3242			/sys/firmware/qemu_fw_cfg/by_key/3343			/sys/firmware/qemu_fw_cfg/by_key/3444			...45 46		Each such fw_cfg sysfs entry has the following values exported47		as attributes:48 49		====	  ====================================================50		name	  The 56-byte nul-terminated ASCII string used as the51			  blob's 'file name' in the fw_cfg directory.52		size	  The length of the blob, as given in the fw_cfg53			  directory.54		key	  The value of the blob's selector key as given in the55			  fw_cfg directory. This value is the same as used in56			  the parent directory name.57		raw	  The raw bytes of the blob, obtained by selecting the58			  entry via the control register, and reading a number59			  of bytes equal to the blob size from the data60			  register.61		====	  ====================================================62 63		**Listing fw_cfg blobs by file name**64 65		While the fw_cfg device does not impose any specific naming66		convention on the blobs registered in the file directory,67		QEMU developers have traditionally used path name semantics68		to give each blob a descriptive name. For example::69 70			"bootorder"71			"genroms/kvmvapic.bin"72			"etc/e820"73			"etc/boot-fail-wait"74			"etc/system-states"75			"etc/table-loader"76			"etc/acpi/rsdp"77			"etc/acpi/tables"78			"etc/smbios/smbios-tables"79			"etc/smbios/smbios-anchor"80			...81 82		In addition to the listing by unique selector key described83		above, the fw_cfg sysfs driver also attempts to build a tree84		of directories matching the path name components of fw_cfg85		blob names, ending in symlinks to the by_key entry for each86		"basename", as illustrated below (assume current directory is87		/sys/firmware)::88 89		    qemu_fw_cfg/by_name/bootorder -> ../by_key/3890		    qemu_fw_cfg/by_name/etc/e820 -> ../../by_key/3591		    qemu_fw_cfg/by_name/etc/acpi/rsdp -> ../../../by_key/4192		    ...93 94		Construction of the directory tree and symlinks is done on a95		"best-effort" basis, as there is no guarantee that components96		of fw_cfg blob names are always "well behaved". I.e., there is97		the possibility that a symlink (basename) will conflict with98		a dirname component of another fw_cfg blob, in which case the99		creation of the offending /sys/firmware/qemu_fw_cfg/by_name100		entry will be skipped.101 102		The authoritative list of entries will continue to be found103		under the /sys/firmware/qemu_fw_cfg/by_key directory.104