diff --git a/src/vmm/LibVirtDriverKVM.cc b/src/vmm/LibVirtDriverKVM.cc index 00590abdde..ee6cb0dcc5 100644 --- a/src/vmm/LibVirtDriverKVM.cc +++ b/src/vmm/LibVirtDriverKVM.cc @@ -628,10 +628,6 @@ int LibVirtDriver::deployment_description_kvm( std::string sd_bus; std::string disk_bus; - bool pm_defaults = true; - std::string pm_suspend_to_disk = "yes"; - std::string pm_suspend_to_mem = "yes"; - string vm_xml; Nebula& nd = Nebula::instance(); @@ -799,17 +795,18 @@ int LibVirtDriver::deployment_description_kvm( } bool boot_secure = false; - string firmware; - + get_attribute(vm, nullptr, nullptr, "OS", "FIRMWARE", firmware); - - if ( !firmware.empty() && !one_util::icasecmp(firmware, "BIOS") ) + + bool is_uefi = !firmware.empty() && !one_util::icasecmp(firmware, "BIOS"); + + if ( is_uefi ) { string firmware_secure = "no"; - - if ( get_attribute(vm, nullptr, nullptr, "OS", "FIRMWARE_SECURE", boot_secure) && - boot_secure) + + if ( get_attribute(vm, nullptr, nullptr, "OS", "FIRMWARE_SECURE", + boot_secure) && boot_secure) { firmware_secure = "yes"; } @@ -821,12 +818,6 @@ int LibVirtDriver::deployment_description_kvm( file << "\t\t<nvram>" << vm->get_system_dir() << "/" << vm->get_name() << "_VARS.fd" << "</nvram>\n"; - - // Suspend to mem and disk disabled to avoid boot problems with UEFI - // firmware - pm_defaults = false; - pm_suspend_to_disk = "no"; - pm_suspend_to_mem = "no"; } file << "\t</os>" << endl; @@ -834,13 +825,13 @@ int LibVirtDriver::deployment_description_kvm( // ------------------------------------------------------------------------ // POWER MANAGEMENT SECTION // ------------------------------------------------------------------------ - if (!pm_defaults) + if ( is_uefi && arch != "aarch64" ) { + // Suspend to mem and disk disabled to avoid boot problems with UEFI + // firmware in x86 arch file << "\t<pm>\n" - << "\t\t<suspend-to-disk enabled=\"" << pm_suspend_to_disk - << "\"/>\n" - << "\t\t<suspend-to-mem enabled=\"" << pm_suspend_to_mem - << "\"/>\n" + << "\t\t<suspend-to-disk enabled=\"no\"/>\n" + << "\t\t<suspend-to-mem enabled=\"no\"/>\n" << "\t</pm>\n"; } @@ -1852,7 +1843,7 @@ int LibVirtDriver::deployment_description_kvm( file << "\t\t<pae/>" << endl; } - if ( acpi ) + if ( acpi && (arch != "aarch64" || is_uefi )) { file << "\t\t<acpi/>" << endl; } diff --git a/src/vmm_mad/exec/vmm_exec_kvm.conf b/src/vmm_mad/exec/vmm_exec_kvm.conf index eda075ac11..91c3ed0b20 100644 --- a/src/vmm_mad/exec/vmm_exec_kvm.conf +++ b/src/vmm_mad/exec/vmm_exec_kvm.conf @@ -90,4 +90,4 @@ SPICE_OPTIONS = " # # Open Virtual Machine Firware (UEFI Firmware) # List of valid firmware available to users (full path in the hosts) -OVMF_UEFIS = "/usr/share/OVMF/OVMF_CODE.fd /usr/share/OVMF/OVMF_CODE.secboot.fd" +OVMF_UEFIS = "/usr/share/OVMF/OVMF_CODE.fd /usr/share/OVMF/OVMF_CODE.secboot.fd /usr/share/AAVMF/AAVMF_CODE.fd" diff --git a/src/vmm_mad/remotes/kvm/kvmrc b/src/vmm_mad/remotes/kvm/kvmrc index d9fc393389..2b5a1523b2 100644 --- a/src/vmm_mad/remotes/kvm/kvmrc +++ b/src/vmm_mad/remotes/kvm/kvmrc @@ -93,4 +93,5 @@ DEFAULT_ATTACH_NIC_MODEL=virtio #DEFAULT_ATTACH_NIC_FILTER=clean-traffic # Virtual Machine Firmware path to the NVRAM file +# OVMF_NVRAM="/usr/share/AAVMF/AAVMF_VARS.fd" for aarch64 guests OVMF_NVRAM="/usr/share/OVMF/OVMF_VARS.fd"