diff --git a/crates/xen/xencall/src/sys.rs b/crates/xen/xencall/src/sys.rs index cc0ee48..7793b9b 100644 --- a/crates/xen/xencall/src/sys.rs +++ b/crates/xen/xencall/src/sys.rs @@ -346,6 +346,8 @@ pub struct ArchDomainConfig { pub misc_flags: u32, } +pub const X86_EMU_LAPIC: u32 = 1 << 0; + #[repr(C)] #[derive(Copy, Clone, Debug, Default)] #[cfg(target_arch = "aarch64")] diff --git a/crates/xen/xenclient/src/boot.rs b/crates/xen/xenclient/src/boot.rs index 290365c..3da8453 100644 --- a/crates/xen/xenclient/src/boot.rs +++ b/crates/xen/xenclient/src/boot.rs @@ -91,7 +91,6 @@ impl BootSetup<'_> { kernel_segment: &Option, initrd_segment: &Option, ) -> Result<()> { - self.call.set_address_size(self.domid, 64).await?; arch.meminit(self, total_pages, kernel_segment, initrd_segment) .await?; Ok(()) diff --git a/crates/xen/xenclient/src/lib.rs b/crates/xen/xenclient/src/lib.rs index 85648d5..bb039cc 100644 --- a/crates/xen/xenclient/src/lib.rs +++ b/crates/xen/xenclient/src/lib.rs @@ -31,8 +31,7 @@ use std::str::FromStr; use std::time::Duration; use uuid::Uuid; use xencall::sys::{ - CreateDomain, DOMCTL_DEV_RDM_RELAXED, XEN_DOMCTL_CDF_HAP, XEN_DOMCTL_CDF_HVM_GUEST, - XEN_DOMCTL_CDF_IOMMU, + CreateDomain, DOMCTL_DEV_RDM_RELAXED, X86_EMU_LAPIC, XEN_DOMCTL_CDF_HAP, XEN_DOMCTL_CDF_HVM_GUEST, XEN_DOMCTL_CDF_IOMMU }; use xencall::XenCall; use xenstore::{ @@ -155,15 +154,14 @@ impl XenClient { } pub async fn create(&self, config: &DomainConfig) -> Result { - let mut domain = CreateDomain { - ..Default::default() - }; + let mut domain = CreateDomain::default(); domain.max_vcpus = config.max_vcpus; if cfg!(target_arch = "aarch64") { domain.flags = XEN_DOMCTL_CDF_HVM_GUEST | XEN_DOMCTL_CDF_HAP; } else { - domain.flags = XEN_DOMCTL_CDF_IOMMU; + domain.flags = XEN_DOMCTL_CDF_HVM_GUEST | XEN_DOMCTL_CDF_HAP | XEN_DOMCTL_CDF_IOMMU; + domain.arch_domain_config.emulation_flags = X86_EMU_LAPIC; } let domid = self.call.create_domain(domain).await?; diff --git a/crates/xen/xenclient/src/x86.rs b/crates/xen/xenclient/src/x86.rs index bd84104..9f19387 100644 --- a/crates/xen/xenclient/src/x86.rs +++ b/crates/xen/xenclient/src/x86.rs @@ -762,7 +762,6 @@ impl ArchBootSetup for X86BootSetup { .as_ref() .ok_or(Error::MemorySetupFailed("page_table_segment missing"))?; let pg_pfn = page_table_segment.pfn; - let pg_mfn = setup.phys.p2m[pg_pfn as usize]; setup.phys.unmap(pg_pfn)?; setup.phys.unmap(p2m_segment.pfn)?; @@ -772,10 +771,10 @@ impl ArchBootSetup for X86BootSetup { let e820 = self.e820_sanitize(map, mem_kb, 0)?; setup.call.set_memory_map(setup.domid, e820).await?; - setup - .call - .mmuext(setup.domid, MMUEXT_PIN_L4_TABLE, pg_mfn, 0) - .await?; + // setup + // .call + // .mmuext(setup.domid, MMUEXT_PIN_L4_TABLE, pg_mfn, 0) + // .await?; Ok(()) }