Attilio Rao
2012-Feb-28 17:26 UTC
[PATCH] [PATCH v3] Add the bios option to specify the bios to load
Signed-off-by: Attilio Rao <attilio.rao@citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> --- Differences with previous revision: - Rename of libxl_bios_types into libxl_bios_type - Improvement to the manpage, discussed with Ian diff -r adcd6ab160fa -r 4c425ca35c4b docs/man/xl.cfg.pod.5 --- a/docs/man/xl.cfg.pod.5 Thu Feb 23 10:29:27 2012 +0000 +++ b/docs/man/xl.cfg.pod.5 Tue Feb 28 17:25:37 2012 +0000 @@ -430,6 +430,30 @@ accept the defaults for these options wh =over 4 +=item B<bios="STRING"> + +Select the virtual firmware that is exposed to the guest. +By default, a guess is operated based on the device model, but sometimes +it may be useful to force a different one, like UEFI. + +=over 4 + +=item B<rombios> + +Load a traditional x86 BIOS used by default when device_model_version=qemu-xen-traditional. This is the only BIOS option supported when device_model_version=qemu-xen-traditional. + +=item B<seabios> + +Loads SeaBIOS, a 16-bit x86 compatbile BIOS. This is used by default +with device_model_version=qemu-xen. + +=item B<ovmf> + +Loads OVMF, a standard UEFI firmware by Tianocore project. It can only +be enabled via the B<bios> option. Requires device_model_version=qemu-xen. + +=back + =item B<pae=BOOLEAN> Hide or expose the IA32 Physical Address Extensions. These extensions diff -r adcd6ab160fa -r 4c425ca35c4b tools/libxl/libxl_create.c --- a/tools/libxl/libxl_create.c Thu Feb 23 10:29:27 2012 +0000 +++ b/tools/libxl/libxl_create.c Tue Feb 28 17:25:37 2012 +0000 @@ -89,6 +89,7 @@ int libxl_init_build_info(libxl_ctx *ctx case LIBXL_DOMAIN_TYPE_HVM: b_info->video_memkb = 8 * 1024; b_info->u.hvm.firmware = NULL; + b_info->u.hvm.bios = 0; b_info->u.hvm.pae = 1; b_info->u.hvm.apic = 1; b_info->u.hvm.acpi = 1; diff -r adcd6ab160fa -r 4c425ca35c4b tools/libxl/libxl_dm.c --- a/tools/libxl/libxl_dm.c Thu Feb 23 10:29:27 2012 +0000 +++ b/tools/libxl/libxl_dm.c Tue Feb 28 17:25:37 2012 +0000 @@ -66,6 +66,8 @@ const char *libxl__domain_device_model(l static const char *libxl__domain_bios(libxl__gc *gc, const libxl_domain_build_info *info) { + if (info->u.hvm.bios) + return libxl_bios_type_to_string(info->u.hvm.bios); switch (info->device_model_version) { case 1: return "rombios"; case 2: return "seabios"; diff -r adcd6ab160fa -r 4c425ca35c4b tools/libxl/libxl_types.idl --- a/tools/libxl/libxl_types.idl Thu Feb 23 10:29:27 2012 +0000 +++ b/tools/libxl/libxl_types.idl Tue Feb 28 17:25:37 2012 +0000 @@ -99,6 +99,12 @@ libxl_timer_mode = Enumeration("timer_mo (3, "one_missed_tick_pending"), ]) +libxl_bios_type = Enumeration("bios_type", [ + (1, "rombios"), + (2, "seabios"), + (3, "ovmf"), + ]) + # # Complex libxl types # @@ -228,6 +234,7 @@ libxl_domain_build_info = Struct("domain ("u", KeyedUnion(None, libxl_domain_type, "type", [("hvm", Struct(None, [("firmware", string), + ("bios", libxl_bios_type), ("pae", bool), ("apic", bool), ("acpi", bool), diff -r adcd6ab160fa -r 4c425ca35c4b tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Thu Feb 23 10:29:27 2012 +0000 +++ b/tools/libxl/xl_cmdimpl.c Tue Feb 28 17:25:37 2012 +0000 @@ -704,6 +704,12 @@ static void parse_config_data(const char xlu_cfg_replace_string (config, "firmware_override", &b_info->u.hvm.firmware, 0); + if (!xlu_cfg_get_string(config, "bios", &buf, 0) && + libxl_bios_type_from_string(buf, &b_info->u.hvm.bios)) { + fprintf(stderr, "ERROR: invalid value \"%s\" for \"bios\"\n", + buf); + exit (1); + } if (!xlu_cfg_get_long (config, "pae", &l, 0)) b_info->u.hvm.pae = l; if (!xlu_cfg_get_long (config, "apic", &l, 0))
Ian Campbell
2012-Feb-28 17:41 UTC
Re: [PATCH] [PATCH v3] Add the bios option to specify the bios to load
On Tue, 2012-02-28 at 17:26 +0000, Attilio Rao wrote:> Signed-off-by: Attilio Rao <attilio.rao@citrix.com> > Acked-by: Ian Campbell <ian.campbell@citrix.com> > > --- > > Differences with previous revision: > - Rename of libxl_bios_types into libxl_bios_type > - Improvement to the manpage, discussed with Ian > > diff -r adcd6ab160fa -r 4c425ca35c4b docs/man/xl.cfg.pod.5 > --- a/docs/man/xl.cfg.pod.5 Thu Feb 23 10:29:27 2012 +0000 > +++ b/docs/man/xl.cfg.pod.5 Tue Feb 28 17:25:37 2012 +0000 > @@ -430,6 +430,30 @@ accept the defaults for these options wh > > =over 4 > > +=item B<bios="STRING"> > + > +Select the virtual firmware that is exposed to the guest. > +By default, a guess is operated based on the device model, but sometimes"...a guess is made based on ..."> +it may be useful to force a different one, like UEFI.I''d say "configure" or "request" rather than "force", force sounds like it''s not recommended or something.> + > +=over 4 > + > +=item B<rombios> > + > +Load a traditional x86 BIOS used by default when device_model_version=qemu-xen-traditional. This is the only BIOS option supported when device_model_version=qemu-xen-traditional.Very long line. Please wrap to < 80 cols. This paragraph looks very different to the SeaBIOS and OVMF ones, structure-wise which is a little jarring . Also rombios is no more or less "traditional" or "16 bit x86 compatible" than SeaBIOS is. It''s just that SeaBIOS is better code and better maintained so we are transitioning to it along with the upstream qemu transition. I think I''d say something like the following: Loads ROMBIOS, a 16-bit x86 compatible BIOS. This is used by default when device_model_version=qemu-xen-traditional. This is the only BIOS option supported when device_model_version=qemu-xen-traditional. This is the BIOS used by all previous Xen versions.> + > +=item B<seabios> > + > +Loads SeaBIOS, a 16-bit x86 compatbile BIOS. This is used by defaultcompatible> +with device_model_version=qemu-xen. > + > +=item B<ovmf> > + > +Loads OVMF, a standard UEFI firmware by Tianocore project. It can only > +be enabled via the B<bios> option.I think this last sentence is implicit in the fact that it is not the default.> Requires device_model_version=qemu-xen. > + > +=back > + > =item B<pae=BOOLEAN> >