diff --git a/hypervisor/bsp/uefi/efi/boot.c b/hypervisor/bsp/uefi/efi/boot.c index 75e4feb55..bf2c22ee3 100644 --- a/hypervisor/bsp/uefi/efi/boot.c +++ b/hypervisor/bsp/uefi/efi/boot.c @@ -244,7 +244,7 @@ load_sos_image(EFI_HANDLE image, CHAR16 *name, CHAR16 *cmdline) struct multiboot_mmap *mmap; struct multiboot_info *mbi; - struct acpi_table_rsdp *rsdp; + struct acpi_table_rsdp *rsdp = NULL; int i, j; diff --git a/hypervisor/bsp/uefi/uefi.c b/hypervisor/bsp/uefi/uefi.c index 0a1611283..bb654296f 100644 --- a/hypervisor/bsp/uefi/uefi.c +++ b/hypervisor/bsp/uefi/uefi.c @@ -136,8 +136,8 @@ int uefi_sw_loader(struct vm *vm, struct vcpu *vcpu) vlapic_restore(vcpu->arch_vcpu.vlapic, &uefi_lapic_regs); vcpu->entry_addr = efi_ctx->entry; - cur_context->guest_cpu_regs.regs.rcx = efi_ctx->handle; - cur_context->guest_cpu_regs.regs.rdx = efi_ctx->table; + cur_context->guest_cpu_regs.regs.rcx = (uint64_t) efi_ctx->handle; + cur_context->guest_cpu_regs.regs.rdx = (uint64_t) efi_ctx->table; /* defer irq enabling till vlapic is ready */ CPU_IRQ_ENABLE(); diff --git a/hypervisor/include/arch/x86/apicreg.h b/hypervisor/include/arch/x86/apicreg.h index 7a3216e5e..352294445 100644 --- a/hypervisor/include/arch/x86/apicreg.h +++ b/hypervisor/include/arch/x86/apicreg.h @@ -521,4 +521,9 @@ struct ioapic { #define IOAPIC_RTE_INTVEC 0x000000ff /*R/W: INT vector field*/ +#ifdef CONFIG_EFI_STUB +int sipi_from_efi_boot_service_exit(uint32_t dest, uint32_t mode, uint32_t vec); +void efi_deferred_wakeup_pcpu(int cpu_id); +#endif + #endif /* _APICREG_H_ */ diff --git a/hypervisor/include/arch/x86/cpu.h b/hypervisor/include/arch/x86/cpu.h index 300eb64d8..0c5ae4219 100644 --- a/hypervisor/include/arch/x86/cpu.h +++ b/hypervisor/include/arch/x86/cpu.h @@ -147,6 +147,8 @@ #ifndef ASSEMBLER +int cpu_find_logical_id(uint32_t lapic_id); + /**********************************/ /* EXTERNAL VARIABLES */ /**********************************/