nova/nova/conf
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
..
__init__.py xenapi: Remove driver and tests 2020-09-11 14:09:06 +01:00
api.py nova-net: Remove final references to nova-network 2020-01-08 13:54:12 +00:00
availability_zone.py Default AZ for instance if cross_az_attach=False and checking from API 2019-10-31 10:08:46 -04:00
base.py Ensure config regexes match the entire string 2019-02-13 08:16:45 -05:00
cache.py conf: Make list->dict conversion more specific 2016-09-14 12:10:29 +00:00
cinder.py Default AZ for instance if cross_az_attach=False and checking from API 2019-10-31 10:08:46 -04:00
compute.py Disallow CONF.compute.max_disk_devices_to_attach = 0 2021-01-28 18:34:02 +00:00
conductor.py conf: Remove '[conductor] topic' opt 2018-03-12 13:26:08 +00:00
configdrive.py conf: Rename 'configuration drive' to 'config drive' 2019-06-20 18:23:14 +01:00
console.py Fix indentation nits 2020-08-18 11:43:31 -05:00
consoleauth.py Remove nova-consoleauth 2019-07-05 15:04:47 +00:00
cyborg.py ksa auth conf and client for Cyborg access 2020-03-21 12:03:37 -07:00
database.py Remove [database]connection defaulting 2020-11-11 10:50:44 +01:00
devices.py Support different vGPU types per pGPU 2020-04-09 17:54:26 +02:00
ephemeral_storage.py Parse algorithm from cipher for ephemeral disk encryption 2017-04-26 11:19:43 -04:00
glance.py glance: Remove [glance]/allowed_direct_url_schemes 2021-01-28 12:46:57 +00:00
guestfs.py conf: Resolve Sphinx errors 2018-07-02 14:00:12 +01:00
hyperv.py hacking: Resolve W605 (invalid escape sequence) 2019-06-24 14:24:06 -05:00
imagecache.py Consolidate [image_cache] conf options 2019-11-13 11:09:03 -06:00
ironic.py Merge "Remove [ironic]api_endpoint option" 2019-05-03 21:08:38 +00:00
key_manager.py Add secret=true to fixed_key configuration parameter 2018-12-03 14:39:51 -05:00
keystone.py Use ksa adapter for keystone conf & requests 2017-11-30 22:33:01 +00:00
libvirt.py libvirt: Allow disabling CPU flags via `cpu_model_extra_flags` 2021-03-04 17:40:06 +01:00
mks.py Use URIOpt 2017-07-18 00:38:24 +00:00
netconf.py trivial: Final cleanup 2020-09-11 14:09:06 +01:00
neutron.py Add config option for neutron client retries 2020-03-19 15:25:58 +00:00
notifications.py Change the default of notification_format to unversioned 2019-06-04 10:36:45 +02:00
novnc.py Allow TLS ciphers/protocols to be configurable for console proxies 2020-02-12 15:05:22 -06:00
opts.py conf: Make list->dict conversion more specific 2016-09-14 12:10:29 +00:00
paths.py Remove unused bindir config option 2020-10-30 04:33:13 +00:00
pci.py Ignore PCI devices with 32bit domain 2020-11-16 11:16:57 +01:00
placement.py Delete the placement code 2019-04-28 20:06:15 +00:00
powervm.py Powervm configuration cleanup 2018-06-13 11:48:30 -05:00
quota.py nova-net: Remove remaining nova-network quotas 2019-12-02 17:39:23 +00:00
rdp.py Use URIOpt 2017-07-18 00:38:24 +00:00
remote_debug.py config: Explicitly register 'remote_debug' CLI opts 2020-05-07 12:35:21 +00:00
rpc.py compute: Use long_rpc_timeout in reserve_block_device_name 2019-11-26 08:50:34 +00:00
scheduler.py Add a routed networks scheduler pre-filter 2021-02-19 19:23:10 +01:00
serial_console.py hacking: Resolve W605 (invalid escape sequence) 2019-06-24 14:24:06 -05:00
service.py conf: Deprecate 'network_manager' 2018-06-22 15:04:48 +01:00
service_token.py Service token is not experimental 2017-11-21 17:36:32 +00:00
servicegroup.py conf: Use new-style choice values 2018-09-12 09:45:06 -06:00
spice.py libvirt: Remove '[vnc] keymap', '[spice] keymap' options 2020-09-02 16:55:12 +01:00
upgrade_levels.py nova-net: Kill it 2020-01-14 21:25:56 +00:00
utils.py Get auth from context for glance endpoint 2017-11-21 10:26:42 -06:00
vendordata.py Use a service account to make vendordata requests. 2017-01-26 13:39:46 +00:00
vmware.py vmware: Remove vestigial nova-network support 2019-11-29 17:20:03 +00:00
vnc.py libvirt: Remove '[vnc] keymap', '[spice] keymap' options 2020-09-02 16:55:12 +01:00
workarounds.py Reserve DISK_GB resource for the image cache 2020-05-19 17:47:50 +02:00
wsgi.py Add missing ws seperator between words 2018-11-26 23:42:18 +00:00
zvm.py z/VM Driver: Spawn and destroy function of z/VM driver 2018-07-16 11:35:11 +08:00