From 197c33651669ca88c1b0658cb800c90640b2cdc8 Mon Sep 17 00:00:00 2001 From: Shuaiyi Zhang Date: Fri, 12 May 2023 15:14:55 +0800 Subject: [PATCH] Dragonball: use LinuxBootConfigurator::write_bootparams to writes the boot parameters into guest memory. Fixes: #6813 Signed-off-by: Shuaiyi Zhang --- src/dragonball/src/vm/x86_64.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/dragonball/src/vm/x86_64.rs b/src/dragonball/src/vm/x86_64.rs index 04cf4605c9..9593e82761 100644 --- a/src/dragonball/src/vm/x86_64.rs +++ b/src/dragonball/src/vm/x86_64.rs @@ -7,7 +7,6 @@ // found in the THIRD-PARTY file. use std::convert::TryInto; -use std::mem; use std::ops::Deref; use dbs_address_space::AddressSpace; @@ -16,8 +15,9 @@ use dbs_utils::epoll_manager::EpollManager; use dbs_utils::time::TimestampUs; use kvm_bindings::{kvm_irqchip, kvm_pit_config, kvm_pit_state2, KVM_PIT_SPEAKER_DUMMY}; use linux_loader::cmdline::Cmdline; +use linux_loader::configurator::{linux::LinuxBootConfigurator, BootConfigurator, BootParams}; use slog::info; -use vm_memory::{Address, Bytes, GuestAddress, GuestAddressSpace, GuestMemory}; +use vm_memory::{Address, GuestAddress, GuestAddressSpace, GuestMemory}; use crate::address_space_manager::{GuestAddressSpaceImpl, GuestMemoryImpl}; use crate::error::{Error, Result, StartMicroVmError}; @@ -110,15 +110,11 @@ fn configure_system( } } - let zero_page_addr = GuestAddress(layout::ZERO_PAGE_START); - guest_mem - .checked_offset(zero_page_addr, mem::size_of::()) - .ok_or(Error::ZeroPagePastRamEnd)?; - guest_mem - .write_obj(params, zero_page_addr) - .map_err(|_| Error::ZeroPageSetup)?; - - Ok(()) + LinuxBootConfigurator::write_bootparams( + &BootParams::new(¶ms, GuestAddress(layout::ZERO_PAGE_START)), + guest_mem, + ) + .map_err(|_| Error::ZeroPageSetup) } impl Vm {