libvirt: Stop unconditionally enabling evmcs

In I008841988547573878c4e06e82f0fa55084e51b5 we started enabling a
bunch of libvirt enlightenments for Windows unconditionally. Turns
out, the `evmcs` enlightenment only works on Intel hosts, and we broke
the ability to run Windows guests on AMD machines. Until we become
smarter about conditionally enabling evmcs (with something like traits
for host CPU features), just stop enabling it at all.

Change-Id: I2ff4fdecd9dc69de283f0e52e07df1aeaf0a9048
Closes-bug: 2009280
This commit is contained in:
Artom Lifshitz 2023-10-31 22:52:50 -04:00
parent da1c40dae9
commit 86a35e97d2
3 changed files with 12 additions and 2 deletions

View File

@ -27972,7 +27972,10 @@ class LibvirtDriverTestCase(test.NoDBTestCase, TraitsComparisonMixin):
self.assertTrue(hv.reenlightenment)
self.assertTrue(hv.tlbflush)
self.assertTrue(hv.ipi)
self.assertTrue(hv.evmcs)
# NOTE(artom) evmcs only works on Intel hosts, so we can't enable it
# unconditionally. Until we become smarter about it, just don't enable
# it at all. See bug 2009280.
self.assertFalse(hv.evmcs)
class LibvirtVolumeUsageTestCase(test.NoDBTestCase):

View File

@ -6234,7 +6234,6 @@ class LibvirtDriver(driver.ComputeDriver):
hv.reenlightenment = True
hv.tlbflush = True
hv.ipi = True
hv.evmcs = True
# NOTE(kosamara): Spoofing the vendor_id aims to allow the nvidia
# driver to work on windows VMs. At the moment, the nvidia driver

View File

@ -0,0 +1,8 @@
---
fixes:
- |
Bug 2009280 has been fixed by no longer enabling the evmcs enlightenment in
the libvirt driver. evmcs only works on Intel CPUs, and domains with that
enlightenment cannot be started on AMD hosts. There is a possible future
feature to enable support for generating this enlightenment only when
running on Intel hosts.