-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'driver-core-4.6-rc1' of git://git.kernel.org/pub/scm/linux…
…/kernel/git/gregkh/driver-core Pull driver core updates from Greg KH: "Just a few patches this time around for the 4.6-rc1 merge window. Largest is a new firmware driver, but there are some other updates to the driver core in here as well, the shortlog has the details. All have been in linux-next for a while with no reported issues" * tag 'driver-core-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: Revert "driver-core: platform: probe of-devices only using list of compatibles" firmware: qemu config needs I/O ports firmware: qemu_fw_cfg.c: fix typo FW_CFG_DATA_OFF driver-core: platform: probe of-devices only using list of compatibles driver-core: platform: fix typo in documentation for multi-driver helper component: remove impossible condition drivers: dma-coherent: simplify dma_init_coherent_memory return value devicetree: update documentation for fw_cfg ARM bindings firmware: create directory hierarchy for sysfs fw_cfg entries firmware: introduce sysfs driver for QEMU's fw_cfg device kobject: export kset_find_obj() for module use driver core: bus: use to_subsys_private and to_device_private_bus driver core: bus: use list_for_each_entry* debugfs: Add stub function for debugfs_create_automount(). kernfs: make kernfs_walk_ns() use kernfs_pr_cont_buf[]
- Loading branch information
Showing
12 changed files
with
915 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
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. | ||
|
||
--- Listing fw_cfg blobs by file name --- | ||
|
||
While the fw_cfg device does not impose any specific naming | ||
convention on the blobs registered in the file directory, | ||
QEMU developers have traditionally used path name semantics | ||
to give each blob a descriptive name. For example: | ||
|
||
"bootorder" | ||
"genroms/kvmvapic.bin" | ||
"etc/e820" | ||
"etc/boot-fail-wait" | ||
"etc/system-states" | ||
"etc/table-loader" | ||
"etc/acpi/rsdp" | ||
"etc/acpi/tables" | ||
"etc/smbios/smbios-tables" | ||
"etc/smbios/smbios-anchor" | ||
... | ||
|
||
In addition to the listing by unique selector key described | ||
above, the fw_cfg sysfs driver also attempts to build a tree | ||
of directories matching the path name components of fw_cfg | ||
blob names, ending in symlinks to the by_key entry for each | ||
"basename", as illustrated below (assume current directory is | ||
/sys/firmware): | ||
|
||
qemu_fw_cfg/by_name/bootorder -> ../by_key/38 | ||
qemu_fw_cfg/by_name/etc/e820 -> ../../by_key/35 | ||
qemu_fw_cfg/by_name/etc/acpi/rsdp -> ../../../by_key/41 | ||
... | ||
|
||
Construction of the directory tree and symlinks is done on a | ||
"best-effort" basis, as there is no guarantee that components | ||
of fw_cfg blob names are always "well behaved". I.e., there is | ||
the possibility that a symlink (basename) will conflict with | ||
a dirname component of another fw_cfg blob, in which case the | ||
creation of the offending /sys/firmware/qemu_fw_cfg/by_name | ||
entry will be skipped. | ||
|
||
The authoritative list of entries will continue to be found | ||
under the /sys/firmware/qemu_fw_cfg/by_key directory. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.