nova/releasenotes/notes/allow-disabling-cpu-flags-cc861a3bdfffadf8.yaml
Kashyap Chamarthy bcd6b42047 libvirt: Allow disabling CPU flags via cpu_model_extra_flags
Parse a comma-separated list of CPU flags from
`[libvirt]/cpu_model_extra_flags`.  If the CPU flag starts with '+',
enable the feature in Nova guest CPU guest XML, or if it starts with
'-', disable the feature.  If neither '+' nor '-' is specified, enable
the flag.  For example, on a compute node that is running hardware (e.g.
an Intel server that supports TSX) and virtualization software that
supports the given CPU flags, if a user provides this config:

    [libvirt]
    cpu_mode = custom
    cpu_models = Cascadelake-Server
    cpu_model_extra_flags = -hle, -rtm, +ssbd, mtrr

Then Nova should generate this CPU for the guest:

     <cpu match='exact'>
       <model fallback='forbid'>Cascadelake-Server</model>
       <vendor>Intel</vendor>
       <feature policy='require' name='ssbd'/>
       <feature policy='require' name='mtrr'/>
       <feature policy='disable' name='hle'/>
       <feature policy='disable' name='rtm'/>
     </cpu>

This ability to selectively disable CPU flags lets you avoid any CPU
flags that need to be disabled for any number of reasons.  E.g. disable
a CPU flag that is a potential security risk, or disable one that causes
a performance penalty.

blueprint: allow-disabling-cpu-flags

Change-Id: I2ef7c5bef87bd64c087f3b136c2faac9a3865f10
Signed-off-by: Patrick Uiterwijk <patrick@puiterwijk.org>
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
2021-03-04 17:40:06 +01:00

14 lines
577 B
YAML

---
features:
- |
The libvirt driver now allows explicitly disabling CPU flags for
guests via the ``[libvirt]cpu_model_extra_flags`` config attribute.
This is possible via a ``+`` / ``-`` notation, where if you specify
a CPU flag prefixed with a ``+`` sign (without quotes), it will be
enabled for the guest, while a prefix of ``-`` will disable it. If
neither ``+`` nor ``-`` is specified, the CPU flag will be enabled,
which is the default behaviour.
Refer to the ``[libvirt]cpu_model_extra_flags`` documentation for
more information.