diff --git a/hypervisor/arch/x86/guest/vm.c b/hypervisor/arch/x86/guest/vm.c index 32ca89a03..08432b43e 100644 --- a/hypervisor/arch/x86/guest/vm.c +++ b/hypervisor/arch/x86/guest/vm.c @@ -4,12 +4,21 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#include -#include -#include +#include +#include +#include +#include +#include #include +#include #include #include +#include +#include +#include +#include +#include +#include vm_sw_loader_t vm_sw_loader; diff --git a/hypervisor/include/arch/x86/guest/trusty.h b/hypervisor/include/arch/x86/guest/trusty.h index aa27c6c8b..72f8b7406 100644 --- a/hypervisor/include/arch/x86/guest/trusty.h +++ b/hypervisor/include/arch/x86/guest/trusty.h @@ -6,6 +6,7 @@ #ifndef TRUSTY_H_ #define TRUSTY_H_ +#include #define BOOTLOADER_SEED_MAX_ENTRIES 10U #define RPMB_MAX_PARTITION_NUMBER 6U diff --git a/hypervisor/include/arch/x86/guest/vcpu.h b/hypervisor/include/arch/x86/guest/vcpu.h index 3001bf975..27f0e3770 100644 --- a/hypervisor/include/arch/x86/guest/vcpu.h +++ b/hypervisor/include/arch/x86/guest/vcpu.h @@ -52,6 +52,11 @@ #include #include +#include +#include +#include +#include +#include /** * @brief vcpu diff --git a/hypervisor/include/arch/x86/guest/vcpuid.h b/hypervisor/include/arch/x86/guest/vcpuid.h index 2cf42538a..6de1b89b1 100644 --- a/hypervisor/include/arch/x86/guest/vcpuid.h +++ b/hypervisor/include/arch/x86/guest/vcpuid.h @@ -7,6 +7,19 @@ #ifndef VCPUID_H_ #define VCPUID_H_ +#define CPUID_CHECK_SUBLEAF (1U << 0U) +#define MAX_VM_VCPUID_ENTRIES 64U +struct vcpuid_entry { + uint32_t eax; + uint32_t ebx; + uint32_t ecx; + uint32_t edx; + uint32_t leaf; + uint32_t subleaf; + uint32_t flags; + uint32_t padding; +}; + int32_t set_vcpuid_entries(struct acrn_vm *vm); void guest_cpuid(struct acrn_vcpu *vcpu, uint32_t *eax, uint32_t *ebx, diff --git a/hypervisor/include/arch/x86/guest/vlapic.h b/hypervisor/include/arch/x86/guest/vlapic.h index f3c97315a..16bc0391f 100644 --- a/hypervisor/include/arch/x86/guest/vlapic.h +++ b/hypervisor/include/arch/x86/guest/vlapic.h @@ -31,6 +31,8 @@ #define VLAPIC_H #include +#include +#include /** diff --git a/hypervisor/include/arch/x86/guest/vm.h b/hypervisor/include/arch/x86/guest/vm.h index 90ebe5a5e..6f66ce6f6 100644 --- a/hypervisor/include/arch/x86/guest/vm.h +++ b/hypervisor/include/arch/x86/guest/vm.h @@ -13,9 +13,18 @@ #ifndef ASSEMBLER +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include -#include #include #include @@ -75,14 +84,6 @@ struct vm_pm_info { /* VM guest types */ #define VM_LINUX_GUEST 0x02 #define VM_MONO_GUEST 0x01 - -enum vpic_wire_mode { - VPIC_WIRE_INTR = 0, - VPIC_WIRE_LAPIC, - VPIC_WIRE_IOAPIC, - VPIC_WIRE_NULL -}; - /* Enumerated type for VM states */ enum vm_state { VM_STATE_UNKNOWN = 0, @@ -115,20 +116,6 @@ struct vm_arch { /* reference to virtual platform to come here (as needed) */ } __aligned(PAGE_SIZE); - -#define CPUID_CHECK_SUBLEAF (1U << 0U) -#define MAX_VM_VCPUID_ENTRIES 64U -struct vcpuid_entry { - uint32_t eax; - uint32_t ebx; - uint32_t ecx; - uint32_t edx; - uint32_t leaf; - uint32_t subleaf; - uint32_t flags; - uint32_t padding; -}; - struct acrn_vm { struct vm_arch arch_vm; /* Reference to this VM's arch information */ struct vm_hw_info hw; /* Reference to this VM's HW information */ diff --git a/hypervisor/include/arch/x86/guest/vmcs.h b/hypervisor/include/arch/x86/guest/vmcs.h index 3a645b1c4..71c3922ec 100644 --- a/hypervisor/include/arch/x86/guest/vmcs.h +++ b/hypervisor/include/arch/x86/guest/vmcs.h @@ -11,6 +11,7 @@ #define VM_FAIL -1 #ifndef ASSEMBLER +#include #define VMX_VMENTRY_FAIL 0x80000000U diff --git a/hypervisor/include/arch/x86/hv_arch.h b/hypervisor/include/arch/x86/hv_arch.h index 7b1fbfbee..237ac03e0 100644 --- a/hypervisor/include/arch/x86/hv_arch.h +++ b/hypervisor/include/arch/x86/hv_arch.h @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include diff --git a/hypervisor/include/arch/x86/mmu.h b/hypervisor/include/arch/x86/mmu.h index 5b13b48f4..b117b8200 100644 --- a/hypervisor/include/arch/x86/mmu.h +++ b/hypervisor/include/arch/x86/mmu.h @@ -53,6 +53,7 @@ /* IA32E Paging constants */ #define IA32E_REF_MASK ((get_cpu_info())->physical_address_mask) +struct acrn_vcpu; static inline uint64_t round_page_up(uint64_t addr) { return (((addr + (uint64_t)PAGE_SIZE) - 1UL) & PAGE_MASK); diff --git a/hypervisor/include/arch/x86/timer.h b/hypervisor/include/arch/x86/timer.h index 0d8623fe1..24bb43648 100644 --- a/hypervisor/include/arch/x86/timer.h +++ b/hypervisor/include/arch/x86/timer.h @@ -7,6 +7,8 @@ #ifndef TIMER_H #define TIMER_H +#include + /** * @brief Timer * diff --git a/hypervisor/include/arch/x86/vtd.h b/hypervisor/include/arch/x86/vtd.h index 3f5828198..87a2f19a5 100644 --- a/hypervisor/include/arch/x86/vtd.h +++ b/hypervisor/include/arch/x86/vtd.h @@ -6,6 +6,7 @@ #ifndef VTD_H #define VTD_H +#include /* * Intel IOMMU register specification per version 1.0 public spec. */ diff --git a/hypervisor/include/dm/vioapic.h b/hypervisor/include/dm/vioapic.h index 83405f44a..22633a16c 100644 --- a/hypervisor/include/dm/vioapic.h +++ b/hypervisor/include/dm/vioapic.h @@ -38,6 +38,7 @@ */ #include +#include #define VIOAPIC_BASE 0xFEC00000UL #define VIOAPIC_SIZE 4096UL diff --git a/hypervisor/include/dm/vpic.h b/hypervisor/include/dm/vpic.h index d3f60a83d..50a55474a 100644 --- a/hypervisor/include/dm/vpic.h +++ b/hypervisor/include/dm/vpic.h @@ -95,6 +95,13 @@ #define NR_VPIC_PINS_PER_CHIP 8U #define NR_VPIC_PINS_TOTAL 16U +enum vpic_wire_mode { + VPIC_WIRE_INTR = 0, + VPIC_WIRE_LAPIC, + VPIC_WIRE_IOAPIC, + VPIC_WIRE_NULL +}; + enum vpic_trigger { EDGE_TRIGGER, LEVEL_TRIGGER