From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1asCMi-0001mV-QO for qemu-devel@nongnu.org; Mon, 18 Apr 2016 12:49:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1asCMf-00025Q-EV for qemu-devel@nongnu.org; Mon, 18 Apr 2016 12:49:36 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39622) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1asCMf-00025J-7m for qemu-devel@nongnu.org; Mon, 18 Apr 2016 12:49:33 -0400 Date: Mon, 18 Apr 2016 19:49:28 +0300 From: "Michael S. Tsirkin" Message-ID: <20160418194642-mutt-send-email-mst@redhat.com> References: <1460997729-29541-1-git-send-email-armbru@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1460997729-29541-1-git-send-email-armbru@redhat.com> Subject: Re: [Qemu-devel] [PATCH for-2.6] fw_cfg: Adopt /opt/RFQDN convention List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: qemu-devel@nongnu.org, Gerd Hoffmann , "Gabriel L. Somlo" , Laszlo Ersek On Mon, Apr 18, 2016 at 06:42:09PM +0200, Markus Armbruster wrote: > FW CFG's primary user is QEMU, which uses it to expose configuration > information (in the widest sense) to Firmware. Thus the name FW CFG. > > FW CFG can also be used by others for their own purposes. QEMU is > merely acting as transport then. Names starting with opt/ are reseved > for such uses. There is no provision, however, to guide safe sharing > among different such users. > > Fix that, losely following QMP precedence: names should start with > opt/RFQDN/, where RFQDN is a reverse fully qualified domain name you > control. > > Based on a more ambitious patch from Michael Tsirkin. > > Cc: Gerd Hoffmann > Cc: Gabriel L. Somlo > Cc: Laszlo Ersek > Cc: Michael S. Tsirkin > Signed-off-by: Markus Armbruster Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin I don't think there's any rush to get this into 2.6, though. If no one beats me to it, I'll apply this after 2.6 is out. > --- > Michael's patch: > Message-ID: <1460102035-15972-1-git-send-email-mst@redhat.com> > http://lists.nongnu.org/archive/html/qemu-devel/2016-04/msg01381.html > > Michael, I'm happy to add your S-o-b if you feel this patch is > derivative of yours despite my extensive changes. I didn't do it > proactively because I didn't want to misrepresent your opinions on > this matter. > > docs/specs/fw_cfg.txt | 36 +++++++++++++++++------------------- > qemu-options.hx | 24 +++++++++++++++++++----- > 2 files changed, 36 insertions(+), 24 deletions(-) > > diff --git a/docs/specs/fw_cfg.txt b/docs/specs/fw_cfg.txt > index 5414140..90e74bb 100644 > --- a/docs/specs/fw_cfg.txt > +++ b/docs/specs/fw_cfg.txt > @@ -210,29 +210,27 @@ the following syntax: > > -fw_cfg [name=],file= > > -where is the fw_cfg item name, and is the location > -on the host file system of a file containing the data to be inserted. > - > -Small enough items may be provided directly as strings on the command > -line, using the syntax: > +Or > > -fw_cfg [name=],string= > > -The terminating NUL character of the content will NOT be > -included as part of the fw_cfg item data, which is consistent with > -the absence of a NUL terminator for items inserted via the file option. > +See QEMU man page for more documentation. > > -Both and, if applicable, the content are passed > -through by QEMU without any interpretation, expansion, or further > -processing. Any such processing (potentially performed e.g., by the shell) > -is outside of QEMU's responsibility; as such, using plain ASCII characters > -is recommended. > +Using item_name with plain ASCII characters only is recommended. > > -NOTE: Users *SHOULD* choose item names beginning with the prefix "opt/" > -when using the "-fw_cfg" command line option, to avoid conflicting with > -item names used internally by QEMU. For instance: > +Item names beginning with "opt/" are reserved for users. QEMU will > +never create entries with such names unless explicitly ordered by the > +user. > > - -fw_cfg name=opt/my_item_name,file=./my_blob.bin > +To avoid clashes among different users, it is strongly recommended > +that you use names beginning with opt/RFQDN/, where RFQDN is a > +reverse fully qualified domain name you control. For instance, if > +SeaBIOS wanted to define additional names, prefix "opt/org.seabios/" > +would be appropriate. > > -Similarly, QEMU developers *SHOULD NOT* use item names prefixed with > -"opt/" when inserting items programmatically, e.g. via fw_cfg_add_file(). > +For historical reasons, "opt/ovmf/" is reserved for OVMF firmware. > + > +Prefix "opt/org.qemu/" is reserved for QEMU itself. > + > +Use of names not beginning with "opt/" is potentially dangerous and > +entirely unsupported. QEMU will warn if you try. > diff --git a/qemu-options.hx b/qemu-options.hx > index 587de8f..6106520 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -2864,18 +2864,32 @@ ETEXI > > DEF("fw_cfg", HAS_ARG, QEMU_OPTION_fwcfg, > "-fw_cfg [name=],file=\n" > - " add named fw_cfg entry from file\n" > + " add named fw_cfg entry with contents from file\n" > "-fw_cfg [name=],string=\n" > - " add named fw_cfg entry from string\n", > + " add named fw_cfg entry with contents from string\n", > QEMU_ARCH_ALL) > STEXI > + > @item -fw_cfg [name=]@var{name},file=@var{file} > @findex -fw_cfg > -Add named fw_cfg entry from file. @var{name} determines the name of > -the entry in the fw_cfg file directory exposed to the guest. > +Add named fw_cfg entry with contents from file @var{file}. > > @item -fw_cfg [name=]@var{name},string=@var{str} > -Add named fw_cfg entry from string. > +Add named fw_cfg entry with contents from string @var{str}. > + > +The terminating NUL character of the contents of @var{str} will not be > +included as part of the fw_cfg item data. To insert contents with > +embedded NUL characters, you have to use the @var{file} parameter. > + > +The fw_cfg entries are passed by QEMU through to the guest. > + > +Example: > +@example > + -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin > +@end example > +creates an fw_cfg entry named opt/com.mycompany/blob with contents > +from ./my_blob.bin. > + > ETEXI > > DEF("serial", HAS_ARG, QEMU_OPTION_serial, \ > -- > 2.5.5