mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-05 21:15:45 +00:00
vmm: Allow PVH boot with initramfs
We can now allow guests that specify an initramfs to boot using the PVH boot protocol. Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
This commit is contained in:
parent
0fc3936448
commit
7134f3129f
@ -539,27 +539,18 @@ impl Vm {
|
||||
})
|
||||
}
|
||||
None => {
|
||||
// Assume by default Linux boot protocol is used and not PVH
|
||||
let mut entry_point_addr: GuestAddress = entry_addr.kernel_load;
|
||||
let entry_point_addr: GuestAddress;
|
||||
let boot_prot: BootProtocol;
|
||||
|
||||
let boot_prot = if entry_addr.pvh_entry_addr.is_some() {
|
||||
// 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
|
||||
if let Some(pvh_entry_addr) = entry_addr.pvh_entry_addr {
|
||||
// Use the PVH kernel entry point to boot the guest
|
||||
entry_point_addr = pvh_entry_addr;
|
||||
boot_prot = BootProtocol::PvhBoot;
|
||||
} else {
|
||||
// entry_addr.pvh_entry_addr field is safe to unwrap here
|
||||
entry_point_addr = entry_addr.pvh_entry_addr.unwrap();
|
||||
BootProtocol::PvhBoot
|
||||
// Use the Linux 64-bit boot protocol
|
||||
entry_point_addr = entry_addr.kernel_load;
|
||||
boot_prot = BootProtocol::LinuxBoot;
|
||||
}
|
||||
} else {
|
||||
BootProtocol::LinuxBoot
|
||||
};
|
||||
|
||||
arch::configure_system(
|
||||
&mem,
|
||||
|
Loading…
Reference in New Issue
Block a user