diff --git a/src/vmm/LibVirtDriverKVM.cc b/src/vmm/LibVirtDriverKVM.cc index ee6cb0dcc5..00590abdde 100644 --- a/src/vmm/LibVirtDriverKVM.cc +++ b/src/vmm/LibVirtDriverKVM.cc @@ -628,6 +628,10 @@ 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(); @@ -795,18 +799,17 @@ int LibVirtDriver::deployment_description_kvm( } bool boot_secure = false; + string firmware; - + get_attribute(vm, nullptr, nullptr, "OS", "FIRMWARE", firmware); - - bool is_uefi = !firmware.empty() && !one_util::icasecmp(firmware, "BIOS"); - - if ( is_uefi ) + + if ( !firmware.empty() && !one_util::icasecmp(firmware, "BIOS") ) { 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"; } @@ -818,6 +821,12 @@ 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; @@ -825,13 +834,13 @@ int LibVirtDriver::deployment_description_kvm( // ------------------------------------------------------------------------ // POWER MANAGEMENT SECTION // ------------------------------------------------------------------------ - if ( is_uefi && arch != "aarch64" ) + if (!pm_defaults) { - // 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=\"no\"/>\n" - << "\t\t<suspend-to-mem enabled=\"no\"/>\n" + << "\t\t<suspend-to-disk enabled=\"" << pm_suspend_to_disk + << "\"/>\n" + << "\t\t<suspend-to-mem enabled=\"" << pm_suspend_to_mem + << "\"/>\n" << "\t</pm>\n"; } @@ -1843,7 +1852,7 @@ int LibVirtDriver::deployment_description_kvm( file << "\t\t<pae/>" << endl; } - if ( acpi && (arch != "aarch64" || is_uefi )) + if ( acpi ) { 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 91c3ed0b20..eda075ac11 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 /usr/share/AAVMF/AAVMF_CODE.fd" +OVMF_UEFIS = "/usr/share/OVMF/OVMF_CODE.fd /usr/share/OVMF/OVMF_CODE.secboot.fd" diff --git a/src/vmm_mad/remotes/kvm/kvmrc b/src/vmm_mad/remotes/kvm/kvmrc index 2b5a1523b2..d9fc393389 100644 --- a/src/vmm_mad/remotes/kvm/kvmrc +++ b/src/vmm_mad/remotes/kvm/kvmrc @@ -93,5 +93,4 @@ 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"