[libvirt] [PATCH 2/3] libxl: add support for CPUID features policy

Marek Marczykowski-Górecki marmarek at invisiblethingslab.com
Thu Jun 29 23:07:19 UTC 2017

On Thu, Jun 29, 2017 at 10:21:11AM +0100, Joao Martins wrote:
> On 06/29/2017 09:39 AM, Marek Marczykowski-Górecki wrote:
> > On Thu, Jun 29, 2017 at 10:04:42AM +0200, Jiri Denemark wrote:
> >> On Thu, Jun 29, 2017 at 03:11:42 +0200, Marek Marczykowski-Górecki wrote:
> >>> Set CPU features in appropriate libxl structure.
> >>> Use old "xend" syntax, because it allow control over any bit and libvirt
> >>> already have API for translating features to appropriate cpuid bits. And
> >>> also features naming in libxl do not match the one of libvirt in
> >>> multiple cases.
> >>
> >> How does the new syntax look like? 
> > 
> > "host,tm=0,sse3=0"
> > 
> >> And would it be actually better? 
> > 
> > Maybe? But the new syntax use different names for many features (like
> > pni vs sse3, or sep vs sysenter), so it would require some ugly
> > translation table...
> > What I would really like here, is to get list of bits specified with
> > <feature ...>, _without_ those defined by <model>. And maybe even
> > without requiring <model> to be set at all.
> > Another misleading thing about interpreting <model> here is, it doesn't
> > mask out features not really present in that CPU. So, you get a CPU
> > based on <model> but with many additional features.
> > 
> Two suggestions (the first one to hopefully complement current discussion):
> 1) Maybe there could be a driver config item to allow the Xend syntax (since
> it's a rather fragile facility that allows all bits controlled)? Or else prefer
> first libxl format through the translation table of features and use xend format
> for this driver config such that non-supported features in libxl format fallback
> to xend format instead? Probably this allows for best of both worlds (better
> safety with libxl-format) yet higher flexibility/controllability with xend
> format. Also I am not sure we should support models either - since our CPUID
> view is restricted to host-{passthrough,model} only.

IIUC setting CPU model is required to get CPUID bits from libvirt cpu
API (cpuEncode function). If there is some other way, that would be
great. But if that would require changing cpu libvirt internal API, I
think just a fallback doesn't worth it.

> 2) perhaps part of the code in this patch could be better placed at
> xenconfig/xen_{xl,xm}.c since it's really two different formats of config? This
> would also allow supporting Xen <-> Xml config file conversions.

Ok, I'll look into it.

Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20170630/21bca85b/attachment-0001.sig>

More information about the libvir-list mailing list