From 785812d976ef08d9d3ab83d7ac439ace595963b2 Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Thu, 26 Mar 2020 10:50:48 +0100 Subject: [PATCH] vmm: Fallback to legacy boot if PVH is enabled along with initramfs For now, the codebase does not support booting from initramfs with PVH boot protocol, therefore we need to fallback to the legacy boot. Signed-off-by: Sebastien Boeuf --- vmm/src/vm.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index dc46cc626..37ca54048 100755 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -513,9 +513,20 @@ impl Vm { let mut entry_point_addr: GuestAddress = entry_addr.kernel_load; let boot_prot = if entry_addr.pvh_entry_addr.is_some() { - // entry_addr.pvh_entry_addr field is safe to unwrap here - entry_point_addr = entry_addr.pvh_entry_addr.unwrap(); - BootProtocol::PvhBoot + // Handle the case where PVH is set but the user wants to + // boot an initramfs. At this point in time, our code does + // not support initramfs along with PVH, hence we make the + // code fallback to the legacy Linux boot. + if initramfs_config.is_some() { + warn!( + "PVH not supported with initramfs, falling back to legacy Linux boot" + ); + BootProtocol::LinuxBoot + } else { + // entry_addr.pvh_entry_addr field is safe to unwrap here + entry_point_addr = entry_addr.pvh_entry_addr.unwrap(); + BootProtocol::PvhBoot + } } else { BootProtocol::LinuxBoot };