[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2 of 3] Enable UEFI BIOS(OVMF) support in Xen-unstable HVM
On 22/07/2011 17:27, "Bei Guan" <gbtju85@xxxxxxxxx> wrote: > # HG changeset patch > # User gbtju85@xxxxxxxxx > # > > Xen: Expose hvmloader/bios in libxl and xend. > > Exposes the hvmloader/bios xenstore key in libxl and xend, > so firmware loaded can be overriden (choices: rombios, seabios > ovmf-ia32, ovmf-x64). There's already some BIOS-configuration logic in libxl (see libxl__domain_bios()) which I would assume you hook up to. Ian Campbell would know better -- he wrote it. I'd probably prefer to let xend grow obsolete quietly than add further features. Noone's maintaining it to fix it up if new features break it. No strong opinion on that though, it's up to the tools maintainers. -- Keir > Sign-off-by: Bei Guan <gbtju85@xxxxxxxxx> > > diff -r e298ce67777e tools/libxl/libxl.idl > --- a/tools/libxl/libxl.idl Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/libxl/libxl.idl Fri Jul 22 23:00:20 2011 +0800 > @@ -137,6 +137,7 @@ > > libxl_domain_create_info = Struct("domain_create_info",[ > ("hvm", bool), > + ("hvmbios", string), > ("hap", bool), > ("oos", bool), > ("ssidref", uint32), > diff -r e298ce67777e tools/libxl/libxl_create.c > --- a/tools/libxl/libxl_create.c Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/libxl/libxl_create.c Fri Jul 22 23:00:20 2011 +0800 > @@ -377,6 +377,10 @@ > if (info->poolname) > xs_write(ctx->xsh, t, libxl__sprintf(gc, "%s/pool_name", vm_path), > info->poolname, strlen(info->poolname)); > > + if (info->hvmbios){ > + xs_write(ctx->xsh, t, libxl__sprintf(gc, "%s/hvmloader/bios", > dom_path), info->hvmbios, strlen(info->hvmbios)); > + } > + > libxl__xs_writev(gc, t, dom_path, info->xsdata); > libxl__xs_writev(gc, t, libxl__sprintf(gc, "%s/platform", dom_path), > info->platformdata); > > diff -r e298ce67777e tools/libxl/libxl_dm.c > --- a/tools/libxl/libxl_dm.c Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/libxl/libxl_dm.c Fri Jul 22 23:00:20 2011 +0800 > @@ -783,6 +783,7 @@ > char *vm_path; > char **pass_stuff; > const char *dm; > + char *custom_bios; > > if (info->device_model_stubdomain) { > libxl_device_vfb vfb; > @@ -814,10 +815,13 @@ > goto out; > } > > - path = libxl__sprintf(gc, "/local/domain/%d/hvmloader", info->domid); > - xs_mkdir(ctx->xsh, XBT_NULL, path); > - libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), > - "%s", libxl__domain_bios(gc, info)); > + custom_bios = libxl__xs_read(gc, XBT_NULL, libxl__sprintf(gc, > "/local/domain/%d/hvmloader/bios", info->domid)); > + if (!custom_bios) { > + path = libxl__sprintf(gc, "/local/domain/%d/hvmloader", info->domid); > + xs_mkdir(ctx->xsh, XBT_NULL, path); > + libxl__xs_write(gc, XBT_NULL, libxl__sprintf(gc, "%s/bios", path), > + "%s", libxl__domain_bios(gc, info)); > + } > > path = libxl__sprintf(gc, "/local/domain/0/device-model/%d", > info->domid); > xs_mkdir(ctx->xsh, XBT_NULL, path); > diff -r e298ce67777e tools/libxl/xl_cmdimpl.c > --- a/tools/libxl/xl_cmdimpl.c Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/libxl/xl_cmdimpl.c Fri Jul 22 23:00:20 2011 +0800 > @@ -553,6 +553,10 @@ > } > } > > + if (!xlu_cfg_get_string (config, "hvmbios", &buf)){ > + c_info->hvmbios = strdup(buf); > + } > + > c_info->hvm = 0; > if (!xlu_cfg_get_string (config, "builder", &buf) && > !strncmp(buf, "hvm", strlen(buf))) > diff -r e298ce67777e tools/python/xen/xend/XendConfig.py > --- a/tools/python/xen/xend/XendConfig.py Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/python/xen/xend/XendConfig.py Fri Jul 22 23:00:20 2011 +0800 > @@ -153,6 +153,7 @@ > 'fdb': str, > 'keymap': str, > 'isa' : int, > + 'hvmbios' : str, > 'localtime': int, > 'monitor': int, > 'monitor_path': str, > diff -r e298ce67777e tools/python/xen/xend/XendDomainInfo.py > --- a/tools/python/xen/xend/XendDomainInfo.py Mon Jul 18 14:38:31 2011 > +0100 > +++ b/tools/python/xen/xend/XendDomainInfo.py Fri Jul 22 23:00:20 2011 > +0800 > @@ -1789,6 +1789,10 @@ > if self.info.has_key('security_label'): > f('security_label', self.info <http://self.info> > ['security_label']) > > + hvm = self.info.is_hvm() > + if hvm and self.info <http://self.info> ["platform"].get("hvmbios") > is not None: > + f('hvmloader/bios', self.info <http://self.info> > ["platform"].get("hvmbios")) > + > to_store.update(self._vcpuDomDetails()) > > log.debug("Storing domain details: %s", scrub_password(to_store)) > diff -r e298ce67777e tools/python/xen/xm/create.py > --- a/tools/python/xen/xm/create.py Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/python/xen/xm/create.py Fri Jul 22 23:00:20 2011 +0800 > @@ -168,6 +168,10 @@ > fn=set_value, default=None, > use="Path to kernel image.") > > +gopts.var('hvmbios', val='HVMBIOS', > + fn=set_value, default=None, > + use="Type of firmware to load in HVM mode") > + > gopts.var('ramdisk', val='FILE', > fn=set_value, default='', > use="Path to ramdisk.") > @@ -1084,7 +1088,7 @@ > 'device_model', 'display', > 'fda', 'fdb', > 'gfx_passthru', 'guest_os_type', > - 'hap', 'hpet', > + 'hap', 'hpet', 'hvmbios', > 'isa', > 'keymap', > 'localtime', > @@ -1143,7 +1147,7 @@ > 'on_reboot', 'on_crash', 'features', 'on_xend_start', > 'on_xend_stop', 'target', 'cpuid', 'cpuid_check', > 'machine_address_size', 'suppress_spurious_page_faults', > - 'description']) > + 'description' ]) > > vcpu_conf() > if vals.uuid is not None: > diff -r e298ce67777e tools/python/xen/xm/xenapi_create.py > --- a/tools/python/xen/xm/xenapi_create.py Mon Jul 18 14:38:31 2011 +0100 > +++ b/tools/python/xen/xm/xenapi_create.py Fri Jul 22 23:00:20 2011 +0800 > @@ -1090,6 +1090,7 @@ > 'fda', > 'fdb', > 'keymap', > + 'hvmbios', > 'isa', > 'localtime', > 'monitor', > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |