[libvirt] [PATCH v4 2/5] libxl: add support for PVH
Jim Fehlig
jfehlig at suse.com
Wed Oct 17 17:15:18 UTC 2018
On 10/16/18 7:23 PM, Marek Marczykowski-Górecki wrote:
> On Sat, Oct 13, 2018 at 08:46:19AM -0600, Jim Fehlig wrote:
>> I had some couch time at the start of the weekend and was finally able to
>> try using this series with virt-install. As it turns out, reporting
>> duplicate <guest> blocks for <os_type> 'xen' is not quite right. Instead we
>> will want to report the additional <machine> under the existing 'xen'
>> <guest> blocks. E.g. instead of adding a duplicate
>>
>> <guest>
>> <os_type>xen</os_type>
>> <arch name='x86_64'>
>> <wordsize>64</wordsize>
>> <emulator>/usr/lib/xen/bin/qemu-system-i386</emulator>
>> <machine>xenpvh</machine>
>> <domain type='xen'/>
>> </arch>
>> ...
>> </guest>
>>
>> we'll want to include the xenpvh machine in the existing <guest> config for xen
>>
>> <guest>
>> <os_type>xen</os_type>
>> <arch name='x86_64'>
>> <wordsize>64</wordsize>
>> <emulator>/usr/lib/xen/bin/qemu-system-i386</emulator>
>> <machine>xenpvh</machine>
>> <machine>xenpv</machine>
>> <domain type='xen'/>
>> </arch>
>> </guest>
>>
>> With this change to the capabilities reporting, virt-install works without
>> modification using
>>
>> virt-install --paravirt --machine xenpv ...
>>
>> I didn't think too hard about the best way to handle this, but the attached
>> diff is a POC hack that works with unmodified virt-install.
>
> I can get it reported this way, but it will be wrong, because <features>
> will be incorrectly reported. For example hap should be reported for
> xenpvh, but not for xenpv, so bundling them together makes it
> impossible. Similar for acpi and probably others too.
Yes, you are correct :-(. Modeling PVH has been more of a PITA than I expected.
>
> If this really needs to be reported together, I'd go with reporting
> superset of features, so os_type xen entry will have all features of PV
> and PVH.
Reporting features that cannot possibly be supported doesn't see right. Let's
summarize what we've learned thus far and see if that helps with modeling PVH.
PVH is a new xen machine type that is a hybrid of PV and HVM. Like HVM, PVH
requires hardware virtualization support. Like PV, PVH requires a modified guest
kernel, and one that is modified differently than PV (e.g. CONFIG_XEN_PVH vs
CONFIG_XEN_PV in the linux kernel). PV and PVH have different feature sets. E.g.
PVH supports HAP, ACPI, etc., but PV does not. (Perhaps another useful data
point: the long term goal of the xen community is to remove CONFIG_XEN_PV,
essentially making PVH the new PV from xen perspective, but that is obviously a
long ways out.)
Currently in libvirt, PV is modeled as VIR_DOMAIN_OSTYPE_XEN and machine
"xenpv". HVM is modeled as VIR_DOMAIN_OSTYPE_HVM and machine "xenfv". For PVH
we've considered VIR_DOMAIN_OSTYPE_XENPVH with machine "xenpvh", or simply
adding PVH as machine "xenpvh" under existing VIR_DOMAIN_OSTYPE_XEN.
I've pushed for adding a new machine "xenpvh" under existing
VIR_DOMAIN_OSTYPE_XEN with primary reason that both are OS types modified to run
on xen. Also existing tools like virt-{install,manager} know how to handle
OSTYPE_{HVM,XEN} and machines, allowing them to support PVH without (or with
minimal) modification.
Have I been narrow-minded with my "both are OS types modified to run on xen"
reasoning for using VIR_DOMAIN_OSTYPE_XEN? Should we really consider PVH a new
OSTYPE? Your reminder that PV and PVH have a different feature set hints to
modeling PVH as VIR_DOMAIN_OSTYPE_XENPVH. It is unfortunate that tools above
libvirt would have to be taught about this new OSTYPE, but that shouldn't
prevent using VIR_DOMAIN_OSTYPE_XENPVH if in fact it is the best way to model PVH.
Sadly I haven't strongly convinced myself one way or the other. I still like the
idea of reusing VIR_DOMAIN_OSTYPE_XEN and adding machine "xenpvh" since it seems
easier from an app perspective, but maybe I just need slapped and admit that PVH
is a new OSTYPE. (I'm sure you'd like to do the slapping at this point...)
Regards,
Jim
More information about the libvir-list
mailing list