Message ID | 20200923133804.2089190-4-berrange@redhat.com |
---|---|
State | Superseded |
Headers | show |
Series | Add support for loading SMBIOS OEM strings from a file | expand |
Daniel P. Berrangé <berrange@redhat.com> writes: > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> > --- > qemu-options.hx | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/qemu-options.hx b/qemu-options.hx > index 47f64be0c0..2cb034bce3 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -2296,6 +2296,8 @@ DEF("smbios", HAS_ARG, QEMU_OPTION_smbios, > "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n" > " [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n" > " specify SMBIOS type 4 fields\n" > + "-smbios type=11[,value=str][,path=filename]\n" > + " specify SMBIOS type 11 fields\n" > "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n" > " [,asset=str][,part=str][,speed=%d]\n" > " specify SMBIOS type 17 fields\n", > @@ -2319,6 +2321,45 @@ SRST > ``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]`` > Specify SMBIOS type 4 fields > > +``-smbios type=11[,value=str][,path=filename]`` > + Specify SMBIOS type 11 fields inline "inline"? > + > + This argument can be repeated multiple times, and values are added in the order they are parsed. > + Applications intending to use OEM strings data are encouraged to use their application name as > + a prefix for the value string. This facilitates passing information for multiple applications > + concurrently. > + > + The ``value=str`` syntax provides the string data inline, while the ``path=filename`` syntax > + loads data from a file on disk. Note that the file is not permitted to contain any NUL bytes. Out of curiosity: what happens when it does? > + > + Both the ``value`` and ``path`` options can be repeated multiple times and will be added to > + the SMBIOS table in the order in which they appear. > + > + Note that on the x86 architecture, the total size of all SMBIOS tables is limited to 65535 > + bytes. Thus the OEM strings data is not suitable for passing large amounts of data into the > + guest. Instead it should be used as a indicator to inform the guest where to locate the real > + data set, for example, by specifying the serial ID of a block device. > + > + An example passing three strings is > + > + .. parsed-literal:: > + > + -smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\\ > + value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\\ > + path=/some/file/with/oemstringsdata.txt > + > + In the guest OS this is visible with the ``dmidecode`` command > + > + .. parsed-literal:: > + > + $ dmidecode -t 11 > + Handle 0x0E00, DMI type 11, 5 bytes > + OEM Strings > + String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/ > + String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os > + String 3: myapp:some extra data > + > + > ``-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]`` > Specify SMBIOS type 17 fields > ERST
diff --git a/qemu-options.hx b/qemu-options.hx index 47f64be0c0..2cb034bce3 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2296,6 +2296,8 @@ DEF("smbios", HAS_ARG, QEMU_OPTION_smbios, "-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n" " [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n" " specify SMBIOS type 4 fields\n" + "-smbios type=11[,value=str][,path=filename]\n" + " specify SMBIOS type 11 fields\n" "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n" " [,asset=str][,part=str][,speed=%d]\n" " specify SMBIOS type 17 fields\n", @@ -2319,6 +2321,45 @@ SRST ``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]`` Specify SMBIOS type 4 fields +``-smbios type=11[,value=str][,path=filename]`` + Specify SMBIOS type 11 fields inline + + This argument can be repeated multiple times, and values are added in the order they are parsed. + Applications intending to use OEM strings data are encouraged to use their application name as + a prefix for the value string. This facilitates passing information for multiple applications + concurrently. + + The ``value=str`` syntax provides the string data inline, while the ``path=filename`` syntax + loads data from a file on disk. Note that the file is not permitted to contain any NUL bytes. + + Both the ``value`` and ``path`` options can be repeated multiple times and will be added to + the SMBIOS table in the order in which they appear. + + Note that on the x86 architecture, the total size of all SMBIOS tables is limited to 65535 + bytes. Thus the OEM strings data is not suitable for passing large amounts of data into the + guest. Instead it should be used as a indicator to inform the guest where to locate the real + data set, for example, by specifying the serial ID of a block device. + + An example passing three strings is + + .. parsed-literal:: + + -smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\\ + value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\\ + path=/some/file/with/oemstringsdata.txt + + In the guest OS this is visible with the ``dmidecode`` command + + .. parsed-literal:: + + $ dmidecode -t 11 + Handle 0x0E00, DMI type 11, 5 bytes + OEM Strings + String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/ + String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os + String 3: myapp:some extra data + + ``-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]`` Specify SMBIOS type 17 fields ERST