nova/nova/virt
Adam Spiers 8e5d6767bb Enable booting of libvirt guests with AMD SEV memory encryption
Track compute node inventory for the new MEM_ENCRYPTION_CONTEXT
resource class (added in os-resource-classes 0.4.0) which represents
the number of guests a compute node can host concurrently with memory
encrypted at the hardware level.

This serves as a "master switch" for enabling SEV functionality, since
all the code which takes advantage of the presence of this inventory
in order to boot SEV-enabled guests is already in place, but none of
it gets used until the inventory is non-zero.

A discrete inventory is required because on AMD SEV-capable hardware,
the memory controller has a fixed number of slots for holding
encryption keys, one per guest.  Typical early hardware only has 15
slots, thereby limiting the number of SEV guests which can be run
concurrently to 15.  nova needs to track how many slots are available
and used in order to avoid attempting to exceed that limit in the
hardware.

Work is in progress to allow QEMU and libvirt to expose the number of
slots available on SEV hardware; however until this is finished and
released, it will not be possible for nova to programatically detect
the correct value with which to populate the MEM_ENCRYPTION_CONTEXT
inventory.  So as a stop-gap, populate the inventory using the value
manually provided by the cloud operator in a new configuration option
CONF.libvirt.num_memory_encrypted_guests.

Since this commit effectively enables SEV, also add all the relevant
documentation as planned in the AMD SEV spec[0]:

- Add operation.boot-encrypted-vm to the KVM hypervisor feature matrix.

- Update the KVM section of the Configuration Guide.

- Update the flavors section of the User Guide.

- Add a release note.

[0] http://specs.openstack.org/openstack/nova-specs/specs/train/approved/amd-sev-libvirt-support.html#documentation-impact

blueprint: amd-sev-libvirt-support
Change-Id: I659cb77f12a38a4d2fb118530ebb9de88d2ed30d
2019-09-10 13:59:02 +01:00
..
disk [Trivial]Remove unused helper get_allocated_disk_size 2019-08-28 13:36:52 +08:00
hyperv Add power_on kwarg to ComputeDriver.spawn() method 2019-08-27 14:26:33 -04:00
image libvirt: virtuozzo instance resize support 2016-06-28 22:13:49 +03:00
ironic Merge "Fix rebuild of baremetal instance when vm_state is ERROR" 2019-09-07 23:08:19 +00:00
libvirt Enable booting of libvirt guests with AMD SEV memory encryption 2019-09-10 13:59:02 +01:00
powervm Add power_on kwarg to ComputeDriver.spawn() method 2019-08-27 14:26:33 -04:00
vmwareapi Remove unused methods 2019-09-04 15:26:59 +09:00
xenapi Remove unused methods 2019-09-04 15:26:59 +09:00
zvm Add power_on kwarg to ComputeDriver.spawn() method 2019-08-27 14:26:33 -04:00
__init__.py Declare nova.virt namespace 2016-04-28 15:01:44 +00:00
arch.py Added ability to configure default architecture for ImagePropertiesFilter 2018-05-14 16:55:13 -04:00
block_device.py Merge "hacking: Resolve W503 (line break occurred before a binary operator)" 2019-06-26 01:31:16 +00:00
configdrive.py Skip existing VMs when hosts apply force_config_drive 2019-05-22 21:02:16 +00:00
driver.py Add power_on kwarg to ComputeDriver.spawn() method 2019-08-27 14:26:33 -04:00
event.py Port binding based on events during live migration 2018-07-19 09:09:55 -04:00
fake.py Add power_on kwarg to ComputeDriver.spawn() method 2019-08-27 14:26:33 -04:00
firewall.py Merge "Remove translation of log messages" 2017-06-20 21:16:49 +00:00
hardware.py Apply SEV-specific guest config when SEV is required 2019-09-10 13:59:02 +01:00
imagecache.py Rename ImageCacheManager._list_base_images to _scan_base_images 2016-05-26 14:45:42 +01:00
images.py Improve libvirt image and snapshot handling 2019-03-05 12:18:34 -06:00
interfaces.template
netutils.py libvirt: add vf_trusted field for network metadata 2018-05-30 15:11:59 -04:00
osinfo.py Stop sending bad values from libosinfo to libvirt 2019-07-04 15:30:51 +01:00
storage_users.py Remove translation of log messages 2017-06-13 11:20:28 +07:00
virtapi.py Add VirtAPI.update_compute_provider_status 2019-07-02 11:45:40 -04:00