diff --git a/nova/tests/unit/virt/libvirt/test_host.py b/nova/tests/unit/virt/libvirt/test_host.py index 344c1001299..9f6ccb6b062 100644 --- a/nova/tests/unit/virt/libvirt/test_host.py +++ b/nova/tests/unit/virt/libvirt/test_host.py @@ -1342,6 +1342,21 @@ def test_unsupported_without_feature(self, fake_exists): def test_unsupported_with_feature(self, fake_exists): self.assertFalse(self.host.supports_amd_sev) + def test_non_x86_architecture(self): + fake_caps_xml = ''' + + + cef19ce0-0ca2-11df-855d-b19fbce37686 + + aarch64 + + +''' + with mock.patch.object(fakelibvirt.virConnect, 'getCapabilities', + return_value=fake_caps_xml): + self.host._set_amd_sev_support() + self.assertFalse(self.host.supports_amd_sev) + class TestLibvirtSEVSupported(TestLibvirtSEV): """Libvirt driver tests for when AMD SEV support is present.""" diff --git a/nova/virt/libvirt/host.py b/nova/virt/libvirt/host.py index a56b4395e67..378c6a3b023 100644 --- a/nova/virt/libvirt/host.py +++ b/nova/virt/libvirt/host.py @@ -51,6 +51,7 @@ from nova import context as nova_context from nova import exception from nova.i18n import _ +from nova.objects import fields from nova import rpc from nova import utils from nova.virt import event as virtevent @@ -1273,6 +1274,10 @@ def supports_amd_sev(self): def _set_amd_sev_support(self): self._supports_amd_sev = False + caps = self.get_capabilities() + if caps.host.cpu.arch != fields.Architecture.X86_64: + return + if not self._kernel_supports_amd_sev(): LOG.info("kernel doesn't support AMD SEV") self._supports_amd_sev = False