Searched refs:vcpu (Results 1 - 25 of 116) sorted by relevance

12345

/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/x86/
H A Dvmcs.c19 void vm_vmcs_init_guest(vm_vcpu_t *vcpu) argument
21 vm_vmcs_write(vcpu->vcpu.cptr, VMX_GUEST_ES_SELECTOR, 2 << 3);
22 vm_vmcs_write(vcpu->vcpu.cptr, VMX_GUEST_CS_SELECTOR, BIT(3));
23 vm_vmcs_write(vcpu->vcpu.cptr, VMX_GUEST_SS_SELECTOR, 2 << 3);
24 vm_vmcs_write(vcpu->vcpu.cptr, VMX_GUEST_DS_SELECTOR, 2 << 3);
25 vm_vmcs_write(vcpu
[all...]
H A Dvmexit.h11 /*typedef int(*vmexit_handler_ptr)(vm_vcpu_t *vcpu);*/
14 int vm_cpuid_handler(vm_vcpu_t *vcpu);
15 int vm_ept_violation_handler(vm_vcpu_t *vcpu);
16 int vm_wrmsr_handler(vm_vcpu_t *vcpu);
17 int vm_rdmsr_handler(vm_vcpu_t *vcpu);
18 int vm_io_instruction_handler(vm_vcpu_t *vcpu);
19 int vm_hlt_handler(vm_vcpu_t *vcpu);
20 int vm_vmx_timer_handler(vm_vcpu_t *vcpu);
21 int vm_cr_access_handler(vm_vcpu_t *vcpu);
22 int vm_vmcall_handler(vm_vcpu_t *vcpu);
[all...]
H A Dhalt.c21 int vm_hlt_handler(vm_vcpu_t *vcpu) argument
23 if (!(vm_guest_state_get_rflags(vcpu->vcpu_arch.guest_state, vcpu->vcpu.cptr) & BIT(9))) {
24 printf("vcpu %d is halted forever :(\n", vcpu->vcpu_id);
27 if (vm_apic_has_interrupt(vcpu) == -1) {
29 vcpu->vcpu_arch.guest_state->virt.interrupt_halt = 1;
32 vm_guest_exit_next_instruction(vcpu->vcpu_arch.guest_state, vcpu
[all...]
H A Ddebug.c25 void vm_print_guest_context(vm_vcpu_t *vcpu) argument
28 if (vm_vmcs_read(vcpu->vcpu.cptr, VMX_DATA_EXIT_INTERRUPT_INFO, &data_exit_info) ||
29 vm_vmcs_read(vcpu->vcpu.cptr, VMX_DATA_EXIT_INTERRUPT_ERROR, &data_exit_error)) {
35 vm_guest_exit_get_reason(vcpu->vcpu_arch.guest_state), vm_guest_exit_get_qualification(vcpu->vcpu_arch.guest_state),
36 vm_guest_exit_get_int_len(vcpu->vcpu_arch.guest_state), data_exit_info, data_exit_error);
38 vm_guest_exit_get_physical(vcpu->vcpu_arch.guest_state), vm_guest_state_get_rflags(vcpu
[all...]
H A Dinterrupt.c26 static void resume_guest(vm_vcpu_t *vcpu) argument
29 uint32_t state = vm_guest_state_get_control_ppc(vcpu->vcpu_arch.guest_state);
31 vm_guest_state_set_control_ppc(vcpu->vcpu_arch.guest_state, state);
34 static void inject_irq(vm_vcpu_t *vcpu, int irq) argument
38 vm_guest_state_set_control_entry(vcpu->vcpu_arch.guest_state, BIT(31) | irq);
41 void vm_inject_exception(vm_vcpu_t *vcpu, int exception, int has_error, uint32_t error_code) argument
45 uint32_t int_control = vm_guest_state_get_control_entry(vcpu->vcpu_arch.guest_state);
50 vm_guest_state_set_entry_exception_error_code(vcpu->vcpu_arch.guest_state, error_code);
52 vm_guest_state_set_control_entry(vcpu->vcpu_arch.guest_state, BIT(31) | exception | 3 << 8 | (has_error ? BIT(11) : 0));
55 void wait_for_guest_ready(vm_vcpu_t *vcpu) argument
63 can_inject(vm_vcpu_t *vcpu) argument
80 vm_have_pending_interrupt(vm_vcpu_t *vcpu) argument
107 vm_pending_interrupt_handler(vm_vcpu_t *vcpu) argument
126 vm_start_ap_vcpu(vm_vcpu_t *vcpu, unsigned int sipi_vector) argument
157 vm_vcpu_t *vcpu = vm->vcpus[BOOT_VCPU]; local
164 vm_vcpu_accept_interrupt(vm_vcpu_t *vcpu) argument
[all...]
H A Dinterrupt.h13 void wait_for_guest_ready(vm_vcpu_t *vcpu);
16 void vm_inject_exception(vm_vcpu_t *vcpu, int exception, int has_error, uint32_t error_code);
18 /* Start an AP vcpu after a sipi with the requested vector */
19 void vm_start_ap_vcpu(vm_vcpu_t *vcpu, unsigned int sipi_vector);
21 /* Got interrupt(s) from PIC, propagate to relevant vcpu lapic */
24 /* inject an interrupt from the lapic on the vcpu, whether or not it is in an exit */
25 void vm_vcpu_accept_interrupt(vm_vcpu_t *vcpu);
28 void vm_have_pending_interrupt(vm_vcpu_t *vcpu);
H A Dept.c28 void print_ept_violation(vm_vcpu_t *vcpu) argument
32 vm_vmcs_read(vcpu->vcpu.cptr, VMX_DATA_GUEST_LINEAR_ADDRESS, &linear_address);
36 printf(" Guest-Physical address 0x%x.\n", vm_guest_exit_get_physical(vcpu->vcpu_arch.guest_state));
37 printf(" Instruction pointer 0x%x.\n", vm_guest_state_get_eip(vcpu->vcpu_arch.guest_state));
41 static int unhandled_memory_fault(vm_t *vm, vm_vcpu_t *vcpu, uint32_t guest_phys, size_t size) argument
43 memory_fault_result_t fault_result = vm->mem.unhandled_mem_fault_handler(vm, vcpu, guest_phys, size,
47 print_ept_violation(vcpu);
51 vm_guest_exit_next_instruction(vcpu->vcpu_arch.guest_state, vcpu
58 vm_ept_violation_handler(vm_vcpu_t *vcpu) argument
[all...]
H A Dguest_x86_context.c15 int vm_set_thread_context(vm_vcpu_t *vcpu, seL4_VCPUContext context) argument
17 MACHINE_STATE_DIRTY(vcpu->vcpu_arch.guest_state->machine.context);
18 vcpu->vcpu_arch.guest_state->machine.context = context;
22 int vm_set_thread_context_reg(vm_vcpu_t *vcpu, vcpu_context_reg_t reg, uint32_t value) argument
24 MACHINE_STATE_DIRTY(vcpu->vcpu_arch.guest_state->machine.context);
25 (&vcpu->vcpu_arch.guest_state->machine.context.eax)[reg] = value;
29 int vm_get_thread_context(vm_vcpu_t *vcpu, seL4_VCPUContext *context) argument
31 if (IS_MACHINE_STATE_UNKNOWN(vcpu->vcpu_arch.guest_state->machine.context)) {
35 *context = vcpu->vcpu_arch.guest_state->machine.context;
39 int vm_get_thread_context_reg(vm_vcpu_t *vcpu, unsigne argument
49 vm_set_vmcs_field(vm_vcpu_t *vcpu, seL4_Word field, uint32_t value) argument
96 vm_get_vmcs_field(vm_vcpu_t *vcpu, seL4_Word field, uint32_t *value) argument
145 vm_vmcs_read(seL4_CPtr vcpu, seL4_Word field, unsigned int *value) argument
163 vm_vmcs_write(seL4_CPtr vcpu, seL4_Word field, seL4_Word value) argument
178 vm_sync_guest_context(vm_vcpu_t *vcpu) argument
[all...]
H A Dguest_vcpu_fault_arch.c14 seL4_Word get_vcpu_fault_address(vm_vcpu_t *vcpu) argument
16 return vm_guest_exit_get_physical(vcpu->vcpu_arch.guest_state);
19 seL4_Word get_vcpu_fault_ip(vm_vcpu_t *vcpu) argument
21 return vm_guest_state_get_eip(vcpu->vcpu_arch.guest_state);
24 seL4_Word get_vcpu_fault_data(vm_vcpu_t *vcpu) argument
29 vm_decode_ept_violation(vcpu, &reg, &imm, &size);
32 vm_get_thread_context_reg(vcpu, vcpu_reg, &data);
36 size_t get_vcpu_fault_size(vm_vcpu_t *vcpu) argument
41 vm_decode_ept_violation(vcpu, &reg, &imm, &size);
45 seL4_Word get_vcpu_fault_data_mask(vm_vcpu_t *vcpu) argument
68 is_vcpu_read_fault(vm_vcpu_t *vcpu) argument
74 set_vcpu_fault_data(vm_vcpu_t *vcpu, seL4_Word data) argument
84 advance_vcpu_fault(vm_vcpu_t *vcpu) argument
89 restart_vcpu_fault(vm_vcpu_t *vcpu) argument
[all...]
H A Dvmcs.h13 int vm_vmcs_read(seL4_CPtr vcpu, seL4_Word field, unsigned int *value);
14 int vm_vmcs_write(seL4_CPtr vcpu, seL4_Word field, seL4_Word value);
15 void vm_vmcs_init_guest(vm_vcpu_t *vcpu);
H A Dvm.c45 static void vm_resume(vm_vcpu_t *vcpu) argument
47 vm_sync_guest_vmcs_state(vcpu);
48 if (vcpu->vcpu_arch.guest_state->exit.in_exit && !vcpu->vcpu_arch.guest_state->virt.interrupt_halt) {
50 assert(vcpu->vcpu_arch.guest_state->exit.in_exit);
51 vm_sync_guest_context(vcpu);
53 assert(vm_guest_state_no_modified(vcpu->vcpu_arch.guest_state));
54 vm_guest_state_invalidate_all(vcpu->vcpu_arch.guest_state);
55 vcpu->vcpu_arch.guest_state->exit.in_exit = 0;
60 static int handle_vm_exit(vm_vcpu_t *vcpu) argument
87 vm_update_guest_state_from_interrupt(vm_vcpu_t *vcpu, seL4_Word *msg) argument
94 vm_update_guest_state_from_fault(vm_vcpu_t *vcpu, seL4_Word *msg) argument
121 vcpu_start(vm_vcpu_t *vcpu) argument
130 vm_vcpu_t *vcpu = vm->vcpus[BOOT_VCPU]; local
[all...]
H A Dvmx_timer.c23 int vm_vmx_timer_handler(vm_vcpu_t *vcpu) argument
26 vm_print_guest_context(vcpu);
28 int err = vm_vmcs_write(vcpu->vcpu.cptr, VMX_GUEST_VMX_PREEMPTION_TIMER_VALUE, CONFIG_LIB_VM_VMX_TIMER_TIMEOUT);
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/include/sel4vm/
H A Dguest_vcpu_fault.h16 * The libsel4vm VCPU fault interface provides a set of useful methods to query and configure vcpu objects that
17 * have faulted during execution. This interface is commonly leveraged by VMM's to process a vcpu fault and handle
22 * @function get_vcpu_fault_address(vcpu)
23 * Get current fault address of vcpu
24 * @param {vm_vcpu_t *} vcpu Handle to vcpu
25 * @return Current fault address of vcpu
27 seL4_Word get_vcpu_fault_address(vm_vcpu_t *vcpu);
30 * @function get_vcpu_fault_ip(vcpu)
31 * Get instruction pointer of current vcpu faul
[all...]
H A Dguest_irq_controller.h20 typedef void (*irq_ack_fn_t)(vm_vcpu_t *vcpu, int irq, void *cookie);
23 * @function vm_inject_irq(vcpu, irq)
25 * @param {vm_vcpu_t *} vcpu Handle to the VCPU
29 int vm_inject_irq(vm_vcpu_t *vcpu, int irq);
32 * @function vm_set_irq_level(vcpu, irq, irq_level)
34 * @param {vm_vcpu_t} vcpu Handle to the VCPU
39 int vm_set_irq_level(vm_vcpu_t *vcpu, int irq, int irq_level);
42 * @function vm_register_irq(vcpu, irq, ack_fn, cookie)
44 * @param {vm_vcpu_t *} vcpu Handle to the VCPU
50 int vm_register_irq(vm_vcpu_t *vcpu, in
[all...]
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/arm/
H A Dguest_vcpu_fault_arch.c11 seL4_Word get_vcpu_fault_address(vm_vcpu_t *vcpu) argument
13 fault_t *fault = vcpu->vcpu_arch.fault;
17 seL4_Word get_vcpu_fault_ip(vm_vcpu_t *vcpu) argument
19 fault_t *fault = vcpu->vcpu_arch.fault;
23 seL4_Word get_vcpu_fault_data(vm_vcpu_t *vcpu) argument
25 fault_t *fault = vcpu->vcpu_arch.fault;
29 seL4_Word get_vcpu_fault_data_mask(vm_vcpu_t *vcpu) argument
31 fault_t *fault = vcpu->vcpu_arch.fault;
35 size_t get_vcpu_fault_size(vm_vcpu_t *vcpu) argument
37 fault_t *fault = vcpu
41 is_vcpu_read_fault(vm_vcpu_t *vcpu) argument
47 set_vcpu_fault_data(vm_vcpu_t *vcpu, seL4_Word data) argument
54 advance_vcpu_fault(vm_vcpu_t *vcpu) argument
60 restart_vcpu_fault(vm_vcpu_t *vcpu) argument
[all...]
H A Dmem_abort.h11 int vm_guest_mem_abort_handler(vm_vcpu_t *vcpu);
H A Dguest_arm_context.c14 int vm_set_thread_context(vm_vcpu_t *vcpu, seL4_UserContext context) argument
16 if (!fault_handled(vcpu->vcpu_arch.fault)) {
19 fault_set_ctx(vcpu->vcpu_arch.fault, &context);
22 seL4_CPtr tcb = vm_get_vcpu_tcb(vcpu);
32 int vm_set_thread_context_reg(vm_vcpu_t *vcpu, unsigned int reg, uintptr_t value) argument
34 seL4_CPtr tcb = vm_get_vcpu_tcb(vcpu);
35 if (!fault_handled(vcpu->vcpu_arch.fault)) {
38 regs = fault_get_ctx(vcpu->vcpu_arch.fault);
58 int vm_get_thread_context(vm_vcpu_t *vcpu, seL4_UserContext *context) argument
60 if (!fault_handled(vcpu
79 vm_get_thread_context_reg(vm_vcpu_t *vcpu, unsigned int reg, uintptr_t *value) argument
100 vm_set_arm_vcpu_reg(vm_vcpu_t *vcpu, seL4_Word reg, uintptr_t value) argument
110 vm_get_arm_vcpu_reg(vm_vcpu_t *vcpu, seL4_Word reg, uintptr_t *value) argument
[all...]
H A Dsyscalls.h15 int vm_syscall_handler(vm_vcpu_t *vcpu);
/seL4-test-master/projects/sel4_projects_libs/libsel4vmmplatsupport/src/arch/arm/
H A Dvcpu_fault.h11 static inline int unknown_vcpu_exception_handler(vm_vcpu_t *vcpu, uint32_t hsr) argument
16 static inline int ignore_exception(vm_vcpu_t *vcpu, uint32_t hsr) argument
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/arch/x86/processor/
H A Dcr.c32 static int vm_cr_set_cr0(vm_vcpu_t *vcpu, unsigned int value) argument
40 if ((value & X86_CR0_PG) && !(vcpu->vcpu_arch.guest_state->virt.cr.cr0_shadow & X86_CR0_PG)) {
43 unsigned int new_mask = vcpu->vcpu_arch.guest_state->virt.cr.cr4_mask & ~(X86_CR4_PSE | X86_CR4_PAE);
44 unsigned int cr4_value = vm_guest_state_get_cr4(vcpu->vcpu_arch.guest_state, vcpu->vcpu.cptr);
46 cr4_value = apply_cr_bits(cr4_value, new_mask ^ vcpu->vcpu_arch.guest_state->virt.cr.cr4_mask,
47 vcpu->vcpu_arch.guest_state->virt.cr.cr4_shadow);
49 vcpu->vcpu_arch.guest_state->virt.cr.cr4_mask = new_mask;
50 err = vm_vmcs_write(vcpu
85 vm_cr_set_cr3(vm_vcpu_t *vcpu, unsigned int value) argument
95 vm_cr_get_cr3(vm_vcpu_t *vcpu, unsigned int *value) argument
106 vm_cr_set_cr4(vm_vcpu_t *vcpu, unsigned int value) argument
128 vm_cr_clts(vm_vcpu_t *vcpu) argument
135 vm_cr_lmsw(vm_vcpu_t *vcpu, unsigned int value) argument
155 vm_cr_access_handler(vm_vcpu_t *vcpu) argument
[all...]
H A Dmsr.c23 int vm_rdmsr_handler(vm_vcpu_t *vcpu) argument
28 if (vm_get_thread_context_reg(vcpu, VCPU_CONTEXT_ECX, &msr_no)) {
70 data = vm_lapic_get_base_msr(vcpu);
76 vm_inject_exception(vcpu, 13, 1, 0);
82 vm_set_thread_context_reg(vcpu, VCPU_CONTEXT_EAX, (uint32_t)(data & 0xffffffff));
83 vm_set_thread_context_reg(vcpu, VCPU_CONTEXT_EDX, (uint32_t)(data >> 32));
84 vm_guest_exit_next_instruction(vcpu->vcpu_arch.guest_state, vcpu->vcpu.cptr);
91 int vm_wrmsr_handler(vm_vcpu_t *vcpu) argument
[all...]
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/src/
H A Dguest_vcpu_fault.c9 seL4_Word emulate_vcpu_fault(vm_vcpu_t *vcpu, seL4_Word data) argument
12 byte_shift = (get_vcpu_fault_address(vcpu) & 0x3) * 8;
13 mask = get_vcpu_fault_data_mask(vcpu);
14 fault_data = get_vcpu_fault_data(vcpu);
15 if (is_vcpu_read_fault(vcpu)) {
/seL4-test-master/kernel/src/drivers/timer/
H A Dgeneric_timer.c48 #include <arch/object/vcpu.h>
49 #include <armv/vcpu.h>
60 static void save_virt_timer(vcpu_t *vcpu) argument
63 vcpu_save_reg(vcpu, seL4_VCPUReg_CNTV_CTL);
67 vcpu_save_reg(vcpu, seL4_VCPUReg_CNTV_CVAL);
68 vcpu_save_reg(vcpu, seL4_VCPUReg_CNTVOFF);
69 vcpu_save_reg(vcpu, seL4_VCPUReg_CNTKCTL_EL1);
74 vcpu_write_reg(vcpu, seL4_VCPUReg_CNTV_CVALhigh, (word_t)(cval >> 32));
75 vcpu_write_reg(vcpu, seL4_VCPUReg_CNTV_CVALlow, (word_t)cval);
76 vcpu_write_reg(vcpu, seL4_VCPUReg_CNTVOFFhig
85 restore_virt_timer(vcpu_t *vcpu) argument
[all...]
/seL4-test-master/projects/sel4_projects_libs/libsel4vm/arch_include/x86/sel4vm/arch/
H A Dguest_x86_context.h11 * The libsel4vm x86 context interface provides a set of useful getters and setters on x86 vcpu thread contexts.
12 * This interface is commonly leveraged by VMM's to initialise a vcpu state, process a vcpu fault and
30 * @function vm_set_thread_context(vcpu, context)
32 * @param {vm_vcpu_t *} vcpu Handle to the vcpu
36 int vm_set_thread_context(vm_vcpu_t *vcpu, seL4_VCPUContext context);
39 * @function vm_set_thread_context_reg(vcpu, reg, value)
41 * @param {vm_vcpu_t *} vcpu Handle to the vcpu
[all...]
/seL4-test-master/projects/sel4_projects_libs/libsel4vmmplatsupport/arch_include/arm/sel4vmmplatsupport/arch/
H A Dguest_vcpu_fault.h13 * The arm guest vcpu fault interface provides a module for registering
14 * and processing vcpu faults. The module can be used such that it directly hooks
15 * into an ARM VMMs unhandled vcpu callback interface or wrapped over by another driver. This
16 * module particularly provides useful handlers to vcpu faults relating to SMC and MSR/MRS instructions.
19 typedef int (*vcpu_exception_handler_fn)(vm_vcpu_t *vcpu, uint32_t hsr);
22 * @function vmm_handle_arm_vcpu_exception(vcpu, hsr, cookie)
23 * Handle a vcpu exception given the HSR value - Syndrome information
24 * @param {vm_vcpu_t *} vcpu A handle to the faulting VCPU
29 int vmm_handle_arm_vcpu_exception(vm_vcpu_t *vcpu, uint32_t hsr, void *cookie);
33 * Register a handler to a vcpu exceptio
[all...]

Completed in 66 milliseconds

12345