From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Wei Liu <wei.liu2@citrix.com>,
boris.ostrovsky@oracle.com,
Roger Pau Monne <roger.pau@citrix.com>,
Ian Jackson <ian.jackson@eu.citrix.com>
Subject: [PATCH 03/19] xl: introduce a firmware option
Date: Tue, 22 Aug 2017 10:49:04 +0100 [thread overview]
Message-ID: <20170822094920.70151-4-roger.pau@citrix.com> (raw)
In-Reply-To: <20170822094920.70151-1-roger.pau@citrix.com>
The new firmware option aims to provide a coherent way to set the
firmware for the different kind of guests Xen supports.
For PV guests the available firmwares are pvgrub{32|64}, and for HVM
the following are supported: bios, uefi, seabios, rombios and ovmf.
Note that uefi maps to ovmf, and bios maps to the default firmware for
each device model.
The xl.cfg man page is updated to document the new feature.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>
---
docs/man/xl.cfg.pod.5.in | 56 ++++++++++++++++++++++++++++++++++++++++++++++++
tools/xl/xl_parse.c | 43 +++++++++++++++++++++++++++++++++++++
2 files changed, 99 insertions(+)
diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in
index ab53436da2..a0f3c8ab2a 100644
--- a/docs/man/xl.cfg.pod.5.in
+++ b/docs/man/xl.cfg.pod.5.in
@@ -440,6 +440,62 @@ is guest specific).
=back
+=head3 Non direct Kernel Boot
+
+Non direct kernel boot allows booting guests with a firmware. This can be used
+by all types of guests, although the selection of options is different
+depending on the guest type.
+
+This option provides the flexibly of letting the guest decide which kernel they
+want to boot, while preventing having to poke at the guest file system form the
+toolstack domain.
+
+=head4 PV guest options
+
+=over 4
+
+=item B<firmware="pvgrub32|pvgrub64">
+
+Boots a guest using a para-virtualized version of grub that runs inside of the
+guest. The bitness of the guest needs to be know, so that the right version of
+pvgrub can be selected.
+
+Note that xl expects to find the pvgrub32.bin and pvgrub64.bin binaries in
+F<@XENFIRMWAREDIR@>.
+
+=back
+
+=head4 HVM guest options
+
+=over 4
+
+=item B<firmware="bios">
+
+Boot the guest using the default BIOS firmware, which depends on the chosen
+device model.
+
+=item B<firmware="uefi">
+
+Boot the guest using the default UEFI firmware, currently OVMF.
+
+=item B<firmware="seabios">
+
+Boot the guest using the SeaBIOS BIOS firmware.
+
+=item B<firmware="rombios">
+
+Boot the guest using the ROMBIOS BIOS firmware.
+
+=item B<firmware="ovmf">
+
+Boot the guest using the OVMF UEFI firmware.
+
+=item B<firmware="PATH">
+
+Load the specified file as firmware for the guest.
+
+=back
+
=head3 Other Options
=over 4
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 377f0f0d94..84380efc72 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1258,9 +1258,52 @@ void parse_config_data(const char *config_source,
exit(-ERROR_FAIL);
}
+ /*
+ * The firmware config option can be used as a simplification instead
+ * of setting bios or firmware_override. It has the following meanings
+ * for HVM guests:
+ *
+ * - ovmf | seabios | rombios: maps directly into the "bios" option.
+ * - uefi | bios: maps into one of the above options and is set in the
+ * bios field.
+ * - Anything else is treated as a path that is copied into firmware.
+ */
+ if (!xlu_cfg_get_string (config, "firmware", &buf, 0) &&
+ libxl_bios_type_from_string(buf, &b_info->u.hvm.bios)) {
+ if (!strncmp(buf, "uefi", strlen(buf)))
+ b_info->u.hvm.bios = LIBXL_BIOS_TYPE_OVMF;
+ else if (strncmp(buf, "bios", strlen(buf)))
+ /* Assume it's a path to a custom firmware. */
+ xlu_cfg_replace_string(config, "firmware",
+ &b_info->u.hvm.firmware, 0);
+ /*
+ * BIOS is the default, and will be chosen by libxl based on the
+ * device model specified.
+ */
+ }
+
break;
case LIBXL_DOMAIN_TYPE_PV:
{
+ /*
+ * The firmware config option can be used as a simplification instead
+ * of directly setting kernel. It will be translated to
+ * XENFIRMWAREDIR/<string>.bin
+ */
+ if (!xlu_cfg_get_string (config, "firmware", &buf, 0)) {
+ if (b_info->kernel) {
+ fprintf(stderr, "ERROR: both kernel and firmware specified\n");
+ exit(1);
+ }
+ if (strncmp(buf, "pvgrub32", strlen(buf)) &&
+ strncmp(buf, "pvgrub64", strlen(buf))) {
+ fprintf(stderr,
+ "ERROR: only pvgrub{32|64} supported as firmware options\n");
+ exit(1);
+ }
+
+ xasprintf(&b_info->kernel, XENFIRMWAREDIR "/%s.bin", buf);
+ }
if (!b_info->bootloader && !b_info->kernel) {
fprintf(stderr, "Neither kernel nor bootloader specified\n");
exit(1);
--
2.11.0 (Apple Git-81)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-08-22 9:49 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-22 9:49 [PATCH 00/19] libxl/xl: add PVH guest type Roger Pau Monne
2017-08-22 9:49 ` [PATCH 01/19] libxl/xl: move some HVM/PV specific fields of libxl_domain_build_info Roger Pau Monne
2017-08-24 11:27 ` Wei Liu
2017-08-24 11:47 ` Roger Pau Monne
2017-08-22 9:49 ` [PATCH 02/19] xl: introduce a domain type option Roger Pau Monne
2017-08-24 11:28 ` Wei Liu
2017-08-22 9:49 ` Roger Pau Monne [this message]
2017-08-24 11:31 ` [PATCH 03/19] xl: introduce a firmware option Wei Liu
2017-08-22 9:49 ` [PATCH 04/19] libxl: introduce a PVH guest type Roger Pau Monne
2017-08-24 11:42 ` Wei Liu
2017-08-24 11:52 ` Roger Pau Monne
2017-08-22 9:49 ` [PATCH 05/19] libxl: allow PVH guests to use a bootloader Roger Pau Monne
2017-08-22 9:49 ` [PATCH 06/19] libxl: set PVH guests to use the PV console Roger Pau Monne
2017-08-22 9:49 ` [PATCH 07/19] libxl: add PVH support to domain creation Roger Pau Monne
2017-08-22 9:49 ` [PATCH 08/19] libxl: remove device model "none" support from disk related functions Roger Pau Monne
2017-08-22 9:49 ` [PATCH 09/19] libxl: set device model for PVH guests Roger Pau Monne
2017-08-22 9:49 ` [PATCH 10/19] libxl: add PVH support to domain building Roger Pau Monne
2017-08-22 9:49 ` [PATCH 11/19] libxl: add PVH support to domain save/suspend Roger Pau Monne
2017-08-22 9:49 ` [PATCH 12/19] libxl: add PVH support to vpcu hotplug, domain destruction/pause and domain configuration Roger Pau Monne
2017-08-22 9:49 ` [PATCH 13/19] libxl: add PVH support to memory functions Roger Pau Monne
2017-08-22 9:49 ` [PATCH 14/19] libxl: PVH guests use PV nics Roger Pau Monne
2017-08-22 9:49 ` [PATCH 15/19] libxl: remove device model "none" support from stream functions Roger Pau Monne
2017-08-22 9:49 ` [PATCH 16/19] libxl: add PVH support to USB Roger Pau Monne
2017-08-22 9:49 ` [PATCH 17/19] libxl: add PVH support to x86 functions Roger Pau Monne
2017-08-22 9:49 ` [PATCH 18/19] xl: add PVH as a guest type Roger Pau Monne
2017-08-22 9:49 ` [PATCH 19/19] libxl: remove device model "none" from IDL Roger Pau Monne
2017-08-22 11:24 ` [PATCH 00/19] libxl/xl: add PVH guest type Andrew Cooper
2017-08-22 11:30 ` Roger Pau Monne
2017-08-22 12:33 ` Andrew Cooper
2017-08-22 12:56 ` Roger Pau Monne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170822094920.70151-4-roger.pau@citrix.com \
--to=roger.pau@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=ian.jackson@eu.citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).