2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2015, The V3VEE Project <http://www.v3vee.org>
11 * All rights reserved.
13 * Author: Peter Dinda <pdinda@northwestern.edu>
15 * This is free software. You are permitted to use,
16 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
26 #include <palacios/vmm_types.h>
30 uint32_t first_hrt_core;
31 uint64_t first_hrt_gpa;
32 struct v3_cfg_file *hrt_file;
33 uint64_t hrt_entry_addr;
34 enum { HRT_BLOB, HRT_ELF64, HRT_MBOOT2, HRT_MBOOT64 } hrt_type;
39 uint64_t last_boot_start;
47 int v3_init_hvm_vm(struct v3_vm_info *vm, struct v3_xml *config);
48 int v3_deinit_hvm_vm(struct v3_vm_info *vm);
51 int v3_init_hvm_core(struct guest_info *core);
52 int v3_deinit_hvm_core(struct guest_info *core);
55 uint64_t v3_get_hvm_ros_memsize(struct v3_vm_info *vm);
56 uint64_t v3_get_hvm_hrt_memsize(struct v3_vm_info *vm);
57 int v3_is_hvm_ros_mem_gpa(struct v3_vm_info *vm, addr_t gpa);
58 int v3_is_hvm_hrt_mem_gpa(struct v3_vm_info *vm, addr_t gpa);
60 uint32_t v3_get_hvm_ros_cores(struct v3_vm_info *vm);
61 uint32_t v3_get_hvm_hrt_cores(struct v3_vm_info *vm);
62 int v3_is_hvm_ros_core(struct guest_info *core);
63 int v3_is_hvm_hrt_core(struct guest_info *core);
66 int v3_hvm_should_deliver_ipi(struct guest_info *src, struct guest_info *dest);
67 void v3_hvm_find_apics_seen_by_core(struct guest_info *core, struct v3_vm_info *vm,
68 uint32_t *start_apic, uint32_t *num_apics);
71 int v3_setup_hvm_vm_for_boot(struct v3_vm_info *vm);
72 int v3_setup_hvm_hrt_core_for_boot(struct guest_info *core);
74 int v3_handle_hvm_reset(struct guest_info *core);
76 #endif /* ! __V3VEE__ */