firmware: introduce sysfs driver for QEMU's fw_cfg device
Make fw_cfg entries of type "file" available via sysfs. Entries are listed under /sys/firmware/qemu_fw_cfg/by_key, in folders named after each entry's selector key. Filename, selector value, and size read-only attributes are included for each entry. Also, a "raw" attribute allows retrieval of the full binary content of each entry. The fw_cfg device can be instantiated automatically from ACPI or the Device Tree, or manually by using a kernel module (or command line) parameter, with a syntax outlined in the documentation file. Signed-off-by: Gabriel Somlo <somlo@cmu.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

부모
2fe829aca9
커밋
75f3e8e47f
58
Documentation/ABI/testing/sysfs-firmware-qemu_fw_cfg
Normal file
58
Documentation/ABI/testing/sysfs-firmware-qemu_fw_cfg
Normal file
@@ -0,0 +1,58 @@
|
||||
What: /sys/firmware/qemu_fw_cfg/
|
||||
Date: August 2015
|
||||
Contact: Gabriel Somlo <somlo@cmu.edu>
|
||||
Description:
|
||||
Several different architectures supported by QEMU (x86, arm,
|
||||
sun4*, ppc/mac) are provisioned with a firmware configuration
|
||||
(fw_cfg) device, originally intended as a way for the host to
|
||||
provide configuration data to the guest firmware. Starting
|
||||
with QEMU v2.4, arbitrary fw_cfg file entries may be specified
|
||||
by the user on the command line, which makes fw_cfg additionally
|
||||
useful as an out-of-band, asynchronous mechanism for providing
|
||||
configuration data to the guest userspace.
|
||||
|
||||
The authoritative guest-side hardware interface documentation
|
||||
to the fw_cfg device can be found in "docs/specs/fw_cfg.txt"
|
||||
in the QEMU source tree.
|
||||
|
||||
=== SysFS fw_cfg Interface ===
|
||||
|
||||
The fw_cfg sysfs interface described in this document is only
|
||||
intended to display discoverable blobs (i.e., those registered
|
||||
with the file directory), as there is no way to determine the
|
||||
presence or size of "legacy" blobs (with selector keys between
|
||||
0x0002 and 0x0018) programmatically.
|
||||
|
||||
All fw_cfg information is shown under:
|
||||
|
||||
/sys/firmware/qemu_fw_cfg/
|
||||
|
||||
The only legacy blob displayed is the fw_cfg device revision:
|
||||
|
||||
/sys/firmware/qemu_fw_cfg/rev
|
||||
|
||||
--- Discoverable fw_cfg blobs by selector key ---
|
||||
|
||||
All discoverable blobs listed in the fw_cfg file directory are
|
||||
displayed as entries named after their unique selector key
|
||||
value, e.g.:
|
||||
|
||||
/sys/firmware/qemu_fw_cfg/by_key/32
|
||||
/sys/firmware/qemu_fw_cfg/by_key/33
|
||||
/sys/firmware/qemu_fw_cfg/by_key/34
|
||||
...
|
||||
|
||||
Each such fw_cfg sysfs entry has the following values exported
|
||||
as attributes:
|
||||
|
||||
name : The 56-byte nul-terminated ASCII string used as the
|
||||
blob's 'file name' in the fw_cfg directory.
|
||||
size : The length of the blob, as given in the fw_cfg
|
||||
directory.
|
||||
key : The value of the blob's selector key as given in the
|
||||
fw_cfg directory. This value is the same as used in
|
||||
the parent directory name.
|
||||
raw : The raw bytes of the blob, obtained by selecting the
|
||||
entry via the control register, and reading a number
|
||||
of bytes equal to the blob size from the data
|
||||
register.
|
Reference in New Issue
Block a user