mirror of
https://github.com/edera-dev/krata.git
synced 2025-08-04 05:31:32 +00:00
more hvm work
This commit is contained in:
@ -20,10 +20,10 @@ async fn main() -> Result<()> {
|
|||||||
backend_domid: 0,
|
backend_domid: 0,
|
||||||
name: "xenclient-test".to_string(),
|
name: "xenclient-test".to_string(),
|
||||||
max_vcpus: 1,
|
max_vcpus: 1,
|
||||||
mem_mb: 300,
|
mem_mb: 512,
|
||||||
kernel: fs::read(&kernel_image_path).await?,
|
kernel: fs::read(&kernel_image_path).await?,
|
||||||
initrd: fs::read(&initrd_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,
|
swap_console_backend: None,
|
||||||
disks: vec![],
|
disks: vec![],
|
||||||
channels: vec![],
|
channels: vec![],
|
||||||
|
@ -362,7 +362,7 @@ impl XenClient {
|
|||||||
.clone()
|
.clone()
|
||||||
.unwrap_or("xenconsoled".to_string())
|
.unwrap_or("xenconsoled".to_string())
|
||||||
.to_string(),
|
.to_string(),
|
||||||
initialized: false,
|
initialized: true,
|
||||||
},
|
},
|
||||||
&dom_path,
|
&dom_path,
|
||||||
&backend_dom_path,
|
&backend_dom_path,
|
||||||
|
@ -5,7 +5,10 @@
|
|||||||
non_snake_case,
|
non_snake_case,
|
||||||
non_upper_case_globals,
|
non_upper_case_globals,
|
||||||
unused_assignments,
|
unused_assignments,
|
||||||
unused_mut
|
unused_mut,
|
||||||
|
static_mut_refs,
|
||||||
|
clippy::single_match,
|
||||||
|
clippy::unnecessary_cast
|
||||||
)]
|
)]
|
||||||
|
|
||||||
use std::ptr::addr_of_mut;
|
use std::ptr::addr_of_mut;
|
||||||
|
@ -288,7 +288,7 @@ impl X86PvhPlatform {
|
|||||||
}
|
}
|
||||||
ptr = ptr
|
ptr = ptr
|
||||||
.add(size_of::<HvmSaveDescriptor>())
|
.add(size_of::<HvmSaveDescriptor>())
|
||||||
.add((*sd).length as usize) as *mut u8;
|
.add((*sd).length as usize);
|
||||||
}
|
}
|
||||||
std::ptr::null_mut()
|
std::ptr::null_mut()
|
||||||
}
|
}
|
||||||
@ -630,7 +630,7 @@ impl BootSetupPlatform for X86PvhPlatform {
|
|||||||
|
|
||||||
let mut start_info_size = size_of::<HvmStartInfo>();
|
let mut start_info_size = size_of::<HvmStartInfo>();
|
||||||
start_info_size += domain.cmdline.len() + 1;
|
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?);
|
self.start_info_segment = Some(domain.alloc_segment(0, start_info_size as u64).await?);
|
||||||
|
|
||||||
let pt = domain
|
let pt = domain
|
||||||
@ -657,7 +657,10 @@ impl BootSetupPlatform for X86PvhPlatform {
|
|||||||
)
|
)
|
||||||
.await?;
|
.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);
|
domain.store_mfn = special_pfn(SPECIALPAGE_XENSTORE);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -673,9 +676,16 @@ impl BootSetupPlatform for X86PvhPlatform {
|
|||||||
.start_info_segment
|
.start_info_segment
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.ok_or_else(|| Error::GenericError("start_info_segment missing".to_string()))?;
|
.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 ptr = domain
|
||||||
let byte_slice =
|
.phys
|
||||||
unsafe { slice::from_raw_parts_mut(ptr as *mut u8, X86_PAGE_SIZE as usize) };
|
.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);
|
byte_slice.fill(0);
|
||||||
let info = ptr as *mut HvmStartInfo;
|
let info = ptr as *mut HvmStartInfo;
|
||||||
unsafe {
|
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 {
|
unsafe extern "C" fn acpi_v2p(ctxt: *mut acpi_ctxt, v: *mut c_void) -> libc::c_ulong {
|
||||||
let ctx = (*ctxt).ptr as *mut AcpiBuildContext;
|
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)]
|
#[repr(C)]
|
||||||
|
@ -228,7 +228,9 @@ CONFIG_CHECKPOINT_RESTORE=y
|
|||||||
CONFIG_SCHED_AUTOGROUP=y
|
CONFIG_SCHED_AUTOGROUP=y
|
||||||
CONFIG_RELAY=y
|
CONFIG_RELAY=y
|
||||||
CONFIG_BLK_DEV_INITRD=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_GZIP=y
|
||||||
CONFIG_RD_BZIP2=y
|
CONFIG_RD_BZIP2=y
|
||||||
CONFIG_RD_LZMA=y
|
CONFIG_RD_LZMA=y
|
||||||
@ -236,6 +238,14 @@ CONFIG_RD_XZ=y
|
|||||||
CONFIG_RD_LZO=y
|
CONFIG_RD_LZO=y
|
||||||
CONFIG_RD_LZ4=y
|
CONFIG_RD_LZ4=y
|
||||||
CONFIG_RD_ZSTD=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_BOOT_CONFIG is not set
|
||||||
CONFIG_INITRAMFS_PRESERVE_MTIME=y
|
CONFIG_INITRAMFS_PRESERVE_MTIME=y
|
||||||
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
||||||
@ -495,7 +505,9 @@ CONFIG_HOTPLUG_CPU=y
|
|||||||
# CONFIG_COMPAT_VDSO is not set
|
# CONFIG_COMPAT_VDSO is not set
|
||||||
# CONFIG_LEGACY_VSYSCALL_XONLY is not set
|
# CONFIG_LEGACY_VSYSCALL_XONLY is not set
|
||||||
CONFIG_LEGACY_VSYSCALL_NONE=y
|
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_MODIFY_LDT_SYSCALL=y
|
||||||
# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
|
# CONFIG_STRICT_SIGALTSTACK_SIZE is not set
|
||||||
CONFIG_HAVE_LIVEPATCH=y
|
CONFIG_HAVE_LIVEPATCH=y
|
||||||
|
Reference in New Issue
Block a user