more hvm work

This commit is contained in:
Alex Zenla
2024-05-07 17:56:06 -07:00
parent 7dfd38fca9
commit 29b3f91e60
5 changed files with 38 additions and 13 deletions

View File

@ -20,10 +20,10 @@ async fn main() -> Result<()> {
backend_domid: 0,
name: "xenclient-test".to_string(),
max_vcpus: 1,
mem_mb: 300,
mem_mb: 512,
kernel: fs::read(&kernel_image_path).await?,
initrd: fs::read(&initrd_path).await?,
cmdline: "debug elevator=noop earlyprintk=xen".to_string(),
cmdline: "console=hvc0 debug earlyprintk=xen,keep loglevel=10".to_string(),
swap_console_backend: None,
disks: vec![],
channels: vec![],

View File

@ -362,7 +362,7 @@ impl XenClient {
.clone()
.unwrap_or("xenconsoled".to_string())
.to_string(),
initialized: false,
initialized: true,
},
&dom_path,
&backend_dom_path,

View File

@ -5,7 +5,10 @@
non_snake_case,
non_upper_case_globals,
unused_assignments,
unused_mut
unused_mut,
static_mut_refs,
clippy::single_match,
clippy::unnecessary_cast
)]
use std::ptr::addr_of_mut;

View File

@ -288,7 +288,7 @@ impl X86PvhPlatform {
}
ptr = ptr
.add(size_of::<HvmSaveDescriptor>())
.add((*sd).length as usize) as *mut u8;
.add((*sd).length as usize);
}
std::ptr::null_mut()
}
@ -630,7 +630,7 @@ impl BootSetupPlatform for X86PvhPlatform {
let mut start_info_size = size_of::<HvmStartInfo>();
start_info_size += domain.cmdline.len() + 1;
start_info_size += size_of::<E820Entry>() * memmap.len();
start_info_size += size_of::<HvmMemmapTableEntry>() * memmap.len();
self.start_info_segment = Some(domain.alloc_segment(0, start_info_size as u64).await?);
let pt = domain
@ -657,7 +657,10 @@ impl BootSetupPlatform for X86PvhPlatform {
)
.await?;
domain.consoles.push((0, special_pfn(SPECIALPAGE_CONSOLE)));
let evtchn = domain.call.evtchn_alloc_unbound(domain.domid, 0).await?;
domain
.consoles
.push((evtchn, special_pfn(SPECIALPAGE_CONSOLE)));
domain.store_mfn = special_pfn(SPECIALPAGE_XENSTORE);
Ok(())
@ -673,9 +676,16 @@ impl BootSetupPlatform for X86PvhPlatform {
.start_info_segment
.as_ref()
.ok_or_else(|| Error::GenericError("start_info_segment missing".to_string()))?;
let ptr = domain.phys.pfn_to_ptr(start_info_segment.pfn, 1).await?;
let byte_slice =
unsafe { slice::from_raw_parts_mut(ptr as *mut u8, X86_PAGE_SIZE as usize) };
let ptr = domain
.phys
.pfn_to_ptr(start_info_segment.pfn, start_info_segment.pages)
.await?;
let byte_slice = unsafe {
slice::from_raw_parts_mut(
ptr as *mut u8,
(self.page_size() * start_info_segment.pages) as usize,
)
};
byte_slice.fill(0);
let info = ptr as *mut HvmStartInfo;
unsafe {
@ -886,7 +896,7 @@ unsafe extern "C" fn acpi_mem_free(_: *mut acpi_ctxt, _: *mut libc::c_void, _: u
unsafe extern "C" fn acpi_v2p(ctxt: *mut acpi_ctxt, v: *mut c_void) -> libc::c_ulong {
let ctx = (*ctxt).ptr as *mut AcpiBuildContext;
(*ctx).guest_start + (v.sub((*ctx).buf as usize) as u64)
(*ctx).guest_start + (v as u64 - ((*ctx).buf as u64))
}
#[repr(C)]

View File

@ -228,7 +228,9 @@ CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_AUTOGROUP=y
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_INITRAMFS_SOURCE="/var/lib/krata/guest/initrd.cpio"
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
CONFIG_RD_LZMA=y
@ -236,6 +238,14 @@ CONFIG_RD_XZ=y
CONFIG_RD_LZO=y
CONFIG_RD_LZ4=y
CONFIG_RD_ZSTD=y
CONFIG_INITRAMFS_COMPRESSION_GZIP=y
# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set
# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set
# CONFIG_INITRAMFS_COMPRESSION_XZ is not set
# CONFIG_INITRAMFS_COMPRESSION_LZO is not set
# CONFIG_INITRAMFS_COMPRESSION_LZ4 is not set
# CONFIG_INITRAMFS_COMPRESSION_ZSTD is not set
# CONFIG_INITRAMFS_COMPRESSION_NONE is not set
# CONFIG_BOOT_CONFIG is not set
CONFIG_INITRAMFS_PRESERVE_MTIME=y
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
@ -495,7 +505,9 @@ CONFIG_HOTPLUG_CPU=y
# CONFIG_COMPAT_VDSO is not set
# CONFIG_LEGACY_VSYSCALL_XONLY is not set
CONFIG_LEGACY_VSYSCALL_NONE=y
# CONFIG_CMDLINE_BOOL is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="earlyprintk=xen,keep debug loglevel=10"
CONFIG_CMDLINE_OVERRIDE=y
CONFIG_MODIFY_LDT_SYSCALL=y
# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
CONFIG_HAVE_LIVEPATCH=y