lib/libvmmapi/aarch64/vmmapi_machdep.c
118
vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far)
lib/libvmmapi/aarch64/vmmapi_machdep.c
126
return (vcpu_ioctl(vcpu, VM_INJECT_EXCEPTION, &vmexc));
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
101
gdt = vm_map_gpa(vcpu->ctx, gdtbase, 0x1000);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
107
error = vm_set_desc(vcpu, VM_REG_GUEST_GDTR,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
117
error = vm_set_register(vcpu, VM_REG_GUEST_RFLAGS, rflags);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
124
error = vm_set_desc(vcpu, VM_REG_GUEST_CS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
128
error = vm_set_desc(vcpu, VM_REG_GUEST_DS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
133
error = vm_set_desc(vcpu, VM_REG_GUEST_ES,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
138
error = vm_set_desc(vcpu, VM_REG_GUEST_FS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
143
error = vm_set_desc(vcpu, VM_REG_GUEST_GS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
148
error = vm_set_desc(vcpu, VM_REG_GUEST_SS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
156
error = vm_set_desc(vcpu, VM_REG_GUEST_TR,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
162
error = vm_set_desc(vcpu, VM_REG_GUEST_LDTR, 0, 0,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
168
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
172
if ((error = vm_set_register(vcpu, VM_REG_GUEST_DS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
175
if ((error = vm_set_register(vcpu, VM_REG_GUEST_ES, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
178
if ((error = vm_set_register(vcpu, VM_REG_GUEST_FS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
181
if ((error = vm_set_register(vcpu, VM_REG_GUEST_GS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
184
if ((error = vm_set_register(vcpu, VM_REG_GUEST_SS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
188
if ((error = vm_set_register(vcpu, VM_REG_GUEST_TR, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
192
if ((error = vm_set_register(vcpu, VM_REG_GUEST_LDTR, 0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
196
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RIP, eip)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
199
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RSP, esp)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
220
vm_setup_freebsd_registers(struct vcpu *vcpu,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
230
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR0, cr0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
234
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR4, cr4)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
238
if ((error = vm_set_register(vcpu, VM_REG_GUEST_EFER, efer)))
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
242
error = vm_set_register(vcpu, VM_REG_GUEST_RFLAGS, rflags);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
249
error = vm_set_desc(vcpu, VM_REG_GUEST_CS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
255
error = vm_set_desc(vcpu, VM_REG_GUEST_DS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
260
error = vm_set_desc(vcpu, VM_REG_GUEST_ES,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
265
error = vm_set_desc(vcpu, VM_REG_GUEST_FS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
270
error = vm_set_desc(vcpu, VM_REG_GUEST_GS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
275
error = vm_set_desc(vcpu, VM_REG_GUEST_SS,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
285
error = vm_set_desc(vcpu, VM_REG_GUEST_TR, 0, 0, desc_access);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
289
error = vm_set_desc(vcpu, VM_REG_GUEST_LDTR, 0, 0,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
295
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
299
if ((error = vm_set_register(vcpu, VM_REG_GUEST_DS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
302
if ((error = vm_set_register(vcpu, VM_REG_GUEST_ES, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
305
if ((error = vm_set_register(vcpu, VM_REG_GUEST_FS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
308
if ((error = vm_set_register(vcpu, VM_REG_GUEST_GS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
311
if ((error = vm_set_register(vcpu, VM_REG_GUEST_SS, gsel)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
315
if ((error = vm_set_register(vcpu, VM_REG_GUEST_TR, 0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
319
if ((error = vm_set_register(vcpu, VM_REG_GUEST_LDTR, 0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
323
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RIP, rip)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
327
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR3, cr3)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
332
error = vm_set_desc(vcpu, VM_REG_GUEST_GDTR,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
337
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RSP, rsp)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
70
vm_setup_freebsd_registers_i386(struct vcpu *vcpu, uint32_t eip,
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
80
error = vm_get_capability(vcpu, VM_CAP_UNRESTRICTED_GUEST, &tmp);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
83
error = vm_set_capability(vcpu, VM_CAP_UNRESTRICTED_GUEST, 1);
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
88
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR0, cr0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
91
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR4, 0)) != 0)
lib/libvmmapi/amd64/vmmapi_freebsd_machdep.c
98
if ((error = vm_set_register(vcpu, VM_REG_GUEST_EFER, 0)))
lib/libvmmapi/amd64/vmmapi_machdep.c
109
error = vcpu_ioctl(vcpu, VM_SET_SEGMENT_DESCRIPTOR, &vmsegdesc);
lib/libvmmapi/amd64/vmmapi_machdep.c
114
vm_get_desc(struct vcpu *vcpu, int reg, uint64_t *base, uint32_t *limit,
lib/libvmmapi/amd64/vmmapi_machdep.c
123
error = vcpu_ioctl(vcpu, VM_GET_SEGMENT_DESCRIPTOR, &vmsegdesc);
lib/libvmmapi/amd64/vmmapi_machdep.c
133
vm_get_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *seg_desc)
lib/libvmmapi/amd64/vmmapi_machdep.c
137
error = vm_get_desc(vcpu, reg, &seg_desc->base, &seg_desc->limit,
lib/libvmmapi/amd64/vmmapi_machdep.c
143
vm_lapic_irq(struct vcpu *vcpu, int vector)
lib/libvmmapi/amd64/vmmapi_machdep.c
150
return (vcpu_ioctl(vcpu, VM_LAPIC_IRQ, &vmirq));
lib/libvmmapi/amd64/vmmapi_machdep.c
154
vm_lapic_local_irq(struct vcpu *vcpu, int vector)
lib/libvmmapi/amd64/vmmapi_machdep.c
161
return (vcpu_ioctl(vcpu, VM_LAPIC_LOCAL_IRQ, &vmirq));
lib/libvmmapi/amd64/vmmapi_machdep.c
283
vm_inject_nmi(struct vcpu *vcpu)
lib/libvmmapi/amd64/vmmapi_machdep.c
289
return (vcpu_ioctl(vcpu, VM_INJECT_NMI, &vmnmi));
lib/libvmmapi/amd64/vmmapi_machdep.c
293
vm_inject_exception(struct vcpu *vcpu, int vector, int errcode_valid,
lib/libvmmapi/amd64/vmmapi_machdep.c
303
return (vcpu_ioctl(vcpu, VM_INJECT_EXCEPTION, &exc));
lib/libvmmapi/amd64/vmmapi_machdep.c
307
vm_readwrite_kernemu_device(struct vcpu *vcpu, vm_paddr_t gpa,
lib/libvmmapi/amd64/vmmapi_machdep.c
318
rc = vcpu_ioctl(vcpu, cmd, &irp);
lib/libvmmapi/amd64/vmmapi_machdep.c
325
vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *state)
lib/libvmmapi/amd64/vmmapi_machdep.c
332
error = vcpu_ioctl(vcpu, VM_GET_X2APIC_STATE, &x2apic);
lib/libvmmapi/amd64/vmmapi_machdep.c
338
vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state)
lib/libvmmapi/amd64/vmmapi_machdep.c
346
error = vcpu_ioctl(vcpu, VM_SET_X2APIC_STATE, &x2apic);
lib/libvmmapi/amd64/vmmapi_machdep.c
421
vcpu_reset(struct vcpu *vcpu)
lib/libvmmapi/amd64/vmmapi_machdep.c
431
error = vm_set_register(vcpu, VM_REG_GUEST_RFLAGS, rflags);
lib/libvmmapi/amd64/vmmapi_machdep.c
436
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RIP, rip)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
445
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR0, cr0)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
448
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR2, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
451
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR3, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
455
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CR4, cr4)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
464
error = vm_set_desc(vcpu, VM_REG_GUEST_CS,
lib/libvmmapi/amd64/vmmapi_machdep.c
470
if ((error = vm_set_register(vcpu, VM_REG_GUEST_CS, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
479
error = vm_set_desc(vcpu, VM_REG_GUEST_SS,
lib/libvmmapi/amd64/vmmapi_machdep.c
484
error = vm_set_desc(vcpu, VM_REG_GUEST_DS,
lib/libvmmapi/amd64/vmmapi_machdep.c
489
error = vm_set_desc(vcpu, VM_REG_GUEST_ES,
lib/libvmmapi/amd64/vmmapi_machdep.c
494
error = vm_set_desc(vcpu, VM_REG_GUEST_FS,
lib/libvmmapi/amd64/vmmapi_machdep.c
499
error = vm_set_desc(vcpu, VM_REG_GUEST_GS,
lib/libvmmapi/amd64/vmmapi_machdep.c
505
if ((error = vm_set_register(vcpu, VM_REG_GUEST_SS, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
507
if ((error = vm_set_register(vcpu, VM_REG_GUEST_DS, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
509
if ((error = vm_set_register(vcpu, VM_REG_GUEST_ES, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
511
if ((error = vm_set_register(vcpu, VM_REG_GUEST_FS, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
513
if ((error = vm_set_register(vcpu, VM_REG_GUEST_GS, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
516
if ((error = vm_set_register(vcpu, VM_REG_GUEST_EFER, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
521
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RAX, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
523
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RBX, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
525
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RCX, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
527
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RDX, rdx)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
529
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RSI, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
531
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RDI, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
533
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RBP, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
535
if ((error = vm_set_register(vcpu, VM_REG_GUEST_RSP, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
537
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R8, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
539
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R9, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
541
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R10, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
543
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R11, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
545
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R12, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
547
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R13, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
549
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R14, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
551
if ((error = vm_set_register(vcpu, VM_REG_GUEST_R15, zero)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
558
error = vm_set_desc(vcpu, VM_REG_GUEST_GDTR,
lib/libvmmapi/amd64/vmmapi_machdep.c
563
error = vm_set_desc(vcpu, VM_REG_GUEST_IDTR,
lib/libvmmapi/amd64/vmmapi_machdep.c
572
error = vm_set_desc(vcpu, VM_REG_GUEST_TR, 0, 0, desc_access);
lib/libvmmapi/amd64/vmmapi_machdep.c
577
if ((error = vm_set_register(vcpu, VM_REG_GUEST_TR, sel)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
584
error = vm_set_desc(vcpu, VM_REG_GUEST_LDTR, desc_base,
lib/libvmmapi/amd64/vmmapi_machdep.c
590
if ((error = vm_set_register(vcpu, VM_REG_GUEST_LDTR, 0)) != 0)
lib/libvmmapi/amd64/vmmapi_machdep.c
593
if ((error = vm_set_register(vcpu, VM_REG_GUEST_DR6,
lib/libvmmapi/amd64/vmmapi_machdep.c
596
if ((error = vm_set_register(vcpu, VM_REG_GUEST_DR7, 0x400)) !=
lib/libvmmapi/amd64/vmmapi_machdep.c
600
if ((error = vm_set_register(vcpu, VM_REG_GUEST_INTR_SHADOW,
lib/libvmmapi/amd64/vmmapi_machdep.c
97
vm_set_desc(struct vcpu *vcpu, int reg,
lib/libvmmapi/internal.h
32
int vcpu_ioctl(struct vcpu *vcpu, u_long cmd, void *arg);
lib/libvmmapi/riscv/vmmapi_machdep.c
110
vm_inject_exception(struct vcpu *vcpu, uint64_t scause)
lib/libvmmapi/riscv/vmmapi_machdep.c
117
return (vcpu_ioctl(vcpu, VM_INJECT_EXCEPTION, &vmexc));
lib/libvmmapi/vmmapi.c
1004
vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *paging,
lib/libvmmapi/vmmapi.c
1019
error = vm_gla2gpa(vcpu, paging, gla, prot, &gpa, fault);
lib/libvmmapi/vmmapi.c
1026
va = vm_map_gpa(vcpu->ctx, gpa, n);
lib/libvmmapi/vmmapi.c
1129
vm_activate_cpu(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
1135
error = vcpu_ioctl(vcpu, VM_ACTIVATE_CPU, &ac);
lib/libvmmapi/vmmapi.c
1152
vm_suspend_cpu(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
1158
error = vcpu_ioctl(vcpu, VM_SUSPEND_CPU, &ac);
lib/libvmmapi/vmmapi.c
1163
vm_resume_cpu(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
1169
error = vcpu_ioctl(vcpu, VM_RESUME_CPU, &ac);
lib/libvmmapi/vmmapi.c
1187
vm_get_intinfo(struct vcpu *vcpu, uint64_t *info1, uint64_t *info2)
lib/libvmmapi/vmmapi.c
1193
error = vcpu_ioctl(vcpu, VM_GET_INTINFO, &vmii);
lib/libvmmapi/vmmapi.c
1202
vm_set_intinfo(struct vcpu *vcpu, uint64_t info1)
lib/libvmmapi/vmmapi.c
1209
error = vcpu_ioctl(vcpu, VM_SET_INTINFO, &vmii);
lib/libvmmapi/vmmapi.c
1216
vm_restart_instruction(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
1220
return (vcpu_ioctl(vcpu, VM_RESTART_INSTRUCTION, &arg));
lib/libvmmapi/vmmapi.c
215
struct vcpu *
lib/libvmmapi/vmmapi.c
218
struct vcpu *vcpu;
lib/libvmmapi/vmmapi.c
220
vcpu = malloc(sizeof(*vcpu));
lib/libvmmapi/vmmapi.c
221
vcpu->ctx = ctx;
lib/libvmmapi/vmmapi.c
222
vcpu->vcpuid = vcpuid;
lib/libvmmapi/vmmapi.c
223
return (vcpu);
lib/libvmmapi/vmmapi.c
227
vm_vcpu_close(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
229
free(vcpu);
lib/libvmmapi/vmmapi.c
233
vcpu_id(struct vcpu *vcpu)
lib/libvmmapi/vmmapi.c
235
return (vcpu->vcpuid);
lib/libvmmapi/vmmapi.c
736
vcpu_ioctl(struct vcpu *vcpu, u_long cmd, void *arg)
lib/libvmmapi/vmmapi.c
743
*(int *)arg = vcpu->vcpuid;
lib/libvmmapi/vmmapi.c
744
return (ioctl(vcpu->ctx->fd, cmd, arg));
lib/libvmmapi/vmmapi.c
748
vm_set_register(struct vcpu *vcpu, int reg, uint64_t val)
lib/libvmmapi/vmmapi.c
757
error = vcpu_ioctl(vcpu, VM_SET_REGISTER, &vmreg);
lib/libvmmapi/vmmapi.c
762
vm_get_register(struct vcpu *vcpu, int reg, uint64_t *ret_val)
lib/libvmmapi/vmmapi.c
770
error = vcpu_ioctl(vcpu, VM_GET_REGISTER, &vmreg);
lib/libvmmapi/vmmapi.c
776
vm_set_register_set(struct vcpu *vcpu, unsigned int count,
lib/libvmmapi/vmmapi.c
787
error = vcpu_ioctl(vcpu, VM_SET_REGISTER_SET, &vmregset);
lib/libvmmapi/vmmapi.c
792
vm_get_register_set(struct vcpu *vcpu, unsigned int count,
lib/libvmmapi/vmmapi.c
803
error = vcpu_ioctl(vcpu, VM_GET_REGISTER_SET, &vmregset);
lib/libvmmapi/vmmapi.c
808
vm_run(struct vcpu *vcpu, struct vm_run *vmrun)
lib/libvmmapi/vmmapi.c
810
return (vcpu_ioctl(vcpu, VM_RUN, vmrun));
lib/libvmmapi/vmmapi.c
854
vm_get_capability(struct vcpu *vcpu, enum vm_cap_type cap, int *retval)
lib/libvmmapi/vmmapi.c
862
error = vcpu_ioctl(vcpu, VM_GET_CAPABILITY, &vmcap);
lib/libvmmapi/vmmapi.c
868
vm_set_capability(struct vcpu *vcpu, enum vm_cap_type cap, int val)
lib/libvmmapi/vmmapi.c
876
return (vcpu_ioctl(vcpu, VM_SET_CAPABILITY, &vmcap));
lib/libvmmapi/vmmapi.c
880
vm_get_stats(struct vcpu *vcpu, struct timeval *ret_tv,
lib/libvmmapi/vmmapi.c
894
if (vcpu_ioctl(vcpu, VM_STATS, &vmstats) != 0)
lib/libvmmapi/vmmapi.c
958
vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
lib/libvmmapi/vmmapi.c
969
error = vcpu_ioctl(vcpu, VM_GLA2GPA, &gg);
lib/libvmmapi/vmmapi.c
979
vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
lib/libvmmapi/vmmapi.c
990
error = vcpu_ioctl(vcpu, VM_GLA2GPA_NOFAULT, &gg);
lib/libvmmapi/vmmapi.h
123
struct vcpu *vm_vcpu_open(struct vmctx *ctx, int vcpuid);
lib/libvmmapi/vmmapi.h
124
void vm_vcpu_close(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
125
int vcpu_id(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
135
int vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
lib/libvmmapi/vmmapi.h
138
int vm_gla2gpa_nofault(struct vcpu *vcpu,
lib/libvmmapi/vmmapi.h
149
int vm_set_desc(struct vcpu *vcpu, int reg,
lib/libvmmapi/vmmapi.h
151
int vm_get_desc(struct vcpu *vcpu, int reg,
lib/libvmmapi/vmmapi.h
153
int vm_get_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *seg_desc);
lib/libvmmapi/vmmapi.h
155
int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val);
lib/libvmmapi/vmmapi.h
156
int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval);
lib/libvmmapi/vmmapi.h
157
int vm_set_register_set(struct vcpu *vcpu, unsigned int count,
lib/libvmmapi/vmmapi.h
159
int vm_get_register_set(struct vcpu *vcpu, unsigned int count,
lib/libvmmapi/vmmapi.h
161
int vm_run(struct vcpu *vcpu, struct vm_run *vmrun);
lib/libvmmapi/vmmapi.h
169
int vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far);
lib/libvmmapi/vmmapi.h
172
int vm_inject_exception(struct vcpu *vcpu, uint64_t scause);
lib/libvmmapi/vmmapi.h
180
int vm_inject_exception(struct vcpu *vcpu, int vector,
lib/libvmmapi/vmmapi.h
182
int vm_lapic_irq(struct vcpu *vcpu, int vector);
lib/libvmmapi/vmmapi.h
183
int vm_lapic_local_irq(struct vcpu *vcpu, int vector);
lib/libvmmapi/vmmapi.h
194
int vm_inject_nmi(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
195
int vm_readwrite_kernemu_device(struct vcpu *vcpu,
lib/libvmmapi/vmmapi.h
200
int vm_get_capability(struct vcpu *vcpu, enum vm_cap_type cap,
lib/libvmmapi/vmmapi.h
202
int vm_set_capability(struct vcpu *vcpu, enum vm_cap_type cap,
lib/libvmmapi/vmmapi.h
217
int vm_get_intinfo(struct vcpu *vcpu, uint64_t *i1, uint64_t *i2);
lib/libvmmapi/vmmapi.h
218
int vm_set_intinfo(struct vcpu *vcpu, uint64_t exit_intinfo);
lib/libvmmapi/vmmapi.h
223
uint64_t *vm_get_stats(struct vcpu *vcpu, struct timeval *ret_tv,
lib/libvmmapi/vmmapi.h
228
int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *s);
lib/libvmmapi/vmmapi.h
229
int vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state s);
lib/libvmmapi/vmmapi.h
242
int vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *pg,
lib/libvmmapi/vmmapi.h
259
int vcpu_reset(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
264
int vm_activate_cpu(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
266
int vm_suspend_cpu(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
268
int vm_resume_cpu(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
269
int vm_restart_instruction(struct vcpu *vcpu);
lib/libvmmapi/vmmapi.h
280
int vm_setup_freebsd_registers(struct vcpu *vcpu,
lib/libvmmapi/vmmapi.h
283
int vm_setup_freebsd_registers_i386(struct vcpu *vcpu,
lib/libvmmapi/vmmapi.h
46
struct vcpu;
stand/userboot/userboot.h
220
int (*vm_set_register)(void *arg, int vcpu, int reg, uint64_t val);
stand/userboot/userboot.h
221
int (*vm_set_desc)(void *arg, int vcpu, int reg, uint64_t base,
sys/amd64/include/vmm.h
181
DECLARE_VMMOPS_FUNC(void *, vcpu_init, (void *vmi, struct vcpu *vcpu,
sys/amd64/include/vmm.h
236
int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval);
sys/amd64/include/vmm.h
237
int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val);
sys/amd64/include/vmm.h
238
int vm_get_seg_desc(struct vcpu *vcpu, int reg,
sys/amd64/include/vmm.h
240
int vm_set_seg_desc(struct vcpu *vcpu, int reg,
sys/amd64/include/vmm.h
242
int vm_run(struct vcpu *vcpu);
sys/amd64/include/vmm.h
243
int vm_inject_nmi(struct vcpu *vcpu);
sys/amd64/include/vmm.h
244
int vm_nmi_pending(struct vcpu *vcpu);
sys/amd64/include/vmm.h
245
void vm_nmi_clear(struct vcpu *vcpu);
sys/amd64/include/vmm.h
246
int vm_inject_extint(struct vcpu *vcpu);
sys/amd64/include/vmm.h
247
int vm_extint_pending(struct vcpu *vcpu);
sys/amd64/include/vmm.h
248
void vm_extint_clear(struct vcpu *vcpu);
sys/amd64/include/vmm.h
249
struct vlapic *vm_lapic(struct vcpu *vcpu);
sys/amd64/include/vmm.h
252
int vm_get_capability(struct vcpu *vcpu, int type, int *val);
sys/amd64/include/vmm.h
253
int vm_set_capability(struct vcpu *vcpu, int type, int val);
sys/amd64/include/vmm.h
254
int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *state);
sys/amd64/include/vmm.h
255
int vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state);
sys/amd64/include/vmm.h
257
int vm_restart_instruction(struct vcpu *vcpu);
sys/amd64/include/vmm.h
258
struct vm_exit *vm_exitinfo(struct vcpu *vcpu);
sys/amd64/include/vmm.h
259
cpuset_t *vm_exitinfo_cpuset(struct vcpu *vcpu);
sys/amd64/include/vmm.h
260
void vm_exit_suspended(struct vcpu *vcpu, uint64_t rip);
sys/amd64/include/vmm.h
261
void vm_exit_debug(struct vcpu *vcpu, uint64_t rip);
sys/amd64/include/vmm.h
262
void vm_exit_rendezvous(struct vcpu *vcpu, uint64_t rip);
sys/amd64/include/vmm.h
263
void vm_exit_astpending(struct vcpu *vcpu, uint64_t rip);
sys/amd64/include/vmm.h
264
void vm_exit_reqidle(struct vcpu *vcpu, uint64_t rip);
sys/amd64/include/vmm.h
283
void vcpu_notify_lapic(struct vcpu *vcpu);
sys/amd64/include/vmm.h
300
int vm_inject_exception(struct vcpu *vcpu, int vector, int err_valid,
sys/amd64/include/vmm.h
316
int vm_exit_intinfo(struct vcpu *vcpu, uint64_t intinfo);
sys/amd64/include/vmm.h
326
int vm_entry_intinfo(struct vcpu *vcpu, uint64_t *info);
sys/amd64/include/vmm.h
328
int vm_get_intinfo(struct vcpu *vcpu, uint64_t *info1, uint64_t *info2);
sys/amd64/include/vmm.h
335
void vm_set_tsc_offset(struct vcpu *vcpu, uint64_t offset);
sys/amd64/include/vmm.h
36
struct vcpu;
sys/amd64/include/vmm.h
360
int vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/include/vmm.h
367
int vcpu_trace_exceptions(struct vcpu *vcpu);
sys/amd64/include/vmm.h
368
int vcpu_trap_wbinvd(struct vcpu *vcpu);
sys/amd64/include/vmm.h
637
int vcpu;
sys/amd64/include/vmm.h
664
void vm_inject_fault(struct vcpu *vcpu, int vector, int errcode_valid,
sys/amd64/include/vmm.h
668
vm_inject_ud(struct vcpu *vcpu)
sys/amd64/include/vmm.h
670
vm_inject_fault(vcpu, IDT_UD, 0, 0);
sys/amd64/include/vmm.h
674
vm_inject_gp(struct vcpu *vcpu)
sys/amd64/include/vmm.h
676
vm_inject_fault(vcpu, IDT_GP, 1, 0);
sys/amd64/include/vmm.h
680
vm_inject_ac(struct vcpu *vcpu, int errcode)
sys/amd64/include/vmm.h
682
vm_inject_fault(vcpu, IDT_AC, 1, errcode);
sys/amd64/include/vmm.h
686
vm_inject_ss(struct vcpu *vcpu, int errcode)
sys/amd64/include/vmm.h
688
vm_inject_fault(vcpu, IDT_SS, 1, errcode);
sys/amd64/include/vmm.h
691
void vm_inject_pf(struct vcpu *vcpu, int error_code, uint64_t cr2);
sys/amd64/include/vmm_dev.h
146
int vcpu; /* unused */
sys/amd64/include/vmm_dev.h
156
int vcpu; /* unused */
sys/amd64/include/vmm_instruction_emul.h
107
int vmm_fetch_instruction(struct vcpu *vcpu,
sys/amd64/include/vmm_instruction_emul.h
120
int vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/include/vmm_instruction_emul.h
127
int vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/include/vmm_instruction_emul.h
147
int vmm_decode_instruction(struct vcpu *vcpu, uint64_t gla,
sys/amd64/include/vmm_instruction_emul.h
62
typedef int (*mem_region_read_t)(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/include/vmm_instruction_emul.h
65
typedef int (*mem_region_write_t)(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/include/vmm_instruction_emul.h
79
int vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/include/vmm_instruction_emul.h
83
int vie_update_register(struct vcpu *vcpu, enum vm_reg_name reg,
sys/amd64/vmm/amd/svm.c
1002
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1003
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1014
svm_save_intinfo(struct svm_softc *svm_sc, struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1019
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1030
SVM_CTR2(vcpu, "SVM:Pending INTINFO(0x%lx), vector=%d.\n", intinfo,
sys/amd64/vmm/amd/svm.c
1032
vmm_stat_incr(vcpu->vcpu, VCPU_EXITINTINFO, 1);
sys/amd64/vmm/amd/svm.c
1033
vm_exit_intinfo(vcpu->vcpu, intinfo);
sys/amd64/vmm/amd/svm.c
1038
vintr_intercept_enabled(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1041
return (svm_get_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_VINTR));
sys/amd64/vmm/amd/svm.c
1046
enable_intr_window_exiting(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1050
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1054
KASSERT(vintr_intercept_enabled(vcpu),
sys/amd64/vmm/amd/svm.c
1059
SVM_CTR0(vcpu, "Enable intr window exiting");
sys/amd64/vmm/amd/svm.c
1063
svm_set_dirty(vcpu, VMCB_CACHE_TPR);
sys/amd64/vmm/amd/svm.c
1064
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_VINTR);
sys/amd64/vmm/amd/svm.c
1068
disable_intr_window_exiting(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1072
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1075
KASSERT(!vintr_intercept_enabled(vcpu),
sys/amd64/vmm/amd/svm.c
1080
SVM_CTR0(vcpu, "Disable intr window exiting");
sys/amd64/vmm/amd/svm.c
1083
svm_set_dirty(vcpu, VMCB_CACHE_TPR);
sys/amd64/vmm/amd/svm.c
1084
svm_disable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_VINTR);
sys/amd64/vmm/amd/svm.c
1088
svm_modify_intr_shadow(struct svm_vcpu *vcpu, uint64_t val)
sys/amd64/vmm/amd/svm.c
1093
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1098
SVM_CTR1(vcpu, "Setting intr_shadow to %d", newval);
sys/amd64/vmm/amd/svm.c
1104
svm_get_intr_shadow(struct svm_vcpu *vcpu, uint64_t *val)
sys/amd64/vmm/amd/svm.c
1108
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1119
nmi_blocked(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1123
blocked = svm_get_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET);
sys/amd64/vmm/amd/svm.c
1128
enable_nmi_blocking(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1131
KASSERT(!nmi_blocked(vcpu), ("vNMI already blocked"));
sys/amd64/vmm/amd/svm.c
1132
SVM_CTR0(vcpu, "vNMI blocking enabled");
sys/amd64/vmm/amd/svm.c
1133
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET);
sys/amd64/vmm/amd/svm.c
1137
clear_nmi_blocking(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1141
KASSERT(nmi_blocked(vcpu), ("vNMI already unblocked"));
sys/amd64/vmm/amd/svm.c
1142
SVM_CTR0(vcpu, "vNMI blocking cleared");
sys/amd64/vmm/amd/svm.c
1154
svm_disable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IRET);
sys/amd64/vmm/amd/svm.c
1160
error = svm_modify_intr_shadow(vcpu, 1);
sys/amd64/vmm/amd/svm.c
1167
svm_write_efer(struct svm_softc *sc, struct svm_vcpu *vcpu, uint64_t newval,
sys/amd64/vmm/amd/svm.c
1175
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
1178
SVM_CTR2(vcpu, "wrmsr(efer) %#lx/%#lx", oldval, newval);
sys/amd64/vmm/amd/svm.c
1202
if (!vm_cpuid_capability(vcpu->vcpu, VCC_NO_EXECUTE))
sys/amd64/vmm/amd/svm.c
1211
vme = vm_exitinfo(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1218
if (!vm_cpuid_capability(vcpu->vcpu, VCC_FFXSR))
sys/amd64/vmm/amd/svm.c
1223
if (!vm_cpuid_capability(vcpu->vcpu, VCC_TCE))
sys/amd64/vmm/amd/svm.c
1227
error = svm_setreg(vcpu, VM_REG_GUEST_EFER, newval);
sys/amd64/vmm/amd/svm.c
1231
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1236
emulate_wrmsr(struct svm_softc *sc, struct svm_vcpu *vcpu, u_int num,
sys/amd64/vmm/amd/svm.c
1242
error = lapic_wrmsr(vcpu->vcpu, num, val, retu);
sys/amd64/vmm/amd/svm.c
1244
error = svm_write_efer(sc, vcpu, val, retu);
sys/amd64/vmm/amd/svm.c
1246
error = svm_wrmsr(vcpu, num, val, retu);
sys/amd64/vmm/amd/svm.c
1252
emulate_rdmsr(struct svm_vcpu *vcpu, u_int num, bool *retu)
sys/amd64/vmm/amd/svm.c
1260
error = lapic_rdmsr(vcpu->vcpu, num, &result, retu);
sys/amd64/vmm/amd/svm.c
1262
error = svm_rdmsr(vcpu, num, &result, retu);
sys/amd64/vmm/amd/svm.c
1265
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
1266
ctx = svm_get_guest_regctx(vcpu);
sys/amd64/vmm/amd/svm.c
1349
svm_vmexit(struct svm_softc *svm_sc, struct svm_vcpu *vcpu,
sys/amd64/vmm/amd/svm.c
1361
ctx = svm_get_guest_regctx(vcpu);
sys/amd64/vmm/amd/svm.c
1362
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/svm.c
1375
vmm_stat_incr(vcpu->vcpu, VMEXIT_COUNT, 1);
sys/amd64/vmm/amd/svm.c
1394
svm_update_virqinfo(vcpu);
sys/amd64/vmm/amd/svm.c
1395
svm_save_intinfo(svm_sc, vcpu);
sys/amd64/vmm/amd/svm.c
1403
clear_nmi_blocking(vcpu);
sys/amd64/vmm/amd/svm.c
1407
vmm_stat_incr(vcpu->vcpu, VMEXIT_VINTR, 1);
sys/amd64/vmm/amd/svm.c
1411
vmm_stat_incr(vcpu->vcpu, VMEXIT_EXTINT, 1);
sys/amd64/vmm/amd/svm.c
1418
vmm_stat_incr(vcpu->vcpu, VMEXIT_EXCEPTION, 1);
sys/amd64/vmm/amd/svm.c
1428
SVM_CTR0(vcpu, "Vectoring to MCE handler");
sys/amd64/vmm/amd/svm.c
1432
error = svm_setreg(vcpu, VM_REG_GUEST_CR2, info2);
sys/amd64/vmm/amd/svm.c
1456
svm_getreg(vcpu, VM_REG_GUEST_DR6, &dr6);
sys/amd64/vmm/amd/svm.c
1458
if (stepped && (vcpu->caps & (1 << VM_CAP_RFLAGS_TF))) {
sys/amd64/vmm/amd/svm.c
1463
if (vcpu->dbg.popf_sstep) {
sys/amd64/vmm/amd/svm.c
1470
vcpu->dbg.popf_sstep = 0;
sys/amd64/vmm/amd/svm.c
1477
svm_getreg(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/amd/svm.c
1479
vcpu->dbg.rflags_tf = rflags & PSL_T;
sys/amd64/vmm/amd/svm.c
1480
} else if (vcpu->dbg.pushf_sstep) {
sys/amd64/vmm/amd/svm.c
1485
vcpu->dbg.pushf_sstep = 0;
sys/amd64/vmm/amd/svm.c
1495
vcpu->dbg.rflags_tf;
sys/amd64/vmm/amd/svm.c
1496
svm_paging_info(svm_get_vmcb(vcpu),
sys/amd64/vmm/amd/svm.c
1502
error = svm_setreg(vcpu, VM_REG_GUEST_DR6, dr6);
sys/amd64/vmm/amd/svm.c
1529
SVM_CTR2(vcpu, "Reset inst_length from %d "
sys/amd64/vmm/amd/svm.c
1546
SVM_CTR2(vcpu, "Reflecting exception "
sys/amd64/vmm/amd/svm.c
1548
error = vm_inject_exception(vcpu->vcpu, idtvec,
sys/amd64/vmm/amd/svm.c
1562
vmm_stat_incr(vcpu->vcpu, VMEXIT_WRMSR, 1);
sys/amd64/vmm/amd/svm.c
1564
SVM_CTR2(vcpu, "wrmsr %#x val %#lx", ecx, val);
sys/amd64/vmm/amd/svm.c
1565
if (emulate_wrmsr(svm_sc, vcpu, ecx, val, &retu)) {
sys/amd64/vmm/amd/svm.c
1576
SVM_CTR1(vcpu, "rdmsr %#x", ecx);
sys/amd64/vmm/amd/svm.c
1577
vmm_stat_incr(vcpu->vcpu, VMEXIT_RDMSR, 1);
sys/amd64/vmm/amd/svm.c
1578
if (emulate_rdmsr(vcpu, ecx, &retu)) {
sys/amd64/vmm/amd/svm.c
1590
handled = svm_handle_io(vcpu, vmexit);
sys/amd64/vmm/amd/svm.c
1591
vmm_stat_incr(vcpu->vcpu, VMEXIT_INOUT, 1);
sys/amd64/vmm/amd/svm.c
1594
vmm_stat_incr(vcpu->vcpu, VMEXIT_CPUID, 1);
sys/amd64/vmm/amd/svm.c
1595
handled = x86_emulate_cpuid(vcpu->vcpu,
sys/amd64/vmm/amd/svm.c
1600
vmm_stat_incr(vcpu->vcpu, VMEXIT_HLT, 1);
sys/amd64/vmm/amd/svm.c
1606
vmm_stat_incr(vcpu->vcpu, VMEXIT_PAUSE, 1);
sys/amd64/vmm/amd/svm.c
1611
SVM_CTR2(vcpu, "nested page fault with "
sys/amd64/vmm/amd/svm.c
1614
} else if (vm_mem_allocated(vcpu->vcpu, info2) ||
sys/amd64/vmm/amd/svm.c
1619
vmm_stat_incr(vcpu->vcpu, VMEXIT_NESTED_FAULT, 1);
sys/amd64/vmm/amd/svm.c
1620
SVM_CTR3(vcpu, "nested page fault "
sys/amd64/vmm/amd/svm.c
1625
vmm_stat_incr(vcpu->vcpu, VMEXIT_INST_EMUL, 1);
sys/amd64/vmm/amd/svm.c
1626
SVM_CTR3(vcpu, "inst_emul fault "
sys/amd64/vmm/amd/svm.c
1638
if (vcpu->caps & (1 << VM_CAP_RFLAGS_TF)) {
sys/amd64/vmm/amd/svm.c
1641
svm_getreg(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/amd/svm.c
1645
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
1648
svm_setreg(vcpu, VM_REG_GUEST_RFLAGS, (rflags | PSL_T));
sys/amd64/vmm/amd/svm.c
1651
vcpu->dbg.pushf_sstep = 1;
sys/amd64/vmm/amd/svm.c
1657
if (vcpu->caps & (1 << VM_CAP_RFLAGS_TF)) {
sys/amd64/vmm/amd/svm.c
1660
svm_getreg(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/amd/svm.c
1664
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
1667
svm_setreg(vcpu, VM_REG_GUEST_RFLAGS, (rflags | PSL_T));
sys/amd64/vmm/amd/svm.c
1668
vcpu->dbg.popf_sstep = 1;
sys/amd64/vmm/amd/svm.c
1683
vm_inject_ud(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1692
vmm_stat_incr(vcpu->vcpu, VMEXIT_UNKNOWN, 1);
sys/amd64/vmm/amd/svm.c
1696
SVM_CTR4(vcpu, "%s %s vmexit at %#lx/%d",
sys/amd64/vmm/amd/svm.c
1722
svm_inj_intinfo(struct svm_softc *svm_sc, struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.c
1726
if (!vm_entry_intinfo(vcpu->vcpu, &intinfo))
sys/amd64/vmm/amd/svm.c
1732
svm_eventinject(vcpu, VMCB_EXITINTINFO_TYPE(intinfo),
sys/amd64/vmm/amd/svm.c
1736
vmm_stat_incr(vcpu->vcpu, VCPU_INTINFO_INJECTED, 1);
sys/amd64/vmm/amd/svm.c
1737
SVM_CTR1(vcpu, "Injected entry intinfo: %#lx", intinfo);
sys/amd64/vmm/amd/svm.c
1744
svm_inj_interrupts(struct svm_softc *sc, struct svm_vcpu *vcpu,
sys/amd64/vmm/amd/svm.c
1753
if (vcpu->caps & (1 << VM_CAP_MASK_HWINTR)) {
sys/amd64/vmm/amd/svm.c
1757
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
1758
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1762
if (vcpu->nextrip != state->rip) {
sys/amd64/vmm/amd/svm.c
1764
SVM_CTR2(vcpu, "Guest interrupt blocking "
sys/amd64/vmm/amd/svm.c
1766
vcpu->nextrip, state->rip);
sys/amd64/vmm/amd/svm.c
1778
svm_inj_intinfo(sc, vcpu);
sys/amd64/vmm/amd/svm.c
1781
if (vm_nmi_pending(vcpu->vcpu)) {
sys/amd64/vmm/amd/svm.c
1782
if (nmi_blocked(vcpu)) {
sys/amd64/vmm/amd/svm.c
1787
SVM_CTR0(vcpu, "Cannot inject NMI due "
sys/amd64/vmm/amd/svm.c
1793
SVM_CTR0(vcpu, "Cannot inject NMI due to "
sys/amd64/vmm/amd/svm.c
1802
SVM_CTR1(vcpu, "Cannot inject NMI due to "
sys/amd64/vmm/amd/svm.c
1817
vm_nmi_clear(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1820
svm_eventinject(vcpu, VMCB_EVENTINJ_TYPE_NMI,
sys/amd64/vmm/amd/svm.c
1824
enable_nmi_blocking(vcpu);
sys/amd64/vmm/amd/svm.c
1826
SVM_CTR0(vcpu, "Injecting vNMI");
sys/amd64/vmm/amd/svm.c
1830
extint_pending = vm_extint_pending(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1848
SVM_CTR2(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/amd/svm.c
1855
SVM_CTR1(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/amd/svm.c
1862
SVM_CTR2(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/amd/svm.c
1868
svm_eventinject(vcpu, VMCB_EVENTINJ_TYPE_INTR, vector, 0, false);
sys/amd64/vmm/amd/svm.c
1873
vm_extint_clear(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
1899
SVM_CTR2(vcpu, "VMCB V_TPR changed from %#x to %#x",
sys/amd64/vmm/amd/svm.c
1902
svm_set_dirty(vcpu, VMCB_CACHE_TPR);
sys/amd64/vmm/amd/svm.c
1920
enable_intr_window_exiting(vcpu);
sys/amd64/vmm/amd/svm.c
1922
disable_intr_window_exiting(vcpu);
sys/amd64/vmm/amd/svm.c
1944
svm_pmap_activate(struct svm_vcpu *vcpu, pmap_t pmap)
sys/amd64/vmm/amd/svm.c
1955
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
1996
if (vcpu->asid.gen != asid[cpu].gen) {
sys/amd64/vmm/amd/svm.c
1998
} else if (vcpu->eptgen != eptgen) {
sys/amd64/vmm/amd/svm.c
2026
vcpu->asid.gen = asid[cpu].gen;
sys/amd64/vmm/amd/svm.c
2027
vcpu->asid.num = asid[cpu].num;
sys/amd64/vmm/amd/svm.c
2029
ctrl->asid = vcpu->asid.num;
sys/amd64/vmm/amd/svm.c
2030
svm_set_dirty(vcpu, VMCB_CACHE_ASID);
sys/amd64/vmm/amd/svm.c
2039
vcpu->eptgen = eptgen;
sys/amd64/vmm/amd/svm.c
2042
KASSERT(ctrl->asid == vcpu->asid.num,
sys/amd64/vmm/amd/svm.c
2043
("ASID mismatch: %u/%u", ctrl->asid, vcpu->asid.num));
sys/amd64/vmm/amd/svm.c
2129
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2138
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2139
svm_sc = vcpu->sc;
sys/amd64/vmm/amd/svm.c
2140
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
2141
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
2142
vmexit = vm_exitinfo(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
2143
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
2145
gctx = svm_get_guest_regctx(vcpu);
sys/amd64/vmm/amd/svm.c
2146
vmcb_pa = vcpu->vmcb_pa;
sys/amd64/vmm/amd/svm.c
2148
if (vcpu->lastcpu != curcpu) {
sys/amd64/vmm/amd/svm.c
2152
vcpu->asid.gen = 0;
sys/amd64/vmm/amd/svm.c
2157
svm_set_dirty(vcpu, 0xffffffff);
sys/amd64/vmm/amd/svm.c
2169
vcpu->lastcpu = curcpu;
sys/amd64/vmm/amd/svm.c
2170
vmm_stat_incr(vcpu->vcpu, VCPU_MIGRATIONS, 1);
sys/amd64/vmm/amd/svm.c
2173
svm_msr_guest_enter(vcpu);
sys/amd64/vmm/amd/svm.c
2190
vm_exit_suspended(vcpu->vcpu, state->rip);
sys/amd64/vmm/amd/svm.c
2194
if (vcpu_rendezvous_pending(vcpu->vcpu, evinfo)) {
sys/amd64/vmm/amd/svm.c
2196
vm_exit_rendezvous(vcpu->vcpu, state->rip);
sys/amd64/vmm/amd/svm.c
2202
vm_exit_reqidle(vcpu->vcpu, state->rip);
sys/amd64/vmm/amd/svm.c
2207
if (vcpu_should_yield(vcpu->vcpu)) {
sys/amd64/vmm/amd/svm.c
2209
vm_exit_astpending(vcpu->vcpu, state->rip);
sys/amd64/vmm/amd/svm.c
2213
if (vcpu_debugged(vcpu->vcpu)) {
sys/amd64/vmm/amd/svm.c
2215
vm_exit_debug(vcpu->vcpu, state->rip);
sys/amd64/vmm/amd/svm.c
2228
svm_inj_interrupts(svm_sc, vcpu, vlapic);
sys/amd64/vmm/amd/svm.c
2234
svm_pmap_activate(vcpu, pmap);
sys/amd64/vmm/amd/svm.c
2236
ctrl->vmcb_clean = vmcb_clean & ~vcpu->dirty;
sys/amd64/vmm/amd/svm.c
2237
vcpu->dirty = 0;
sys/amd64/vmm/amd/svm.c
2238
SVM_CTR1(vcpu, "vmcb clean %#x", ctrl->vmcb_clean);
sys/amd64/vmm/amd/svm.c
2241
SVM_CTR1(vcpu, "Resume execution at %#lx", state->rip);
sys/amd64/vmm/amd/svm.c
2262
vcpu->nextrip = state->rip;
sys/amd64/vmm/amd/svm.c
2265
handled = svm_vmexit(svm_sc, vcpu, vmexit);
sys/amd64/vmm/amd/svm.c
2268
svm_msr_guest_exit(vcpu);
sys/amd64/vmm/amd/svm.c
2276
struct svm_vcpu *vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2278
free(vcpu->vmcb, M_SVM);
sys/amd64/vmm/amd/svm.c
2279
free(vcpu, M_SVM);
sys/amd64/vmm/amd/svm.c
2341
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2344
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2347
return (svm_get_intr_shadow(vcpu, val));
sys/amd64/vmm/amd/svm.c
2350
if (vmcb_read(vcpu, ident, val) == 0) {
sys/amd64/vmm/amd/svm.c
2354
reg = swctx_regptr(svm_get_guest_regctx(vcpu), ident);
sys/amd64/vmm/amd/svm.c
2361
SVM_CTR1(vcpu, "svm_getreg: unknown register %#x", ident);
sys/amd64/vmm/amd/svm.c
2368
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2371
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2374
return (svm_modify_intr_shadow(vcpu, val));
sys/amd64/vmm/amd/svm.c
2379
if (vmcb_write(vcpu, ident, val) == 0) {
sys/amd64/vmm/amd/svm.c
2384
reg = swctx_regptr(svm_get_guest_regctx(vcpu), ident);
sys/amd64/vmm/amd/svm.c
2402
SVM_CTR1(vcpu, "svm_setreg: unknown register %#x", ident);
sys/amd64/vmm/amd/svm.c
2450
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2454
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2459
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
2463
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
2472
svm_set_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_BP), val);
sys/amd64/vmm/amd/svm.c
2475
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
2479
vcpu->caps &= ~(1 << VM_CAP_MASK_HWINTR);
sys/amd64/vmm/amd/svm.c
2480
vcpu->caps |= (val << VM_CAP_MASK_HWINTR);
sys/amd64/vmm/amd/svm.c
2486
if (svm_getreg(vcpu, VM_REG_GUEST_RFLAGS, &rflags)) {
sys/amd64/vmm/amd/svm.c
2492
vcpu->dbg.rflags_tf = rflags & PSL_T;
sys/amd64/vmm/amd/svm.c
2494
if (svm_setreg(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/amd/svm.c
2499
vcpu->caps |= (1 << VM_CAP_RFLAGS_TF);
sys/amd64/vmm/amd/svm.c
2505
if (vcpu->caps & (1 << VM_CAP_RFLAGS_TF)) {
sys/amd64/vmm/amd/svm.c
2507
rflags |= vcpu->dbg.rflags_tf;
sys/amd64/vmm/amd/svm.c
2508
vcpu->dbg.rflags_tf = 0;
sys/amd64/vmm/amd/svm.c
2510
if (svm_setreg(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/amd/svm.c
2515
vcpu->caps &= ~(1 << VM_CAP_RFLAGS_TF);
sys/amd64/vmm/amd/svm.c
2519
svm_set_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_DB), val);
sys/amd64/vmm/amd/svm.c
2520
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_POPF,
sys/amd64/vmm/amd/svm.c
2522
svm_set_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_PUSHF,
sys/amd64/vmm/amd/svm.c
2536
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2540
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2545
*retval = svm_get_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
2549
*retval = svm_get_intercept(vcpu, VMCB_CTRL1_INTCPT,
sys/amd64/vmm/amd/svm.c
2556
*retval = svm_get_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_BP));
sys/amd64/vmm/amd/svm.c
2559
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/amd/svm.c
2563
*retval = !!(vcpu->caps & (1 << VM_CAP_RFLAGS_TF));
sys/amd64/vmm/amd/svm.c
2566
*retval = !!(vcpu->caps & (1 << VM_CAP_MASK_HWINTR));
sys/amd64/vmm/amd/svm.c
2590
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2593
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2595
vlapic->vm = vcpu->sc->vm;
sys/amd64/vmm/amd/svm.c
2596
vlapic->vcpu = vcpu->vcpu;
sys/amd64/vmm/amd/svm.c
2597
vlapic->vcpuid = vcpu->vcpuid;
sys/amd64/vmm/amd/svm.c
2619
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
2622
vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2625
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/amd/svm.c
2627
printf("%s: %s%d is running", __func__, vm_name(vcpu->sc->vm),
sys/amd64/vmm/amd/svm.c
2628
vcpu->vcpuid);
sys/amd64/vmm/amd/svm.c
2632
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_CR0, meta);
sys/amd64/vmm/amd/svm.c
2633
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_CR2, meta);
sys/amd64/vmm/amd/svm.c
2634
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_CR3, meta);
sys/amd64/vmm/amd/svm.c
2635
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_CR4, meta);
sys/amd64/vmm/amd/svm.c
2637
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_DR6, meta);
sys/amd64/vmm/amd/svm.c
2638
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_DR7, meta);
sys/amd64/vmm/amd/svm.c
2640
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_RAX, meta);
sys/amd64/vmm/amd/svm.c
2642
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_RSP, meta);
sys/amd64/vmm/amd/svm.c
2643
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_RIP, meta);
sys/amd64/vmm/amd/svm.c
2644
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_RFLAGS, meta);
sys/amd64/vmm/amd/svm.c
2648
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_ES, meta);
sys/amd64/vmm/amd/svm.c
2649
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_ES, meta);
sys/amd64/vmm/amd/svm.c
2652
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_CS, meta);
sys/amd64/vmm/amd/svm.c
2653
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_CS, meta);
sys/amd64/vmm/amd/svm.c
2656
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_SS, meta);
sys/amd64/vmm/amd/svm.c
2657
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_SS, meta);
sys/amd64/vmm/amd/svm.c
2660
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_DS, meta);
sys/amd64/vmm/amd/svm.c
2661
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_DS, meta);
sys/amd64/vmm/amd/svm.c
2664
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_FS, meta);
sys/amd64/vmm/amd/svm.c
2665
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_FS, meta);
sys/amd64/vmm/amd/svm.c
2668
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_GS, meta);
sys/amd64/vmm/amd/svm.c
2669
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_GS, meta);
sys/amd64/vmm/amd/svm.c
2672
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_TR, meta);
sys/amd64/vmm/amd/svm.c
2673
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_TR, meta);
sys/amd64/vmm/amd/svm.c
2676
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_LDTR, meta);
sys/amd64/vmm/amd/svm.c
2677
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_LDTR, meta);
sys/amd64/vmm/amd/svm.c
2680
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_EFER, meta);
sys/amd64/vmm/amd/svm.c
2683
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_IDTR, meta);
sys/amd64/vmm/amd/svm.c
2684
err += vmcb_snapshot_desc(vcpu, VM_REG_GUEST_GDTR, meta);
sys/amd64/vmm/amd/svm.c
2687
err += svm_snapshot_reg(vcpu, VM_REG_GUEST_INTR_SHADOW, meta);
sys/amd64/vmm/amd/svm.c
2689
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2691
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2693
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2695
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2697
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2700
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2702
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2705
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2708
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2711
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2714
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2716
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2718
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2720
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2723
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2726
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2728
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2730
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2732
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2735
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2738
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2740
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2742
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2745
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2748
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2751
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2753
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2755
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2758
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2761
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2763
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2765
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2767
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2769
err += vmcb_snapshot_any(vcpu,
sys/amd64/vmm/amd/svm.c
2775
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rbp, meta, err, done);
sys/amd64/vmm/amd/svm.c
2776
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rbx, meta, err, done);
sys/amd64/vmm/amd/svm.c
2777
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rcx, meta, err, done);
sys/amd64/vmm/amd/svm.c
2778
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rdx, meta, err, done);
sys/amd64/vmm/amd/svm.c
2779
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rdi, meta, err, done);
sys/amd64/vmm/amd/svm.c
2780
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_rsi, meta, err, done);
sys/amd64/vmm/amd/svm.c
2781
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r8, meta, err, done);
sys/amd64/vmm/amd/svm.c
2782
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r9, meta, err, done);
sys/amd64/vmm/amd/svm.c
2783
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r10, meta, err, done);
sys/amd64/vmm/amd/svm.c
2784
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r11, meta, err, done);
sys/amd64/vmm/amd/svm.c
2785
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r12, meta, err, done);
sys/amd64/vmm/amd/svm.c
2786
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r13, meta, err, done);
sys/amd64/vmm/amd/svm.c
2787
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r14, meta, err, done);
sys/amd64/vmm/amd/svm.c
2788
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_r15, meta, err, done);
sys/amd64/vmm/amd/svm.c
2789
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_dr0, meta, err, done);
sys/amd64/vmm/amd/svm.c
2790
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_dr1, meta, err, done);
sys/amd64/vmm/amd/svm.c
2791
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_dr2, meta, err, done);
sys/amd64/vmm/amd/svm.c
2792
SNAPSHOT_VAR_OR_LEAVE(vcpu->swctx.sctx_dr3, meta, err, done);
sys/amd64/vmm/amd/svm.c
2797
SNAPSHOT_VAR_OR_LEAVE(vcpu->nextrip, meta, err, done);
sys/amd64/vmm/amd/svm.c
2800
SNAPSHOT_VAR_OR_LEAVE(vcpu->lastcpu, meta, err, done);
sys/amd64/vmm/amd/svm.c
2801
SNAPSHOT_VAR_OR_LEAVE(vcpu->dirty, meta, err, done);
sys/amd64/vmm/amd/svm.c
2804
SNAPSHOT_VAR_OR_LEAVE(vcpu->eptgen, meta, err, done);
sys/amd64/vmm/amd/svm.c
2806
SNAPSHOT_VAR_OR_LEAVE(vcpu->asid.gen, meta, err, done);
sys/amd64/vmm/amd/svm.c
2807
SNAPSHOT_VAR_OR_LEAVE(vcpu->asid.num, meta, err, done);
sys/amd64/vmm/amd/svm.c
2809
SNAPSHOT_BUF_OR_LEAVE(&vcpu->mtrr, sizeof(vcpu->mtrr), meta, err, done);
sys/amd64/vmm/amd/svm.c
2813
svm_set_dirty(vcpu, 0xffffffff);
sys/amd64/vmm/amd/svm.c
2822
struct svm_vcpu *vcpu = vcpui;
sys/amd64/vmm/amd/svm.c
2824
svm_set_tsc_offset(vcpu, offset);
sys/amd64/vmm/amd/svm.c
296
svm_set_tsc_offset(struct svm_vcpu *vcpu, uint64_t offset)
sys/amd64/vmm/amd/svm.c
300
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
303
svm_set_dirty(vcpu, VMCB_CACHE_I);
sys/amd64/vmm/amd/svm.c
304
SVM_CTR1(vcpu, "tsc offset changed to %#lx", offset);
sys/amd64/vmm/amd/svm.c
306
vm_set_tsc_offset(vcpu->vcpu, offset);
sys/amd64/vmm/amd/svm.c
419
svm_get_intercept(struct svm_vcpu *vcpu, int idx, uint32_t bitmask)
sys/amd64/vmm/amd/svm.c
425
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
430
svm_set_intercept(struct svm_vcpu *vcpu, int idx, uint32_t bitmask, int enabled)
sys/amd64/vmm/amd/svm.c
437
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
446
svm_set_dirty(vcpu, VMCB_CACHE_I);
sys/amd64/vmm/amd/svm.c
447
SVM_CTR3(vcpu, "intercept[%d] modified from %#x to %#x", idx,
sys/amd64/vmm/amd/svm.c
453
svm_disable_intercept(struct svm_vcpu *vcpu, int off, uint32_t bitmask)
sys/amd64/vmm/amd/svm.c
456
svm_set_intercept(vcpu, off, bitmask, 0);
sys/amd64/vmm/amd/svm.c
460
svm_enable_intercept(struct svm_vcpu *vcpu, int off, uint32_t bitmask)
sys/amd64/vmm/amd/svm.c
463
svm_set_intercept(vcpu, off, bitmask, 1);
sys/amd64/vmm/amd/svm.c
467
vmcb_init(struct svm_softc *sc, struct svm_vcpu *vcpu, uint64_t iopm_base_pa,
sys/amd64/vmm/amd/svm.c
475
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
476
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
492
svm_disable_intercept(vcpu, VMCB_CR_INTCPT, mask);
sys/amd64/vmm/amd/svm.c
494
svm_enable_intercept(vcpu, VMCB_CR_INTCPT, mask);
sys/amd64/vmm/amd/svm.c
501
if (vcpu_trace_exceptions(vcpu->vcpu)) {
sys/amd64/vmm/amd/svm.c
509
svm_enable_intercept(vcpu, VMCB_EXC_INTCPT, BIT(n));
sys/amd64/vmm/amd/svm.c
512
svm_enable_intercept(vcpu, VMCB_EXC_INTCPT, BIT(IDT_MC));
sys/amd64/vmm/amd/svm.c
516
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_IO);
sys/amd64/vmm/amd/svm.c
517
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_MSR);
sys/amd64/vmm/amd/svm.c
518
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_CPUID);
sys/amd64/vmm/amd/svm.c
519
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INTR);
sys/amd64/vmm/amd/svm.c
520
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INIT);
sys/amd64/vmm/amd/svm.c
521
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_NMI);
sys/amd64/vmm/amd/svm.c
522
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_SMI);
sys/amd64/vmm/amd/svm.c
523
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_SHUTDOWN);
sys/amd64/vmm/amd/svm.c
524
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_FERR_FREEZE);
sys/amd64/vmm/amd/svm.c
525
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INVD);
sys/amd64/vmm/amd/svm.c
526
svm_enable_intercept(vcpu, VMCB_CTRL1_INTCPT, VMCB_INTCPT_INVLPGA);
sys/amd64/vmm/amd/svm.c
528
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_MONITOR);
sys/amd64/vmm/amd/svm.c
529
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_MWAIT);
sys/amd64/vmm/amd/svm.c
535
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMLOAD);
sys/amd64/vmm/amd/svm.c
536
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMSAVE);
sys/amd64/vmm/amd/svm.c
537
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_STGI);
sys/amd64/vmm/amd/svm.c
538
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_CLGI);
sys/amd64/vmm/amd/svm.c
539
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_SKINIT);
sys/amd64/vmm/amd/svm.c
540
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_ICEBP);
sys/amd64/vmm/amd/svm.c
541
if (vcpu_trap_wbinvd(vcpu->vcpu)) {
sys/amd64/vmm/amd/svm.c
542
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT,
sys/amd64/vmm/amd/svm.c
550
svm_enable_intercept(vcpu, VMCB_CTRL2_INTCPT, VMCB_INTCPT_VMRUN);
sys/amd64/vmm/amd/svm.c
646
svm_vcpu_init(void *vmi, struct vcpu *vcpu1, int vcpuid)
sys/amd64/vmm/amd/svm.c
649
struct svm_vcpu *vcpu;
sys/amd64/vmm/amd/svm.c
651
vcpu = malloc(sizeof(*vcpu), M_SVM, M_WAITOK | M_ZERO);
sys/amd64/vmm/amd/svm.c
652
vcpu->sc = sc;
sys/amd64/vmm/amd/svm.c
653
vcpu->vcpu = vcpu1;
sys/amd64/vmm/amd/svm.c
654
vcpu->vcpuid = vcpuid;
sys/amd64/vmm/amd/svm.c
655
vcpu->vmcb = malloc_aligned(sizeof(struct vmcb), PAGE_SIZE, M_SVM,
sys/amd64/vmm/amd/svm.c
657
vcpu->nextrip = ~0;
sys/amd64/vmm/amd/svm.c
658
vcpu->lastcpu = NOCPU;
sys/amd64/vmm/amd/svm.c
659
vcpu->vmcb_pa = vtophys(vcpu->vmcb);
sys/amd64/vmm/amd/svm.c
660
vmcb_init(sc, vcpu, vtophys(sc->iopm_bitmap), vtophys(sc->msr_bitmap),
sys/amd64/vmm/amd/svm.c
662
svm_msr_guest_init(sc, vcpu);
sys/amd64/vmm/amd/svm.c
663
return (vcpu);
sys/amd64/vmm/amd/svm.c
758
svm_inout_str_seginfo(struct svm_vcpu *vcpu, int64_t info1, int in,
sys/amd64/vmm/amd/svm.c
785
svm_get_cs_info(vcpu->vmcb, &vis->paging, &vis->cs_d,
sys/amd64/vmm/amd/svm.c
790
error = svm_getdesc(vcpu, vis->seg_name, &vis->seg_desc);
sys/amd64/vmm/amd/svm.c
831
svm_handle_io(struct svm_vcpu *vcpu, struct vm_exit *vmexit)
sys/amd64/vmm/amd/svm.c
840
state = svm_get_vmcb_state(vcpu);
sys/amd64/vmm/amd/svm.c
841
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
842
regs = svm_get_guest_regctx(vcpu);
sys/amd64/vmm/amd/svm.c
858
svm_paging_info(svm_get_vmcb(vcpu), &vis->paging);
sys/amd64/vmm/amd/svm.c
866
svm_inout_str_seginfo(vcpu, info1, vmexit->u.inout.in, vis);
sys/amd64/vmm/amd/svm.c
958
svm_eventinject(struct svm_vcpu *vcpu, int intr_type, int vector,
sys/amd64/vmm/amd/svm.c
963
ctrl = svm_get_vmcb_ctrl(vcpu);
sys/amd64/vmm/amd/svm.c
988
SVM_CTR3(vcpu, "Injecting %s at vector %d errcode %#x",
sys/amd64/vmm/amd/svm.c
991
SVM_CTR2(vcpu, "Injecting %s at vector %d",
sys/amd64/vmm/amd/svm.c
997
svm_update_virqinfo(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm.h
70
void svm_set_tsc_offset(struct svm_vcpu *vcpu, uint64_t offset);
sys/amd64/vmm/amd/svm_msr.c
109
svm_rdmsr(struct svm_vcpu *vcpu, u_int num, uint64_t *result, bool *retu)
sys/amd64/vmm/amd/svm_msr.c
124
if (vm_rdmtrr(&vcpu->mtrr, num, result) != 0) {
sys/amd64/vmm/amd/svm_msr.c
125
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/amd/svm_msr.c
142
svm_wrmsr(struct svm_vcpu *vcpu, u_int num, uint64_t val, bool *retu)
sys/amd64/vmm/amd/svm_msr.c
156
if (vm_wrmtrr(&vcpu->mtrr, num, val) != 0) {
sys/amd64/vmm/amd/svm_msr.c
157
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/amd/svm_msr.c
174
svm_set_tsc_offset(vcpu, val - rdtsc());
sys/amd64/vmm/amd/svm_msr.c
73
svm_msr_guest_init(struct svm_softc *sc, struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_msr.c
87
svm_msr_guest_enter(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_msr.c
95
svm_msr_guest_exit(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_msr.h
36
void svm_msr_guest_init(struct svm_softc *sc, struct svm_vcpu *vcpu);
sys/amd64/vmm/amd/svm_msr.h
37
void svm_msr_guest_enter(struct svm_vcpu *vcpu);
sys/amd64/vmm/amd/svm_msr.h
38
void svm_msr_guest_exit(struct svm_vcpu *vcpu);
sys/amd64/vmm/amd/svm_msr.h
40
int svm_wrmsr(struct svm_vcpu *vcpu, u_int num, uint64_t val, bool *retu);
sys/amd64/vmm/amd/svm_msr.h
41
int svm_rdmsr(struct svm_vcpu *vcpu, u_int num, uint64_t *result, bool *retu);
sys/amd64/vmm/amd/svm_softc.h
100
svm_get_vmcb_state(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_softc.h
103
return (&vcpu->vmcb->state);
sys/amd64/vmm/amd/svm_softc.h
107
svm_get_vmcb_ctrl(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_softc.h
110
return (&vcpu->vmcb->ctrl);
sys/amd64/vmm/amd/svm_softc.h
114
svm_get_guest_regctx(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_softc.h
117
return (&vcpu->swctx);
sys/amd64/vmm/amd/svm_softc.h
121
svm_set_dirty(struct svm_vcpu *vcpu, uint32_t dirtybits)
sys/amd64/vmm/amd/svm_softc.h
124
vcpu->dirty |= dirtybits;
sys/amd64/vmm/amd/svm_softc.h
52
struct vcpu *vcpu;
sys/amd64/vmm/amd/svm_softc.h
77
#define SVM_CTR0(vcpu, format) \
sys/amd64/vmm/amd/svm_softc.h
78
VCPU_CTR0((vcpu)->sc->vm, (vcpu)->vcpuid, format)
sys/amd64/vmm/amd/svm_softc.h
80
#define SVM_CTR1(vcpu, format, p1) \
sys/amd64/vmm/amd/svm_softc.h
81
VCPU_CTR1((vcpu)->sc->vm, (vcpu)->vcpuid, format, p1)
sys/amd64/vmm/amd/svm_softc.h
83
#define SVM_CTR2(vcpu, format, p1, p2) \
sys/amd64/vmm/amd/svm_softc.h
84
VCPU_CTR2((vcpu)->sc->vm, (vcpu)->vcpuid, format, p1, p2)
sys/amd64/vmm/amd/svm_softc.h
86
#define SVM_CTR3(vcpu, format, p1, p2, p3) \
sys/amd64/vmm/amd/svm_softc.h
87
VCPU_CTR3((vcpu)->sc->vm, (vcpu)->vcpuid, format, p1, p2, p3)
sys/amd64/vmm/amd/svm_softc.h
89
#define SVM_CTR4(vcpu, format, p1, p2, p3, p4) \
sys/amd64/vmm/amd/svm_softc.h
90
VCPU_CTR4((vcpu)->sc->vm, (vcpu)->vcpuid, format, p1, p2, p3, p4)
sys/amd64/vmm/amd/svm_softc.h
93
svm_get_vmcb(struct svm_vcpu *vcpu)
sys/amd64/vmm/amd/svm_softc.h
96
return (vcpu->vmcb);
sys/amd64/vmm/amd/vmcb.c
118
vmcb_access(struct svm_vcpu *vcpu, int write, int ident, uint64_t *val)
sys/amd64/vmm/amd/vmcb.c
124
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/vmcb.c
147
SVM_CTR1(vcpu, "Invalid size %d for VMCB access: %d", bytes);
sys/amd64/vmm/amd/vmcb.c
153
svm_set_dirty(vcpu, 0xffffffff);
sys/amd64/vmm/amd/vmcb.c
162
vmcb_read(struct svm_vcpu *vcpu, int ident, uint64_t *retval)
sys/amd64/vmm/amd/vmcb.c
169
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/vmcb.c
174
return (vmcb_access(vcpu, 0, ident, retval));
sys/amd64/vmm/amd/vmcb.c
248
*retval = vlapic_get_cr8(vm_lapic(vcpu->vcpu));
sys/amd64/vmm/amd/vmcb.c
268
vmcb_write(struct svm_vcpu *vcpu, int ident, uint64_t val)
sys/amd64/vmm/amd/vmcb.c
275
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/vmcb.c
281
return (vmcb_access(vcpu, 1, ident, &val));
sys/amd64/vmm/amd/vmcb.c
286
svm_set_dirty(vcpu, VMCB_CACHE_CR);
sys/amd64/vmm/amd/vmcb.c
291
svm_set_dirty(vcpu, VMCB_CACHE_CR2);
sys/amd64/vmm/amd/vmcb.c
296
svm_set_dirty(vcpu, VMCB_CACHE_CR);
sys/amd64/vmm/amd/vmcb.c
301
svm_set_dirty(vcpu, VMCB_CACHE_CR);
sys/amd64/vmm/amd/vmcb.c
306
svm_set_dirty(vcpu, VMCB_CACHE_DR);
sys/amd64/vmm/amd/vmcb.c
311
svm_set_dirty(vcpu, VMCB_CACHE_DR);
sys/amd64/vmm/amd/vmcb.c
317
svm_set_dirty(vcpu, VMCB_CACHE_CR);
sys/amd64/vmm/amd/vmcb.c
350
svm_set_dirty(vcpu, VMCB_CACHE_SEG);
sys/amd64/vmm/amd/vmcb.c
381
vmcb_setdesc(struct svm_vcpu *vcpu, int reg, struct seg_desc *desc)
sys/amd64/vmm/amd/vmcb.c
387
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/vmcb.c
409
SVM_CTR4(vcpu, "Setting desc %d: base (%#lx), limit (%#x), "
sys/amd64/vmm/amd/vmcb.c
417
svm_set_dirty(vcpu, VMCB_CACHE_SEG);
sys/amd64/vmm/amd/vmcb.c
421
svm_set_dirty(vcpu, VMCB_CACHE_DT);
sys/amd64/vmm/amd/vmcb.c
431
vmcb_getdesc(struct svm_vcpu *vcpu, int reg, struct seg_desc *desc)
sys/amd64/vmm/amd/vmcb.c
436
vmcb = svm_get_vmcb(vcpu);
sys/amd64/vmm/amd/vmcb.c
471
vmcb_getany(struct svm_vcpu *vcpu, int ident, uint64_t *val)
sys/amd64/vmm/amd/vmcb.c
480
error = vmcb_read(vcpu, ident, val);
sys/amd64/vmm/amd/vmcb.c
487
vmcb_setany(struct svm_vcpu *vcpu, int ident, uint64_t val)
sys/amd64/vmm/amd/vmcb.c
496
error = vmcb_write(vcpu, ident, val);
sys/amd64/vmm/amd/vmcb.c
503
vmcb_snapshot_desc(struct svm_vcpu *vcpu, int reg,
sys/amd64/vmm/amd/vmcb.c
510
ret = vmcb_getdesc(vcpu, reg, &desc);
sys/amd64/vmm/amd/vmcb.c
522
ret = vmcb_setdesc(vcpu, reg, &desc);
sys/amd64/vmm/amd/vmcb.c
535
vmcb_snapshot_any(struct svm_vcpu *vcpu, int ident,
sys/amd64/vmm/amd/vmcb.c
542
ret = vmcb_getany(vcpu, ident, &val);
sys/amd64/vmm/amd/vmcb.c
550
ret = vmcb_setany(vcpu, ident, val);
sys/amd64/vmm/amd/vmcb.h
355
int vmcb_read(struct svm_vcpu *vcpu, int ident, uint64_t *retval);
sys/amd64/vmm/amd/vmcb.h
356
int vmcb_write(struct svm_vcpu *vcpu, int ident, uint64_t val);
sys/amd64/vmm/amd/vmcb.h
357
int vmcb_setdesc(struct svm_vcpu *vcpu, int ident, struct seg_desc *desc);
sys/amd64/vmm/amd/vmcb.h
358
int vmcb_getdesc(struct svm_vcpu *vcpu, int ident, struct seg_desc *desc);
sys/amd64/vmm/amd/vmcb.h
361
int vmcb_getany(struct svm_vcpu *vcpu, int ident, uint64_t *val);
sys/amd64/vmm/amd/vmcb.h
362
int vmcb_setany(struct svm_vcpu *vcpu, int ident, uint64_t val);
sys/amd64/vmm/amd/vmcb.h
363
int vmcb_snapshot_desc(struct svm_vcpu *vcpu, int reg,
sys/amd64/vmm/amd/vmcb.h
365
int vmcb_snapshot_any(struct svm_vcpu*vcpu, int ident,
sys/amd64/vmm/intel/vmx.c
1132
vmx_vcpu_init(void *vmi, struct vcpu *vcpu1, int vcpuid)
sys/amd64/vmm/intel/vmx.c
1136
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
1143
vcpu = malloc(sizeof(*vcpu), M_VMX, M_WAITOK | M_ZERO);
sys/amd64/vmm/intel/vmx.c
1144
vcpu->vmx = vmx;
sys/amd64/vmm/intel/vmx.c
1145
vcpu->vcpu = vcpu1;
sys/amd64/vmm/intel/vmx.c
1146
vcpu->vcpuid = vcpuid;
sys/amd64/vmm/intel/vmx.c
1147
vcpu->vmcs = malloc_aligned(sizeof(*vmcs), PAGE_SIZE, M_VMX,
sys/amd64/vmm/intel/vmx.c
1149
vcpu->apic_page = malloc_aligned(PAGE_SIZE, PAGE_SIZE, M_VMX,
sys/amd64/vmm/intel/vmx.c
1151
vcpu->pir_desc = malloc_aligned(sizeof(*vcpu->pir_desc), 64, M_VMX,
sys/amd64/vmm/intel/vmx.c
1154
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
1162
vmx_msr_guest_init(vmx, vcpu);
sys/amd64/vmm/intel/vmx.c
1169
error += vmwrite(VMCS_HOST_RSP, (u_long)&vcpu->ctx);
sys/amd64/vmm/intel/vmx.c
1173
if (vcpu_trap_wbinvd(vcpu->vcpu)) {
sys/amd64/vmm/intel/vmx.c
1193
if (vcpu_trace_exceptions(vcpu->vcpu))
sys/amd64/vmm/intel/vmx.c
1199
vcpu->ctx.guest_dr6 = DBREG_DR6_RESERVED1;
sys/amd64/vmm/intel/vmx.c
1203
error += vmwrite(VMCS_VIRTUAL_APIC, vtophys(vcpu->apic_page));
sys/amd64/vmm/intel/vmx.c
1215
error += vmwrite(VMCS_PIR_DESC, vtophys(vcpu->pir_desc));
sys/amd64/vmm/intel/vmx.c
1220
vcpu->cap.set = 0;
sys/amd64/vmm/intel/vmx.c
1221
vcpu->cap.set |= cap_rdpid != 0 ? 1 << VM_CAP_RDPID : 0;
sys/amd64/vmm/intel/vmx.c
1222
vcpu->cap.set |= cap_rdtscp != 0 ? 1 << VM_CAP_RDTSCP : 0;
sys/amd64/vmm/intel/vmx.c
1223
vcpu->cap.proc_ctls = procbased_ctls;
sys/amd64/vmm/intel/vmx.c
1224
vcpu->cap.proc_ctls2 = procbased_ctls2;
sys/amd64/vmm/intel/vmx.c
1225
vcpu->cap.exc_bitmap = exc_bitmap;
sys/amd64/vmm/intel/vmx.c
1227
vcpu->state.nextrip = ~0;
sys/amd64/vmm/intel/vmx.c
1228
vcpu->state.lastcpu = NOCPU;
sys/amd64/vmm/intel/vmx.c
1229
vcpu->state.vpid = vpid;
sys/amd64/vmm/intel/vmx.c
1245
vcpu->ctx.pmap = vmx->pmap;
sys/amd64/vmm/intel/vmx.c
1247
return (vcpu);
sys/amd64/vmm/intel/vmx.c
1251
vmx_handle_cpuid(struct vmx_vcpu *vcpu, struct vmxctx *vmxctx)
sys/amd64/vmm/intel/vmx.c
1255
handled = x86_emulate_cpuid(vcpu->vcpu, (uint64_t *)&vmxctx->guest_rax,
sys/amd64/vmm/intel/vmx.c
1262
vmx_run_trace(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1264
VMX_CTR1(vcpu, "Resume execution at %#lx", vmcs_guest_rip());
sys/amd64/vmm/intel/vmx.c
1268
vmx_exit_trace(struct vmx_vcpu *vcpu, uint64_t rip, uint32_t exit_reason,
sys/amd64/vmm/intel/vmx.c
1271
VMX_CTR3(vcpu, "%s %s vmexit at 0x%0lx",
sys/amd64/vmm/intel/vmx.c
1277
vmx_astpending_trace(struct vmx_vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/intel/vmx.c
1279
VMX_CTR1(vcpu, "astpending vmexit at 0x%0lx", rip);
sys/amd64/vmm/intel/vmx.c
1289
vmx_invvpid(struct vmx *vmx, struct vmx_vcpu *vcpu, pmap_t pmap, int running)
sys/amd64/vmm/intel/vmx.c
1294
vmxstate = &vcpu->state;
sys/amd64/vmm/intel/vmx.c
1310
"critical section", __func__, vcpu->vcpuid));
sys/amd64/vmm/intel/vmx.c
1333
vmm_stat_incr(vcpu->vcpu, VCPU_INVVPID_DONE, 1);
sys/amd64/vmm/intel/vmx.c
1341
vmm_stat_incr(vcpu->vcpu, VCPU_INVVPID_SAVED, 1);
sys/amd64/vmm/intel/vmx.c
1346
vmx_set_pcpu_defaults(struct vmx *vmx, struct vmx_vcpu *vcpu, pmap_t pmap)
sys/amd64/vmm/intel/vmx.c
1350
vmxstate = &vcpu->state;
sys/amd64/vmm/intel/vmx.c
1356
vmm_stat_incr(vcpu->vcpu, VCPU_MIGRATIONS, 1);
sys/amd64/vmm/intel/vmx.c
1361
vmx_invvpid(vmx, vcpu, pmap, 1);
sys/amd64/vmm/intel/vmx.c
1370
vmx_set_int_window_exiting(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1373
if ((vcpu->cap.proc_ctls & PROCBASED_INT_WINDOW_EXITING) == 0) {
sys/amd64/vmm/intel/vmx.c
1374
vcpu->cap.proc_ctls |= PROCBASED_INT_WINDOW_EXITING;
sys/amd64/vmm/intel/vmx.c
1375
vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vcpu->cap.proc_ctls);
sys/amd64/vmm/intel/vmx.c
1376
VMX_CTR0(vcpu, "Enabling interrupt window exiting");
sys/amd64/vmm/intel/vmx.c
1381
vmx_clear_int_window_exiting(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1384
KASSERT((vcpu->cap.proc_ctls & PROCBASED_INT_WINDOW_EXITING) != 0,
sys/amd64/vmm/intel/vmx.c
1385
("intr_window_exiting not set: %#x", vcpu->cap.proc_ctls));
sys/amd64/vmm/intel/vmx.c
1386
vcpu->cap.proc_ctls &= ~PROCBASED_INT_WINDOW_EXITING;
sys/amd64/vmm/intel/vmx.c
1387
vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vcpu->cap.proc_ctls);
sys/amd64/vmm/intel/vmx.c
1388
VMX_CTR0(vcpu, "Disabling interrupt window exiting");
sys/amd64/vmm/intel/vmx.c
1392
vmx_set_nmi_window_exiting(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1395
if ((vcpu->cap.proc_ctls & PROCBASED_NMI_WINDOW_EXITING) == 0) {
sys/amd64/vmm/intel/vmx.c
1396
vcpu->cap.proc_ctls |= PROCBASED_NMI_WINDOW_EXITING;
sys/amd64/vmm/intel/vmx.c
1397
vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vcpu->cap.proc_ctls);
sys/amd64/vmm/intel/vmx.c
1398
VMX_CTR0(vcpu, "Enabling NMI window exiting");
sys/amd64/vmm/intel/vmx.c
1403
vmx_clear_nmi_window_exiting(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1406
KASSERT((vcpu->cap.proc_ctls & PROCBASED_NMI_WINDOW_EXITING) != 0,
sys/amd64/vmm/intel/vmx.c
1407
("nmi_window_exiting not set %#x", vcpu->cap.proc_ctls));
sys/amd64/vmm/intel/vmx.c
1408
vcpu->cap.proc_ctls &= ~PROCBASED_NMI_WINDOW_EXITING;
sys/amd64/vmm/intel/vmx.c
1409
vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vcpu->cap.proc_ctls);
sys/amd64/vmm/intel/vmx.c
1410
VMX_CTR0(vcpu, "Disabling NMI window exiting");
sys/amd64/vmm/intel/vmx.c
1414
vmx_set_tsc_offset(struct vmx_vcpu *vcpu, uint64_t offset)
sys/amd64/vmm/intel/vmx.c
1418
if ((vcpu->cap.proc_ctls & PROCBASED_TSC_OFFSET) == 0) {
sys/amd64/vmm/intel/vmx.c
1419
vcpu->cap.proc_ctls |= PROCBASED_TSC_OFFSET;
sys/amd64/vmm/intel/vmx.c
1420
vmcs_write(VMCS_PRI_PROC_BASED_CTLS, vcpu->cap.proc_ctls);
sys/amd64/vmm/intel/vmx.c
1421
VMX_CTR0(vcpu, "Enabling TSC offsetting");
sys/amd64/vmm/intel/vmx.c
1427
vm_set_tsc_offset(vcpu->vcpu, offset);
sys/amd64/vmm/intel/vmx.c
1438
vmx_inject_nmi(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1457
VMX_CTR0(vcpu, "Injecting vNMI");
sys/amd64/vmm/intel/vmx.c
1460
vm_nmi_clear(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1464
vmx_inject_interrupts(struct vmx_vcpu *vcpu, struct vlapic *vlapic,
sys/amd64/vmm/intel/vmx.c
1471
if (vcpu->cap.set & (1 << VM_CAP_MASK_HWINTR)) {
sys/amd64/vmm/intel/vmx.c
1475
if (vcpu->state.nextrip != guestrip) {
sys/amd64/vmm/intel/vmx.c
1478
VMX_CTR2(vcpu, "Guest interrupt blocking "
sys/amd64/vmm/intel/vmx.c
1480
vcpu->state.nextrip, guestrip);
sys/amd64/vmm/intel/vmx.c
1486
if (vm_entry_intinfo(vcpu->vcpu, &entryinfo)) {
sys/amd64/vmm/intel/vmx.c
1511
if (vm_nmi_pending(vcpu->vcpu)) {
sys/amd64/vmm/intel/vmx.c
1528
vmx_inject_nmi(vcpu);
sys/amd64/vmm/intel/vmx.c
1531
VMX_CTR1(vcpu, "Cannot inject NMI "
sys/amd64/vmm/intel/vmx.c
1535
VMX_CTR1(vcpu, "Cannot inject NMI due to "
sys/amd64/vmm/intel/vmx.c
1540
vmx_set_nmi_window_exiting(vcpu);
sys/amd64/vmm/intel/vmx.c
1543
extint_pending = vm_extint_pending(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1555
if ((vcpu->cap.proc_ctls & PROCBASED_INT_WINDOW_EXITING) != 0) {
sys/amd64/vmm/intel/vmx.c
1556
VMX_CTR0(vcpu, "Skip interrupt injection due to "
sys/amd64/vmm/intel/vmx.c
1576
vatpic_pending_intr(vcpu->vmx->vm, &vector);
sys/amd64/vmm/intel/vmx.c
1591
VMX_CTR2(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/intel/vmx.c
1598
VMX_CTR2(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/intel/vmx.c
1612
VMX_CTR2(vcpu, "Cannot inject vector %d due to "
sys/amd64/vmm/intel/vmx.c
1626
vm_extint_clear(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1627
vatpic_intr_accepted(vcpu->vmx->vm, vector);
sys/amd64/vmm/intel/vmx.c
1640
vmx_set_int_window_exiting(vcpu);
sys/amd64/vmm/intel/vmx.c
1643
VMX_CTR1(vcpu, "Injecting hwintr at vector %d", vector);
sys/amd64/vmm/intel/vmx.c
1652
vmx_set_int_window_exiting(vcpu);
sys/amd64/vmm/intel/vmx.c
1665
vmx_restore_nmi_blocking(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1669
VMX_CTR0(vcpu, "Restore Virtual-NMI blocking");
sys/amd64/vmm/intel/vmx.c
1676
vmx_clear_nmi_blocking(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1680
VMX_CTR0(vcpu, "Clear Virtual-NMI blocking");
sys/amd64/vmm/intel/vmx.c
1687
vmx_assert_nmi_blocking(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
1697
vmx_emulate_xsetbv(struct vmx *vmx, struct vmx_vcpu *vcpu,
sys/amd64/vmm/intel/vmx.c
1704
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
1715
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1721
vm_inject_ud(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1727
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1732
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1739
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1750
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1760
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1774
vmx_get_guest_reg(struct vmx_vcpu *vcpu, int ident)
sys/amd64/vmm/intel/vmx.c
1778
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
1819
vmx_set_guest_reg(struct vmx_vcpu *vcpu, int ident, uint64_t regval)
sys/amd64/vmm/intel/vmx.c
1823
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
1880
vmx_emulate_cr0_access(struct vmx_vcpu *vcpu, uint64_t exitqual)
sys/amd64/vmm/intel/vmx.c
1888
regval = vmx_get_guest_reg(vcpu, (exitqual >> 8) & 0xf);
sys/amd64/vmm/intel/vmx.c
1918
vmx_emulate_cr4_access(struct vmx_vcpu *vcpu, uint64_t exitqual)
sys/amd64/vmm/intel/vmx.c
1926
regval = vmx_get_guest_reg(vcpu, (exitqual >> 8) & 0xf);
sys/amd64/vmm/intel/vmx.c
1938
vmx_emulate_cr8_access(struct vmx *vmx, struct vmx_vcpu *vcpu,
sys/amd64/vmm/intel/vmx.c
1950
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
1954
vmx_set_guest_reg(vcpu, regnum, cr8);
sys/amd64/vmm/intel/vmx.c
1956
cr8 = vmx_get_guest_reg(vcpu, regnum);
sys/amd64/vmm/intel/vmx.c
2012
inout_str_index(struct vmx_vcpu *vcpu, int in)
sys/amd64/vmm/intel/vmx.c
2019
error = vmx_getreg(vcpu, reg, &val);
sys/amd64/vmm/intel/vmx.c
2025
inout_str_count(struct vmx_vcpu *vcpu, int rep)
sys/amd64/vmm/intel/vmx.c
2031
error = vmx_getreg(vcpu, VM_REG_GUEST_RCX, &val);
sys/amd64/vmm/intel/vmx.c
2058
inout_str_seginfo(struct vmx_vcpu *vcpu, uint32_t inst_info, int in,
sys/amd64/vmm/intel/vmx.c
2070
error = vmx_getdesc(vcpu, vis->seg_name, &vis->seg_desc);
sys/amd64/vmm/intel/vmx.c
2159
apic_access_virtualization(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
2163
proc_ctls2 = vcpu->cap.proc_ctls2;
sys/amd64/vmm/intel/vmx.c
2168
x2apic_virtualization(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx.c
2172
proc_ctls2 = vcpu->cap.proc_ctls2;
sys/amd64/vmm/intel/vmx.c
2177
vmx_handle_apic_write(struct vmx_vcpu *vcpu, struct vlapic *vlapic,
sys/amd64/vmm/intel/vmx.c
2187
if (!apic_access_virtualization(vcpu)) {
sys/amd64/vmm/intel/vmx.c
2195
if (x2apic_virtualization(vcpu) &&
sys/amd64/vmm/intel/vmx.c
2245
apic_access_fault(struct vmx_vcpu *vcpu, uint64_t gpa)
sys/amd64/vmm/intel/vmx.c
2248
if (apic_access_virtualization(vcpu) &&
sys/amd64/vmm/intel/vmx.c
2256
vmx_handle_apic_access(struct vmx_vcpu *vcpu, struct vm_exit *vmexit)
sys/amd64/vmm/intel/vmx.c
2261
if (!apic_access_virtualization(vcpu))
sys/amd64/vmm/intel/vmx.c
2342
emulate_wrmsr(struct vmx_vcpu *vcpu, u_int num, uint64_t val, bool *retu)
sys/amd64/vmm/intel/vmx.c
2347
error = lapic_wrmsr(vcpu->vcpu, num, val, retu);
sys/amd64/vmm/intel/vmx.c
2349
error = vmx_wrmsr(vcpu, num, val, retu);
sys/amd64/vmm/intel/vmx.c
2355
emulate_rdmsr(struct vmx_vcpu *vcpu, u_int num, bool *retu)
sys/amd64/vmm/intel/vmx.c
2363
error = lapic_rdmsr(vcpu->vcpu, num, &result, retu);
sys/amd64/vmm/intel/vmx.c
2365
error = vmx_rdmsr(vcpu, num, &result, retu);
sys/amd64/vmm/intel/vmx.c
2369
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
2382
vmx_exit_process(struct vmx *vmx, struct vmx_vcpu *vcpu, struct vm_exit *vmexit)
sys/amd64/vmm/intel/vmx.c
2401
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
2403
vcpuid = vcpu->vcpuid;
sys/amd64/vmm/intel/vmx.c
2410
vmm_stat_incr(vcpu->vcpu, VMEXIT_COUNT, 1);
sys/amd64/vmm/intel/vmx.c
2420
VMX_CTR0(vcpu, "Handling MCE during VM-entry");
sys/amd64/vmm/intel/vmx.c
2441
error = vm_exit_intinfo(vcpu->vcpu, exitintinfo);
sys/amd64/vmm/intel/vmx.c
2459
vmx_clear_nmi_blocking(vcpu);
sys/amd64/vmm/intel/vmx.c
2461
vmx_assert_nmi_blocking(vcpu);
sys/amd64/vmm/intel/vmx.c
2515
VMX_CTR4(vcpu, "task switch reason %d, tss 0x%04x, "
sys/amd64/vmm/intel/vmx.c
2521
vmm_stat_incr(vcpu->vcpu, VMEXIT_CR_ACCESS, 1);
sys/amd64/vmm/intel/vmx.c
2525
handled = vmx_emulate_cr0_access(vcpu, qual);
sys/amd64/vmm/intel/vmx.c
2528
handled = vmx_emulate_cr4_access(vcpu, qual);
sys/amd64/vmm/intel/vmx.c
2531
handled = vmx_emulate_cr8_access(vmx, vcpu, qual);
sys/amd64/vmm/intel/vmx.c
2536
vmm_stat_incr(vcpu->vcpu, VMEXIT_RDMSR, 1);
sys/amd64/vmm/intel/vmx.c
2539
VMX_CTR1(vcpu, "rdmsr 0x%08x", ecx);
sys/amd64/vmm/intel/vmx.c
2541
error = emulate_rdmsr(vcpu, ecx, &retu);
sys/amd64/vmm/intel/vmx.c
2554
vmm_stat_incr(vcpu->vcpu, VMEXIT_WRMSR, 1);
sys/amd64/vmm/intel/vmx.c
2559
VMX_CTR2(vcpu, "wrmsr 0x%08x value 0x%016lx",
sys/amd64/vmm/intel/vmx.c
2563
error = emulate_wrmsr(vcpu, ecx, (uint64_t)edx << 32 | eax,
sys/amd64/vmm/intel/vmx.c
2578
vmm_stat_incr(vcpu->vcpu, VMEXIT_HLT, 1);
sys/amd64/vmm/intel/vmx.c
2589
vmm_stat_incr(vcpu->vcpu, VMEXIT_MTRAP, 1);
sys/amd64/vmm/intel/vmx.c
2595
vmm_stat_incr(vcpu->vcpu, VMEXIT_PAUSE, 1);
sys/amd64/vmm/intel/vmx.c
2600
vmm_stat_incr(vcpu->vcpu, VMEXIT_INTR_WINDOW, 1);
sys/amd64/vmm/intel/vmx.c
2602
vmx_clear_int_window_exiting(vcpu);
sys/amd64/vmm/intel/vmx.c
2633
vmm_stat_incr(vcpu->vcpu, VMEXIT_EXTINT, 1);
sys/amd64/vmm/intel/vmx.c
2638
if (vm_nmi_pending(vcpu->vcpu))
sys/amd64/vmm/intel/vmx.c
2639
vmx_inject_nmi(vcpu);
sys/amd64/vmm/intel/vmx.c
2640
vmx_clear_nmi_window_exiting(vcpu);
sys/amd64/vmm/intel/vmx.c
2641
vmm_stat_incr(vcpu->vcpu, VMEXIT_NMI_WINDOW, 1);
sys/amd64/vmm/intel/vmx.c
2644
vmm_stat_incr(vcpu->vcpu, VMEXIT_INOUT, 1);
sys/amd64/vmm/intel/vmx.c
2659
vis->index = inout_str_index(vcpu, in);
sys/amd64/vmm/intel/vmx.c
2660
vis->count = inout_str_count(vcpu, vis->inout.rep);
sys/amd64/vmm/intel/vmx.c
2664
inout_str_seginfo(vcpu, inst_info, in, vis);
sys/amd64/vmm/intel/vmx.c
2669
vmm_stat_incr(vcpu->vcpu, VMEXIT_CPUID, 1);
sys/amd64/vmm/intel/vmx.c
2671
handled = vmx_handle_cpuid(vcpu, vmxctx);
sys/amd64/vmm/intel/vmx.c
2674
vmm_stat_incr(vcpu->vcpu, VMEXIT_EXCEPTION, 1);
sys/amd64/vmm/intel/vmx.c
2694
vmx_restore_nmi_blocking(vcpu);
sys/amd64/vmm/intel/vmx.c
2707
VMX_CTR0(vcpu, "Vectoring to MCE handler");
sys/amd64/vmm/intel/vmx.c
2717
(vcpu->cap.set & (1 << VM_CAP_BPT_EXIT))) {
sys/amd64/vmm/intel/vmx.c
2745
VMX_CTR2(vcpu, "Reflecting exception %d/%#x into "
sys/amd64/vmm/intel/vmx.c
2749
error = vm_inject_exception(vcpu->vcpu, intr_vec,
sys/amd64/vmm/intel/vmx.c
2762
if (vm_mem_allocated(vcpu->vcpu, gpa) ||
sys/amd64/vmm/intel/vmx.c
2763
ppt_is_mmio(vmx->vm, gpa) || apic_access_fault(vcpu, gpa)) {
sys/amd64/vmm/intel/vmx.c
2768
vmm_stat_incr(vcpu->vcpu, VMEXIT_NESTED_FAULT, 1);
sys/amd64/vmm/intel/vmx.c
2773
vmm_stat_incr(vcpu->vcpu, VMEXIT_INST_EMUL, 1);
sys/amd64/vmm/intel/vmx.c
2787
vmx_restore_nmi_blocking(vcpu);
sys/amd64/vmm/intel/vmx.c
2797
handled = vmx_handle_apic_access(vcpu, vmexit);
sys/amd64/vmm/intel/vmx.c
2805
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
2808
handled = vmx_handle_apic_write(vcpu, vlapic, qual);
sys/amd64/vmm/intel/vmx.c
2812
handled = vmx_emulate_xsetbv(vmx, vcpu, vmexit);
sys/amd64/vmm/intel/vmx.c
2823
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
2849
vmm_stat_incr(vcpu->vcpu, VMEXIT_UNKNOWN, 1);
sys/amd64/vmm/intel/vmx.c
2924
vmx_exit_handle_nmi(struct vmx_vcpu *vcpu, struct vm_exit *vmexit)
sys/amd64/vmm/intel/vmx.c
2940
VMX_CTR0(vcpu, "Vectoring to NMI handler");
sys/amd64/vmm/intel/vmx.c
3042
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
3051
vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3052
vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3053
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3054
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
3055
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
3056
vmexit = vm_exitinfo(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
3062
vmx_msr_guest_enter(vcpu);
sys/amd64/vmm/intel/vmx.c
3077
vmx_set_pcpu_defaults(vmx, vcpu, pmap);
sys/amd64/vmm/intel/vmx.c
3102
vmx_inject_interrupts(vcpu, vlapic, rip);
sys/amd64/vmm/intel/vmx.c
3111
vm_exit_suspended(vcpu->vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3115
if (vcpu_rendezvous_pending(vcpu->vcpu, evinfo)) {
sys/amd64/vmm/intel/vmx.c
3117
vm_exit_rendezvous(vcpu->vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3123
vm_exit_reqidle(vcpu->vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3127
if (vcpu_should_yield(vcpu->vcpu)) {
sys/amd64/vmm/intel/vmx.c
3129
vm_exit_astpending(vcpu->vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3130
vmx_astpending_trace(vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3135
if (vcpu_debugged(vcpu->vcpu)) {
sys/amd64/vmm/intel/vmx.c
3137
vm_exit_debug(vcpu->vcpu, rip);
sys/amd64/vmm/intel/vmx.c
3146
if ((vcpu->cap.proc_ctls & PROCBASED_USE_TPR_SHADOW) != 0) {
sys/amd64/vmm/intel/vmx.c
3182
vmx_msr_guest_enter_tsc_aux(vmx, vcpu);
sys/amd64/vmm/intel/vmx.c
3192
vmx_run_trace(vcpu);
sys/amd64/vmm/intel/vmx.c
3197
vmx_msr_guest_exit_tsc_aux(vmx, vcpu);
sys/amd64/vmm/intel/vmx.c
3210
vcpu->state.nextrip = rip;
sys/amd64/vmm/intel/vmx.c
3213
vmx_exit_handle_nmi(vcpu, vmexit);
sys/amd64/vmm/intel/vmx.c
3215
handled = vmx_exit_process(vmx, vcpu, vmexit);
sys/amd64/vmm/intel/vmx.c
3221
vmx_exit_trace(vcpu, rip, exit_reason, handled);
sys/amd64/vmm/intel/vmx.c
3235
VMX_CTR1(vcpu, "returning from vmx_run: exitcode %d",
sys/amd64/vmm/intel/vmx.c
3239
vmx_msr_guest_exit(vcpu);
sys/amd64/vmm/intel/vmx.c
3247
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3249
vpid_free(vcpu->state.vpid);
sys/amd64/vmm/intel/vmx.c
3250
free(vcpu->pir_desc, M_VMX);
sys/amd64/vmm/intel/vmx.c
3251
free(vcpu->apic_page, M_VMX);
sys/amd64/vmm/intel/vmx.c
3252
free(vcpu->vmcs, M_VMX);
sys/amd64/vmm/intel/vmx.c
3253
free(vcpu, M_VMX);
sys/amd64/vmm/intel/vmx.c
3348
vmx_get_intr_shadow(struct vmx_vcpu *vcpu, int running, uint64_t *retval)
sys/amd64/vmm/intel/vmx.c
3353
error = vmcs_getreg(vcpu->vmcs, running,
sys/amd64/vmm/intel/vmx.c
3360
vmx_modify_intr_shadow(struct vmx_vcpu *vcpu, int running, uint64_t val)
sys/amd64/vmm/intel/vmx.c
3374
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3382
VMX_CTR2(vcpu, "Setting intr_shadow to %#lx %s", val,
sys/amd64/vmm/intel/vmx.c
3412
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3413
struct vmx *vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3415
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
3418
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
3422
return (vmx_get_intr_shadow(vcpu, running, retval));
sys/amd64/vmm/intel/vmx.c
3424
*retval = vcpu->guest_msrs[IDX_MSR_KGSBASE];
sys/amd64/vmm/intel/vmx.c
3427
*retval = vlapic_get_cr8(vm_lapic(vcpu->vcpu));
sys/amd64/vmm/intel/vmx.c
3431
if (vmxctx_getreg(&vcpu->ctx, reg, retval) == 0)
sys/amd64/vmm/intel/vmx.c
3434
return (vmcs_getreg(vcpu->vmcs, running, reg, retval));
sys/amd64/vmm/intel/vmx.c
3443
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3444
struct vmx *vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3446
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
3449
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
3452
return (vmx_modify_intr_shadow(vcpu, running, val));
sys/amd64/vmm/intel/vmx.c
3454
if (vmxctx_setreg(&vcpu->ctx, reg, val) == 0)
sys/amd64/vmm/intel/vmx.c
3461
error = vmcs_setreg(vcpu->vmcs, running, reg, val);
sys/amd64/vmm/intel/vmx.c
3471
vmcs_getreg(vcpu->vmcs, running,
sys/amd64/vmm/intel/vmx.c
3477
vmcs_setreg(vcpu->vmcs, running,
sys/amd64/vmm/intel/vmx.c
3486
error = vmcs_setreg(vcpu->vmcs, running,
sys/amd64/vmm/intel/vmx.c
3498
pmap = vcpu->ctx.pmap;
sys/amd64/vmm/intel/vmx.c
3499
vmx_invvpid(vmx, vcpu, pmap, running);
sys/amd64/vmm/intel/vmx.c
3510
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3511
struct vmx *vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3513
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
3516
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
3518
return (vmcs_getdesc(vcpu->vmcs, running, reg, desc));
sys/amd64/vmm/intel/vmx.c
3525
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3526
struct vmx *vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3528
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
3531
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
3533
return (vmcs_setdesc(vcpu->vmcs, running, reg, desc));
sys/amd64/vmm/intel/vmx.c
3539
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3545
vcap = vcpu->cap.set;
sys/amd64/vmm/intel/vmx.c
3593
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
3594
struct vmcs *vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3610
pptr = &vcpu->cap.proc_ctls;
sys/amd64/vmm/intel/vmx.c
3619
pptr = &vcpu->cap.proc_ctls;
sys/amd64/vmm/intel/vmx.c
3628
pptr = &vcpu->cap.proc_ctls;
sys/amd64/vmm/intel/vmx.c
3648
pptr = &vcpu->cap.proc_ctls2;
sys/amd64/vmm/intel/vmx.c
3657
pptr = &vcpu->cap.proc_ctls2;
sys/amd64/vmm/intel/vmx.c
3667
if (vcpu->cap.exc_bitmap != 0xffffffff) {
sys/amd64/vmm/intel/vmx.c
3668
pptr = &vcpu->cap.exc_bitmap;
sys/amd64/vmm/intel/vmx.c
3677
vlapic = vm_lapic(vcpu->vcpu);
sys/amd64/vmm/intel/vmx.c
3711
vcpu->cap.set |= (1 << type);
sys/amd64/vmm/intel/vmx.c
3713
vcpu->cap.set &= ~(1 << type);
sys/amd64/vmm/intel/vmx.c
3734
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
3839
vmexit = vm_exitinfo(vlapic->vcpu);
sys/amd64/vmm/intel/vmx.c
3905
KASSERT(!vcpu_is_running(vlapic->vcpu, NULL),
sys/amd64/vmm/intel/vmx.c
3909
vmcs = vlapic_vtx->vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3926
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
3931
vcpu = vlapic_vtx->vcpu;
sys/amd64/vmm/intel/vmx.c
3932
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3934
proc_ctls = vcpu->cap.proc_ctls;
sys/amd64/vmm/intel/vmx.c
3938
vcpu->cap.proc_ctls = proc_ctls;
sys/amd64/vmm/intel/vmx.c
3950
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
3956
vcpu = vlapic_vtx->vcpu;
sys/amd64/vmm/intel/vmx.c
3957
vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
3958
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
3960
proc_ctls2 = vcpu->cap.proc_ctls2;
sys/amd64/vmm/intel/vmx.c
3966
vcpu->cap.proc_ctls2 = proc_ctls2;
sys/amd64/vmm/intel/vmx.c
4096
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
4100
vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
4101
vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
4105
vlapic->vcpu = vcpu->vcpu;
sys/amd64/vmm/intel/vmx.c
4106
vlapic->vcpuid = vcpu->vcpuid;
sys/amd64/vmm/intel/vmx.c
4107
vlapic->apic_page = (struct LAPIC *)vcpu->apic_page;
sys/amd64/vmm/intel/vmx.c
4110
vlapic_vtx->pir_desc = vcpu->pir_desc;
sys/amd64/vmm/intel/vmx.c
4111
vlapic_vtx->vcpu = vcpu;
sys/amd64/vmm/intel/vmx.c
4147
struct vmx_vcpu *vcpu;
sys/amd64/vmm/intel/vmx.c
4152
vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
4153
vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
4154
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
4156
run = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
4159
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
4218
SNAPSHOT_BUF_OR_LEAVE(vcpu->guest_msrs,
sys/amd64/vmm/intel/vmx.c
4219
sizeof(vcpu->guest_msrs), meta, err, done);
sys/amd64/vmm/intel/vmx.c
4221
SNAPSHOT_BUF_OR_LEAVE(vcpu->pir_desc,
sys/amd64/vmm/intel/vmx.c
4222
sizeof(*vcpu->pir_desc), meta, err, done);
sys/amd64/vmm/intel/vmx.c
4224
SNAPSHOT_BUF_OR_LEAVE(&vcpu->mtrr,
sys/amd64/vmm/intel/vmx.c
4225
sizeof(vcpu->mtrr), meta, err, done);
sys/amd64/vmm/intel/vmx.c
4227
vmxctx = &vcpu->ctx;
sys/amd64/vmm/intel/vmx.c
4257
struct vmx_vcpu *vcpu = vcpui;
sys/amd64/vmm/intel/vmx.c
4262
vmx = vcpu->vmx;
sys/amd64/vmm/intel/vmx.c
4263
vmcs = vcpu->vmcs;
sys/amd64/vmm/intel/vmx.c
4265
running = vcpu_is_running(vcpu->vcpu, &hostcpu);
sys/amd64/vmm/intel/vmx.c
4268
vcpu->vcpuid);
sys/amd64/vmm/intel/vmx.c
4275
error = vmx_set_tsc_offset(vcpu, offset);
sys/amd64/vmm/intel/vmx.h
129
struct vcpu *vcpu;
sys/amd64/vmm/intel/vmx.h
152
#define VMX_CTR0(vcpu, format) \
sys/amd64/vmm/intel/vmx.h
153
VCPU_CTR0((vcpu)->vmx->vm, (vcpu)->vcpuid, format)
sys/amd64/vmm/intel/vmx.h
155
#define VMX_CTR1(vcpu, format, p1) \
sys/amd64/vmm/intel/vmx.h
156
VCPU_CTR1((vcpu)->vmx->vm, (vcpu)->vcpuid, format, p1)
sys/amd64/vmm/intel/vmx.h
158
#define VMX_CTR2(vcpu, format, p1, p2) \
sys/amd64/vmm/intel/vmx.h
159
VCPU_CTR2((vcpu)->vmx->vm, (vcpu)->vcpuid, format, p1, p2)
sys/amd64/vmm/intel/vmx.h
161
#define VMX_CTR3(vcpu, format, p1, p2, p3) \
sys/amd64/vmm/intel/vmx.h
162
VCPU_CTR3((vcpu)->vmx->vm, (vcpu)->vcpuid, format, p1, p2, p3)
sys/amd64/vmm/intel/vmx.h
164
#define VMX_CTR4(vcpu, format, p1, p2, p3, p4) \
sys/amd64/vmm/intel/vmx.h
165
VCPU_CTR4((vcpu)->vmx->vm, (vcpu)->vcpuid, format, p1, p2, p3, p4)
sys/amd64/vmm/intel/vmx.h
176
int vmx_set_tsc_offset(struct vmx_vcpu *vcpu, uint64_t offset);
sys/amd64/vmm/intel/vmx_msr.c
312
vmx_msr_guest_init(struct vmx *vmx, struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx_msr.c
318
if (vcpu->vcpuid == 0) {
sys/amd64/vmm/intel/vmx_msr.c
329
vcpu->guest_msrs[IDX_MSR_PAT] = PAT_VALUE(0, PAT_WRITE_BACK) |
sys/amd64/vmm/intel/vmx_msr.c
342
vmx_msr_guest_enter(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx_msr.c
347
wrmsr(MSR_LSTAR, vcpu->guest_msrs[IDX_MSR_LSTAR]);
sys/amd64/vmm/intel/vmx_msr.c
348
wrmsr(MSR_CSTAR, vcpu->guest_msrs[IDX_MSR_CSTAR]);
sys/amd64/vmm/intel/vmx_msr.c
349
wrmsr(MSR_STAR, vcpu->guest_msrs[IDX_MSR_STAR]);
sys/amd64/vmm/intel/vmx_msr.c
350
wrmsr(MSR_SF_MASK, vcpu->guest_msrs[IDX_MSR_SF_MASK]);
sys/amd64/vmm/intel/vmx_msr.c
351
wrmsr(MSR_KGSBASE, vcpu->guest_msrs[IDX_MSR_KGSBASE]);
sys/amd64/vmm/intel/vmx_msr.c
355
vmx_msr_guest_enter_tsc_aux(struct vmx *vmx, struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx_msr.c
357
uint64_t guest_tsc_aux = vcpu->guest_msrs[IDX_MSR_TSC_AUX];
sys/amd64/vmm/intel/vmx_msr.c
365
vmx_msr_guest_exit(struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx_msr.c
369
vcpu->guest_msrs[IDX_MSR_LSTAR] = rdmsr(MSR_LSTAR);
sys/amd64/vmm/intel/vmx_msr.c
370
vcpu->guest_msrs[IDX_MSR_CSTAR] = rdmsr(MSR_CSTAR);
sys/amd64/vmm/intel/vmx_msr.c
371
vcpu->guest_msrs[IDX_MSR_STAR] = rdmsr(MSR_STAR);
sys/amd64/vmm/intel/vmx_msr.c
372
vcpu->guest_msrs[IDX_MSR_SF_MASK] = rdmsr(MSR_SF_MASK);
sys/amd64/vmm/intel/vmx_msr.c
373
vcpu->guest_msrs[IDX_MSR_KGSBASE] = rdmsr(MSR_KGSBASE);
sys/amd64/vmm/intel/vmx_msr.c
385
vmx_msr_guest_exit_tsc_aux(struct vmx *vmx, struct vmx_vcpu *vcpu)
sys/amd64/vmm/intel/vmx_msr.c
387
uint64_t guest_tsc_aux = vcpu->guest_msrs[IDX_MSR_TSC_AUX];
sys/amd64/vmm/intel/vmx_msr.c
402
vmx_rdmsr(struct vmx_vcpu *vcpu, u_int num, uint64_t *val, bool *retu)
sys/amd64/vmm/intel/vmx_msr.c
419
if (vm_rdmtrr(&vcpu->mtrr, num, val) != 0) {
sys/amd64/vmm/intel/vmx_msr.c
420
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx_msr.c
434
*val = vcpu->guest_msrs[IDX_MSR_PAT];
sys/amd64/vmm/intel/vmx_msr.c
444
vmx_wrmsr(struct vmx_vcpu *vcpu, u_int num, uint64_t val, bool *retu)
sys/amd64/vmm/intel/vmx_msr.c
461
if (vm_wrmtrr(&vcpu->mtrr, num, val) != 0) {
sys/amd64/vmm/intel/vmx_msr.c
462
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx_msr.c
487
vcpu->guest_msrs[IDX_MSR_PAT] = val;
sys/amd64/vmm/intel/vmx_msr.c
489
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx_msr.c
492
error = vmx_set_tsc_offset(vcpu, val - rdtsc());
sys/amd64/vmm/intel/vmx_msr.c
501
vcpu->guest_msrs[IDX_MSR_TSC_AUX] = val;
sys/amd64/vmm/intel/vmx_msr.c
503
vm_inject_gp(vcpu->vcpu);
sys/amd64/vmm/intel/vmx_msr.h
35
void vmx_msr_guest_init(struct vmx *vmx, struct vmx_vcpu *vcpu);
sys/amd64/vmm/intel/vmx_msr.h
36
void vmx_msr_guest_enter_tsc_aux(struct vmx *vmx, struct vmx_vcpu *vcpu);
sys/amd64/vmm/intel/vmx_msr.h
37
void vmx_msr_guest_enter(struct vmx_vcpu *vcpu);
sys/amd64/vmm/intel/vmx_msr.h
38
void vmx_msr_guest_exit(struct vmx_vcpu *vcpu);
sys/amd64/vmm/intel/vmx_msr.h
39
void vmx_msr_guest_exit_tsc_aux(struct vmx *vmx, struct vmx_vcpu *vcpu);
sys/amd64/vmm/intel/vmx_msr.h
40
int vmx_rdmsr(struct vmx_vcpu *vcpu, u_int num, uint64_t *val, bool *retu);
sys/amd64/vmm/intel/vmx_msr.h
41
int vmx_wrmsr(struct vmx_vcpu *vcpu, u_int num, uint64_t val, bool *retu);
sys/amd64/vmm/io/vhpet.c
472
vhpet_mmio_write(struct vcpu *vcpu, uint64_t gpa, uint64_t val, int size,
sys/amd64/vmm/io/vhpet.c
481
vhpet = vm_hpet(vcpu_vm(vcpu));
sys/amd64/vmm/io/vhpet.c
622
vhpet_mmio_read(struct vcpu *vcpu, uint64_t gpa, uint64_t *rval, int size,
sys/amd64/vmm/io/vhpet.c
629
vhpet = vm_hpet(vcpu_vm(vcpu));
sys/amd64/vmm/io/vhpet.h
41
int vhpet_mmio_write(struct vcpu *vcpu, uint64_t gpa, uint64_t val,
sys/amd64/vmm/io/vhpet.h
43
int vhpet_mmio_read(struct vcpu *vcpu, uint64_t gpa, uint64_t *val,
sys/amd64/vmm/io/vioapic.c
247
vioapic_update_tmr(struct vcpu *vcpu, void *arg)
sys/amd64/vmm/io/vioapic.c
255
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/io/vioapic.c
256
vioapic = vm_ioapic(vcpu_vm(vcpu));
sys/amd64/vmm/io/vioapic.c
287
vioapic_read(struct vioapic *vioapic, struct vcpu *vcpu, uint32_t addr)
sys/amd64/vmm/io/vioapic.c
322
vioapic_write(struct vioapic *vioapic, struct vcpu *vcpu, uint32_t addr,
sys/amd64/vmm/io/vioapic.c
383
(void)vm_smp_rendezvous(vcpu, allvcpus,
sys/amd64/vmm/io/vioapic.c
403
vioapic_mmio_rw(struct vioapic *vioapic, struct vcpu *vcpu, uint64_t gpa,
sys/amd64/vmm/io/vioapic.c
428
*data = vioapic_read(vioapic, vcpu,
sys/amd64/vmm/io/vioapic.c
431
vioapic_write(vioapic, vcpu, vioapic->ioregsel,
sys/amd64/vmm/io/vioapic.c
441
vioapic_mmio_read(struct vcpu *vcpu, uint64_t gpa, uint64_t *rval,
sys/amd64/vmm/io/vioapic.c
447
vioapic = vm_ioapic(vcpu_vm(vcpu));
sys/amd64/vmm/io/vioapic.c
448
error = vioapic_mmio_rw(vioapic, vcpu, gpa, rval, size, true);
sys/amd64/vmm/io/vioapic.c
453
vioapic_mmio_write(struct vcpu *vcpu, uint64_t gpa, uint64_t wval,
sys/amd64/vmm/io/vioapic.c
459
vioapic = vm_ioapic(vcpu_vm(vcpu));
sys/amd64/vmm/io/vioapic.c
460
error = vioapic_mmio_rw(vioapic, vcpu, gpa, &wval, size, false);
sys/amd64/vmm/io/vioapic.h
46
int vioapic_mmio_write(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/vmm/io/vioapic.h
48
int vioapic_mmio_read(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/vmm/io/vlapic.c
1040
struct vcpu *vcpu;
sys/amd64/vmm/io/vlapic.c
1101
vcpu = vm_vcpu(vlapic->vm, i);
sys/amd64/vmm/io/vlapic.c
1102
lapic_intr_edge(vcpu, vec);
sys/amd64/vmm/io/vlapic.c
1103
vmm_stat_incr(vlapic->vcpu, VLAPIC_IPI_SEND, 1);
sys/amd64/vmm/io/vlapic.c
1104
vmm_stat_incr(vcpu, VLAPIC_IPI_RECV, 1);
sys/amd64/vmm/io/vlapic.c
1112
vcpu = vm_vcpu(vlapic->vm, i);
sys/amd64/vmm/io/vlapic.c
1113
vm_inject_nmi(vcpu);
sys/amd64/vmm/io/vlapic.c
1142
vmexit = vm_exitinfo(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
1146
*vm_exitinfo_cpuset(vlapic->vcpu) = ipimask;
sys/amd64/vmm/io/vlapic.c
1155
vlapic_handle_init(struct vcpu *vcpu, void *arg)
sys/amd64/vmm/io/vlapic.c
1157
struct vlapic *vlapic = vm_lapic(vcpu);
sys/amd64/vmm/io/vlapic.c
1163
vm_handle_ipi(struct vcpu *vcpu, struct vm_exit *vme, bool *retu)
sys/amd64/vmm/io/vlapic.c
1165
struct vlapic *vlapic = vm_lapic(vcpu);
sys/amd64/vmm/io/vlapic.c
1166
cpuset_t *dmask = vm_exitinfo_cpuset(vcpu);
sys/amd64/vmm/io/vlapic.c
1174
active = vm_active_cpus(vcpu_vm(vcpu));
sys/amd64/vmm/io/vlapic.c
1177
vm_smp_rendezvous(vcpu, reinit, vlapic_handle_init,
sys/amd64/vmm/io/vlapic.c
1180
vm_await_start(vcpu_vm(vcpu), dmask);
sys/amd64/vmm/io/vlapic.c
1191
*dmask = vm_start_cpus(vcpu_vm(vcpu), dmask);
sys/amd64/vmm/io/vlapic.c
1204
vme->u.spinup_ap.vcpu = CPU_FFS(dmask) - 1;
sys/amd64/vmm/io/vlapic.c
1224
lapic_intr_edge(vlapic->vcpu, vec);
sys/amd64/vmm/io/vlapic.c
1225
vmm_stat_incr(vlapic->vcpu, VLAPIC_IPI_SEND, 1);
sys/amd64/vmm/io/vlapic.c
1226
vmm_stat_incr(vlapic->vcpu, VLAPIC_IPI_RECV, 1);
sys/amd64/vmm/io/vlapic.c
1644
vlapic_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state)
sys/amd64/vmm/io/vlapic.c
1649
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/io/vlapic.c
1682
struct vcpu *vcpu;
sys/amd64/vmm/io/vlapic.c
1703
vcpu = vm_vcpu(vm, vcpuid);
sys/amd64/vmm/io/vlapic.c
1705
vm_inject_extint(vcpu);
sys/amd64/vmm/io/vlapic.c
1707
lapic_set_intr(vcpu, vec, level);
sys/amd64/vmm/io/vlapic.c
1842
struct vcpu *vcpu;
sys/amd64/vmm/io/vlapic.c
1854
vcpu = vm_vcpu(vm, i);
sys/amd64/vmm/io/vlapic.c
1855
if (vcpu == NULL)
sys/amd64/vmm/io/vlapic.c
1857
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/io/vlapic.c
460
vcpu_notify_lapic(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
463
vm_inject_nmi(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
466
vm_inject_extint(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
599
vmm_stat_incr(vlapic->vcpu, VLAPIC_GRATUITOUS_EOI, 1);
sys/amd64/vmm/io/vlapic.c
635
vmm_stat_incr(vlapic->vcpu, VLAPIC_INTR_ERROR, 1);
sys/amd64/vmm/io/vlapic.c
649
vmm_stat_incr(vlapic->vcpu, VLAPIC_INTR_TIMER, 1);
sys/amd64/vmm/io/vlapic.c
661
vmm_stat_incr(vlapic->vcpu, VLAPIC_INTR_CMC, 1);
sys/amd64/vmm/io/vlapic.c
680
vm_inject_extint(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
683
vm_inject_nmi(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.c
700
vmm_stat_array_incr(vlapic->vcpu, LVTS_TRIGGERRED,
sys/amd64/vmm/io/vlapic.c
935
vm_inject_gp(vlapic->vcpu);
sys/amd64/vmm/io/vlapic.h
116
int vm_handle_ipi(struct vcpu *vcpu, struct vm_exit *vme, bool *retu);
sys/amd64/vmm/io/vlapic.h
80
void vlapic_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state s);
sys/amd64/vmm/io/vlapic_priv.h
133
struct vcpu;
sys/amd64/vmm/io/vlapic_priv.h
147
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
101
#define VMM_CTR2(vcpu, format, p1, p2) \
sys/amd64/vmm/vmm.c
1015
vm_handle_reqidle(struct vcpu *vcpu, bool *retu)
sys/amd64/vmm/vmm.c
1017
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
1018
KASSERT(vcpu->reqidle, ("invalid vcpu reqidle %d", vcpu->reqidle));
sys/amd64/vmm/vmm.c
1019
vcpu->reqidle = 0;
sys/amd64/vmm/vmm.c
102
VCPU_CTR2((vcpu)->vm, (vcpu)->vcpuid, format, p1, p2)
sys/amd64/vmm/vmm.c
1020
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
1026
vm_handle_db(struct vcpu *vcpu, struct vm_exit *vme, bool *retu)
sys/amd64/vmm/vmm.c
1038
vm_get_register(vcpu, VM_REG_GUEST_RSP, &rsp);
sys/amd64/vmm/vmm.c
1039
error = vm_copy_setup(vcpu, &vme->u.dbg.paging, rsp, sizeof(uint64_t),
sys/amd64/vmm/vmm.c
104
#define VMM_CTR3(vcpu, format, p1, p2, p3) \
sys/amd64/vmm/vmm.c
105
VCPU_CTR3((vcpu)->vm, (vcpu)->vcpuid, format, p1, p2, p3)
sys/amd64/vmm/vmm.c
1060
vm_exit_suspended(struct vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/vmm.c
1062
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
1068
vmexit = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm.c
107
#define VMM_CTR4(vcpu, format, p1, p2, p3, p4) \
sys/amd64/vmm/vmm.c
1076
vm_exit_debug(struct vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/vmm.c
108
VCPU_CTR4((vcpu)->vm, (vcpu)->vcpuid, format, p1, p2, p3, p4)
sys/amd64/vmm/vmm.c
1080
vmexit = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm.c
1087
vm_exit_rendezvous(struct vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/vmm.c
1091
vmexit = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm.c
1095
vmm_stat_incr(vcpu, VMEXIT_RENDEZVOUS, 1);
sys/amd64/vmm/vmm.c
1099
vm_exit_reqidle(struct vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/vmm.c
1103
vmexit = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm.c
1107
vmm_stat_incr(vcpu, VMEXIT_REQIDLE, 1);
sys/amd64/vmm/vmm.c
1111
vm_exit_astpending(struct vcpu *vcpu, uint64_t rip)
sys/amd64/vmm/vmm.c
1115
vmexit = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm.c
1119
vmm_stat_incr(vcpu, VMEXIT_ASTPENDING, 1);
sys/amd64/vmm/vmm.c
1123
vm_run(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1125
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
1134
vcpuid = vcpu->vcpuid;
sys/amd64/vmm/vmm.c
1143
vme = &vcpu->exitinfo;
sys/amd64/vmm/vmm.c
1146
evinfo.iptr = &vcpu->reqidle;
sys/amd64/vmm/vmm.c
1158
restore_guest_fpustate(vcpu);
sys/amd64/vmm/vmm.c
1160
vcpu_require_state(vcpu, VCPU_RUNNING);
sys/amd64/vmm/vmm.c
1161
error = vmmops_run(vcpu->cookie, vcpu->nextrip, pmap, &evinfo);
sys/amd64/vmm/vmm.c
1162
vcpu_require_state(vcpu, VCPU_FROZEN);
sys/amd64/vmm/vmm.c
1164
save_guest_fpustate(vcpu);
sys/amd64/vmm/vmm.c
1166
vmm_stat_incr(vcpu, VCPU_TOTAL_RUNTIME, rdtsc() - tscval);
sys/amd64/vmm/vmm.c
1172
vcpu->nextrip = vme->rip + vme->inst_length;
sys/amd64/vmm/vmm.c
1175
error = vm_handle_reqidle(vcpu, &retu);
sys/amd64/vmm/vmm.c
1178
error = vm_handle_suspend(vcpu, &retu);
sys/amd64/vmm/vmm.c
1184
error = vm_handle_rendezvous(vcpu);
sys/amd64/vmm/vmm.c
1188
error = vm_handle_hlt(vcpu, intr_disabled, &retu);
sys/amd64/vmm/vmm.c
1191
error = vm_handle_paging(vcpu, &retu);
sys/amd64/vmm/vmm.c
1194
error = vm_handle_inst_emul(vcpu, &retu);
sys/amd64/vmm/vmm.c
1198
error = vm_handle_inout(vcpu, vme, &retu);
sys/amd64/vmm/vmm.c
1201
error = vm_handle_db(vcpu, vme, &retu);
sys/amd64/vmm/vmm.c
1206
vm_inject_ud(vcpu);
sys/amd64/vmm/vmm.c
1219
error = vm_handle_ipi(vcpu, vme, &retu);
sys/amd64/vmm/vmm.c
1224
vmm_stat_incr(vcpu, VMEXIT_USERSPACE, 1);
sys/amd64/vmm/vmm.c
1225
VMM_CTR2(vcpu, "retu %d/%d", error, vme->exitcode);
sys/amd64/vmm/vmm.c
1231
vm_restart_instruction(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1237
state = vcpu_get_state(vcpu, NULL);
sys/amd64/vmm/vmm.c
1245
vcpu->exitinfo.inst_length = 0;
sys/amd64/vmm/vmm.c
1246
VMM_CTR1(vcpu, "restarting instruction at %#lx by "
sys/amd64/vmm/vmm.c
1247
"setting inst_length to zero", vcpu->exitinfo.rip);
sys/amd64/vmm/vmm.c
1255
error = vm_get_register(vcpu, VM_REG_GUEST_RIP, &rip);
sys/amd64/vmm/vmm.c
1257
VMM_CTR2(vcpu, "restarting instruction by updating "
sys/amd64/vmm/vmm.c
1258
"nextrip from %#lx to %#lx", vcpu->nextrip, rip);
sys/amd64/vmm/vmm.c
1259
vcpu->nextrip = rip;
sys/amd64/vmm/vmm.c
1267
vm_exit_intinfo(struct vcpu *vcpu, uint64_t info)
sys/amd64/vmm/vmm.c
1283
VMM_CTR2(vcpu, "%s: info1(%#lx)", __func__, info);
sys/amd64/vmm/vmm.c
1284
vcpu->exitintinfo = info;
sys/amd64/vmm/vmm.c
1343
nested_fault(struct vcpu *vcpu, uint64_t info1, uint64_t info2,
sys/amd64/vmm/vmm.c
1359
VMM_CTR2(vcpu, "triple fault: info1(%#lx), info2(%#lx)",
sys/amd64/vmm/vmm.c
1361
vm_suspend(vcpu->vm, VM_SUSPEND_TRIPLEFAULT);
sys/amd64/vmm/vmm.c
137
DEFINE_VMMOPS_IFUNC(void *, vcpu_init, (void *vmi, struct vcpu *vcpu,
sys/amd64/vmm/vmm.c
1385
vcpu_exception_intinfo(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1389
if (vcpu->exception_pending) {
sys/amd64/vmm/vmm.c
1390
info = vcpu->exc_vector & 0xff;
sys/amd64/vmm/vmm.c
1392
if (vcpu->exc_errcode_valid) {
sys/amd64/vmm/vmm.c
1394
info |= (uint64_t)vcpu->exc_errcode << 32;
sys/amd64/vmm/vmm.c
1401
vm_entry_intinfo(struct vcpu *vcpu, uint64_t *retinfo)
sys/amd64/vmm/vmm.c
1406
info1 = vcpu->exitintinfo;
sys/amd64/vmm/vmm.c
1407
vcpu->exitintinfo = 0;
sys/amd64/vmm/vmm.c
1410
if (vcpu->exception_pending) {
sys/amd64/vmm/vmm.c
1411
info2 = vcpu_exception_intinfo(vcpu);
sys/amd64/vmm/vmm.c
1412
vcpu->exception_pending = 0;
sys/amd64/vmm/vmm.c
1413
VMM_CTR2(vcpu, "Exception %d delivered: %#lx",
sys/amd64/vmm/vmm.c
1414
vcpu->exc_vector, info2);
sys/amd64/vmm/vmm.c
1418
valid = nested_fault(vcpu, info1, info2, retinfo);
sys/amd64/vmm/vmm.c
1430
VMM_CTR4(vcpu, "%s: info1(%#lx), info2(%#lx), "
sys/amd64/vmm/vmm.c
1438
vm_get_intinfo(struct vcpu *vcpu, uint64_t *info1, uint64_t *info2)
sys/amd64/vmm/vmm.c
1440
*info1 = vcpu->exitintinfo;
sys/amd64/vmm/vmm.c
1441
*info2 = vcpu_exception_intinfo(vcpu);
sys/amd64/vmm/vmm.c
1446
vm_inject_exception(struct vcpu *vcpu, int vector, int errcode_valid,
sys/amd64/vmm/vmm.c
1463
if (vcpu->exception_pending) {
sys/amd64/vmm/vmm.c
1464
VMM_CTR2(vcpu, "Unable to inject exception %d due to "
sys/amd64/vmm/vmm.c
1465
"pending exception %d", vector, vcpu->exc_vector);
sys/amd64/vmm/vmm.c
1473
error = vm_get_register(vcpu, VM_REG_GUEST_CR0, ®val);
sys/amd64/vmm/vmm.c
1485
error = vm_set_register(vcpu, VM_REG_GUEST_INTR_SHADOW, 0);
sys/amd64/vmm/vmm.c
1490
vm_restart_instruction(vcpu);
sys/amd64/vmm/vmm.c
1492
vcpu->exception_pending = 1;
sys/amd64/vmm/vmm.c
1493
vcpu->exc_vector = vector;
sys/amd64/vmm/vmm.c
1494
vcpu->exc_errcode = errcode;
sys/amd64/vmm/vmm.c
1495
vcpu->exc_errcode_valid = errcode_valid;
sys/amd64/vmm/vmm.c
1496
VMM_CTR1(vcpu, "Exception %d pending", vector);
sys/amd64/vmm/vmm.c
1501
vm_inject_fault(struct vcpu *vcpu, int vector, int errcode_valid, int errcode)
sys/amd64/vmm/vmm.c
1507
error = vm_inject_exception(vcpu, vector, errcode_valid,
sys/amd64/vmm/vmm.c
1513
vm_inject_pf(struct vcpu *vcpu, int error_code, uint64_t cr2)
sys/amd64/vmm/vmm.c
1517
VMM_CTR2(vcpu, "Injecting page fault: error_code %#x, cr2 %#lx",
sys/amd64/vmm/vmm.c
1520
error = vm_set_register(vcpu, VM_REG_GUEST_CR2, cr2);
sys/amd64/vmm/vmm.c
1523
vm_inject_fault(vcpu, IDT_PF, 1, error_code);
sys/amd64/vmm/vmm.c
1529
vm_inject_nmi(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1532
vcpu->nmi_pending = 1;
sys/amd64/vmm/vmm.c
1533
vcpu_notify_event(vcpu);
sys/amd64/vmm/vmm.c
1538
vm_nmi_pending(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1540
return (vcpu->nmi_pending);
sys/amd64/vmm/vmm.c
1544
vm_nmi_clear(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1546
if (vcpu->nmi_pending == 0)
sys/amd64/vmm/vmm.c
1549
vcpu->nmi_pending = 0;
sys/amd64/vmm/vmm.c
1550
vmm_stat_incr(vcpu, VCPU_NMI_COUNT, 1);
sys/amd64/vmm/vmm.c
1556
vm_inject_extint(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1559
vcpu->extint_pending = 1;
sys/amd64/vmm/vmm.c
1560
vcpu_notify_event(vcpu);
sys/amd64/vmm/vmm.c
1565
vm_extint_pending(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1567
return (vcpu->extint_pending);
sys/amd64/vmm/vmm.c
1571
vm_extint_clear(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1573
if (vcpu->extint_pending == 0)
sys/amd64/vmm/vmm.c
1576
vcpu->extint_pending = 0;
sys/amd64/vmm/vmm.c
1577
vmm_stat_incr(vcpu, VCPU_EXTINT_COUNT, 1);
sys/amd64/vmm/vmm.c
1581
vm_get_capability(struct vcpu *vcpu, int type, int *retval)
sys/amd64/vmm/vmm.c
1586
return (vmmops_getcap(vcpu->cookie, type, retval));
sys/amd64/vmm/vmm.c
1590
vm_set_capability(struct vcpu *vcpu, int type, int val)
sys/amd64/vmm/vmm.c
1595
return (vmmops_setcap(vcpu->cookie, type, val));
sys/amd64/vmm/vmm.c
1599
vm_lapic(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1601
return (vcpu->vlapic);
sys/amd64/vmm/vmm.c
1692
vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *state)
sys/amd64/vmm/vmm.c
1694
*state = vcpu->x2apic_state;
sys/amd64/vmm/vmm.c
1700
vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state state)
sys/amd64/vmm/vmm.c
1705
vcpu->x2apic_state = state;
sys/amd64/vmm/vmm.c
1707
vlapic_set_x2apic_state(vcpu, state);
sys/amd64/vmm/vmm.c
1713
vcpu_notify_lapic(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
1715
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
1716
if (vcpu->state == VCPU_RUNNING && vcpu->hostcpu != curcpu)
sys/amd64/vmm/vmm.c
1717
vlapic_post_intr(vcpu->vlapic, vcpu->hostcpu, vmm_ipinum);
sys/amd64/vmm/vmm.c
1719
vcpu_notify_event_locked(vcpu);
sys/amd64/vmm/vmm.c
1720
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
1733
vm_smp_rendezvous(struct vcpu *vcpu, cpuset_t dest,
sys/amd64/vmm/vmm.c
1736
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
1752
VMM_CTR0(vcpu, "Rendezvous already in progress");
sys/amd64/vmm/vmm.c
1754
error = vm_handle_rendezvous(vcpu);
sys/amd64/vmm/vmm.c
1762
VMM_CTR0(vcpu, "Initiating rendezvous");
sys/amd64/vmm/vmm.c
1778
return (vm_handle_rendezvous(vcpu));
sys/amd64/vmm/vmm.c
1837
vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/vmm/vmm.c
1853
error = vm_gla2gpa(vcpu, paging, gla, prot, &gpa, fault);
sys/amd64/vmm/vmm.c
1866
hva = vm_gpa_hold(vcpu, copyinfo[idx].gpa,
sys/amd64/vmm/vmm.c
1923
vm_get_rescnt(struct vcpu *vcpu, struct vmm_stat_type *stat)
sys/amd64/vmm/vmm.c
1926
if (vcpu->vcpuid == 0) {
sys/amd64/vmm/vmm.c
1927
vmm_stat_set(vcpu, VMM_MEM_RESIDENT, PAGE_SIZE *
sys/amd64/vmm/vmm.c
1928
vmspace_resident_count(vm_vmspace(vcpu->vm)));
sys/amd64/vmm/vmm.c
1933
vm_get_wiredcnt(struct vcpu *vcpu, struct vmm_stat_type *stat)
sys/amd64/vmm/vmm.c
1936
if (vcpu->vcpuid == 0) {
sys/amd64/vmm/vmm.c
1937
vmm_stat_set(vcpu, VMM_MEM_WIRED, PAGE_SIZE *
sys/amd64/vmm/vmm.c
1938
pmap_wired_count(vmspace_pmap(vm_vmspace(vcpu->vm))));
sys/amd64/vmm/vmm.c
1951
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
1957
vcpu = vm->vcpu[i];
sys/amd64/vmm/vmm.c
1958
if (vcpu == NULL)
sys/amd64/vmm/vmm.c
1961
SNAPSHOT_VAR_OR_LEAVE(vcpu->x2apic_state, meta, ret, done);
sys/amd64/vmm/vmm.c
1962
SNAPSHOT_VAR_OR_LEAVE(vcpu->exitintinfo, meta, ret, done);
sys/amd64/vmm/vmm.c
1963
SNAPSHOT_VAR_OR_LEAVE(vcpu->exc_vector, meta, ret, done);
sys/amd64/vmm/vmm.c
1964
SNAPSHOT_VAR_OR_LEAVE(vcpu->exc_errcode_valid, meta, ret, done);
sys/amd64/vmm/vmm.c
1965
SNAPSHOT_VAR_OR_LEAVE(vcpu->exc_errcode, meta, ret, done);
sys/amd64/vmm/vmm.c
1966
SNAPSHOT_VAR_OR_LEAVE(vcpu->guest_xcr0, meta, ret, done);
sys/amd64/vmm/vmm.c
1967
SNAPSHOT_VAR_OR_LEAVE(vcpu->exitinfo, meta, ret, done);
sys/amd64/vmm/vmm.c
1968
SNAPSHOT_VAR_OR_LEAVE(vcpu->nextrip, meta, ret, done);
sys/amd64/vmm/vmm.c
1976
tsc = now + vcpu->tsc_offset;
sys/amd64/vmm/vmm.c
1979
vcpu->tsc_offset = tsc;
sys/amd64/vmm/vmm.c
2004
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
2011
vcpu = vm->vcpu[i];
sys/amd64/vmm/vmm.c
2012
if (vcpu == NULL)
sys/amd64/vmm/vmm.c
2015
error = vmmops_vcpu_snapshot(vcpu->cookie, meta);
sys/amd64/vmm/vmm.c
2072
vm_set_tsc_offset(struct vcpu *vcpu, uint64_t offset)
sys/amd64/vmm/vmm.c
2074
vcpu->tsc_offset = offset;
sys/amd64/vmm/vmm.c
208
vcpu_cleanup(struct vcpu *vcpu, bool destroy)
sys/amd64/vmm/vmm.c
2082
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
2093
vcpu = vm->vcpu[i];
sys/amd64/vmm/vmm.c
2094
if (vcpu == NULL)
sys/amd64/vmm/vmm.c
2097
error = vmmops_restore_tsc(vcpu->cookie,
sys/amd64/vmm/vmm.c
2098
vcpu->tsc_offset - now);
sys/amd64/vmm/vmm.c
210
vmmops_vlapic_cleanup(vcpu->vlapic);
sys/amd64/vmm/vmm.c
211
vmmops_vcpu_cleanup(vcpu->cookie);
sys/amd64/vmm/vmm.c
212
vcpu->cookie = NULL;
sys/amd64/vmm/vmm.c
214
vmm_stat_free(vcpu->stats);
sys/amd64/vmm/vmm.c
215
fpu_save_area_free(vcpu->guestfpu);
sys/amd64/vmm/vmm.c
216
vcpu_lock_destroy(vcpu);
sys/amd64/vmm/vmm.c
217
free(vcpu, M_VM);
sys/amd64/vmm/vmm.c
221
static struct vcpu *
sys/amd64/vmm/vmm.c
224
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
229
vcpu = malloc(sizeof(*vcpu), M_VM, M_WAITOK | M_ZERO);
sys/amd64/vmm/vmm.c
230
vcpu_lock_init(vcpu);
sys/amd64/vmm/vmm.c
231
vcpu->state = VCPU_IDLE;
sys/amd64/vmm/vmm.c
232
vcpu->hostcpu = NOCPU;
sys/amd64/vmm/vmm.c
233
vcpu->vcpuid = vcpu_id;
sys/amd64/vmm/vmm.c
234
vcpu->vm = vm;
sys/amd64/vmm/vmm.c
235
vcpu->guestfpu = fpu_save_area_alloc();
sys/amd64/vmm/vmm.c
236
vcpu->stats = vmm_stat_alloc();
sys/amd64/vmm/vmm.c
237
vcpu->tsc_offset = 0;
sys/amd64/vmm/vmm.c
238
return (vcpu);
sys/amd64/vmm/vmm.c
242
vcpu_init(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
244
vcpu->cookie = vmmops_vcpu_init(vcpu->vm->cookie, vcpu, vcpu->vcpuid);
sys/amd64/vmm/vmm.c
245
vcpu->vlapic = vmmops_vlapic_init(vcpu->cookie);
sys/amd64/vmm/vmm.c
246
vm_set_x2apic_state(vcpu, X2APIC_DISABLED);
sys/amd64/vmm/vmm.c
247
vcpu->reqidle = 0;
sys/amd64/vmm/vmm.c
248
vcpu->exitintinfo = 0;
sys/amd64/vmm/vmm.c
249
vcpu->nmi_pending = 0;
sys/amd64/vmm/vmm.c
250
vcpu->extint_pending = 0;
sys/amd64/vmm/vmm.c
251
vcpu->exception_pending = 0;
sys/amd64/vmm/vmm.c
252
vcpu->guest_xcr0 = XFEATURE_ENABLED_X87;
sys/amd64/vmm/vmm.c
253
fpu_save_area_reset(vcpu->guestfpu);
sys/amd64/vmm/vmm.c
254
vmm_stat_init(vcpu->stats);
sys/amd64/vmm/vmm.c
258
vcpu_trace_exceptions(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
264
vcpu_trap_wbinvd(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
270
vm_exitinfo(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
272
return (&vcpu->exitinfo);
sys/amd64/vmm/vmm.c
276
vm_exitinfo_cpuset(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
278
return (&vcpu->exitinfo_cpuset);
sys/amd64/vmm/vmm.c
333
if (vm->vcpu[i] != NULL)
sys/amd64/vmm/vmm.c
334
vcpu_init(vm->vcpu[i]);
sys/amd64/vmm/vmm.c
339
struct vcpu *
sys/amd64/vmm/vmm.c
342
struct vcpu *vcpu;
sys/amd64/vmm/vmm.c
347
vcpu = (struct vcpu *)
sys/amd64/vmm/vmm.c
348
atomic_load_acq_ptr((uintptr_t *)&vm->vcpu[vcpuid]);
sys/amd64/vmm/vmm.c
349
if (__predict_true(vcpu != NULL))
sys/amd64/vmm/vmm.c
350
return (vcpu);
sys/amd64/vmm/vmm.c
353
vcpu = vm->vcpu[vcpuid];
sys/amd64/vmm/vmm.c
354
if (vcpu == NULL && !vm->dying) {
sys/amd64/vmm/vmm.c
355
vcpu = vcpu_alloc(vm, vcpuid);
sys/amd64/vmm/vmm.c
356
vcpu_init(vcpu);
sys/amd64/vmm/vmm.c
362
atomic_store_rel_ptr((uintptr_t *)&vm->vcpu[vcpuid],
sys/amd64/vmm/vmm.c
363
(uintptr_t)vcpu);
sys/amd64/vmm/vmm.c
366
return (vcpu);
sys/amd64/vmm/vmm.c
384
vm->vcpu = malloc(sizeof(*vm->vcpu) * vm_maxcpu, M_VM, M_WAITOK |
sys/amd64/vmm/vmm.c
422
if (vm->vcpu[i] != NULL)
sys/amd64/vmm/vmm.c
423
vcpu_cleanup(vm->vcpu[i], destroy);
sys/amd64/vmm/vmm.c
433
free(vm->vcpu, M_VM);
sys/amd64/vmm/vmm.c
595
vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval)
sys/amd64/vmm/vmm.c
601
return (vmmops_getreg(vcpu->cookie, reg, retval));
sys/amd64/vmm/vmm.c
605
vm_set_register(struct vcpu *vcpu, int reg, uint64_t val)
sys/amd64/vmm/vmm.c
613
error = vmmops_setreg(vcpu->cookie, reg, val);
sys/amd64/vmm/vmm.c
618
VMM_CTR1(vcpu, "Setting nextrip to %#lx", val);
sys/amd64/vmm/vmm.c
619
vcpu->nextrip = val;
sys/amd64/vmm/vmm.c
656
vm_get_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *desc)
sys/amd64/vmm/vmm.c
662
return (vmmops_getdesc(vcpu->cookie, reg, desc));
sys/amd64/vmm/vmm.c
666
vm_set_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *desc)
sys/amd64/vmm/vmm.c
672
return (vmmops_setdesc(vcpu->cookie, reg, desc));
sys/amd64/vmm/vmm.c
676
restore_guest_fpustate(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
684
fpurestore(vcpu->guestfpu);
sys/amd64/vmm/vmm.c
688
load_xcr(0, vcpu->guest_xcr0);
sys/amd64/vmm/vmm.c
698
save_guest_fpustate(struct vcpu *vcpu)
sys/amd64/vmm/vmm.c
706
vcpu->guest_xcr0 = rxcr(0);
sys/amd64/vmm/vmm.c
712
fpusave(vcpu->guestfpu);
sys/amd64/vmm/vmm.c
719
vcpu_require_state(struct vcpu *vcpu, enum vcpu_state newstate)
sys/amd64/vmm/vmm.c
723
if ((error = vcpu_set_state(vcpu, newstate, false)) != 0)
sys/amd64/vmm/vmm.c
728
vcpu_require_state_locked(struct vcpu *vcpu, enum vcpu_state newstate)
sys/amd64/vmm/vmm.c
732
if ((error = vcpu_set_state_locked(vcpu, newstate, false)) != 0)
sys/amd64/vmm/vmm.c
740
vm_handle_hlt(struct vcpu *vcpu, bool intr_disabled, bool *retu)
sys/amd64/vmm/vmm.c
742
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
747
vcpuid = vcpu->vcpuid;
sys/amd64/vmm/vmm.c
755
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
766
if (vm->rendezvous_func != NULL || vm->suspend || vcpu->reqidle)
sys/amd64/vmm/vmm.c
768
if (vm_nmi_pending(vcpu))
sys/amd64/vmm/vmm.c
771
if (vm_extint_pending(vcpu) ||
sys/amd64/vmm/vmm.c
772
vlapic_pending_intr(vcpu->vlapic, NULL)) {
sys/amd64/vmm/vmm.c
778
if (vcpu_should_yield(vcpu))
sys/amd64/vmm/vmm.c
781
if (vcpu_debugged(vcpu))
sys/amd64/vmm/vmm.c
792
VMM_CTR0(vcpu, "Halted");
sys/amd64/vmm/vmm.c
806
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/amd64/vmm/vmm.c
811
msleep_spin(vcpu, &vcpu->mtx, wmesg, hz);
sys/amd64/vmm/vmm.c
812
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/amd64/vmm/vmm.c
813
vmm_stat_incr(vcpu, VCPU_IDLE_TICKS, ticks - t);
sys/amd64/vmm/vmm.c
815
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
824
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
831
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
840
vm_handle_paging(struct vcpu *vcpu, bool *retu)
sys/amd64/vmm/vmm.c
842
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
847
vme = &vcpu->exitinfo;
sys/amd64/vmm/vmm.c
861
VMM_CTR2(vcpu, "%s bit emulation for gpa %#lx",
sys/amd64/vmm/vmm.c
871
VMM_CTR3(vcpu, "vm_handle_paging rv = %d, gpa = %#lx, "
sys/amd64/vmm/vmm.c
881
vm_handle_inst_emul(struct vcpu *vcpu, bool *retu)
sys/amd64/vmm/vmm.c
892
vme = &vcpu->exitinfo;
sys/amd64/vmm/vmm.c
905
VMM_CTR1(vcpu, "inst_emul fault accessing gpa %#lx", gpa);
sys/amd64/vmm/vmm.c
909
error = vmm_fetch_instruction(vcpu, paging, vme->rip + cs_base,
sys/amd64/vmm/vmm.c
920
if (vmm_decode_instruction(vcpu, gla, cpu_mode, cs_d, vie) != 0) {
sys/amd64/vmm/vmm.c
921
VMM_CTR1(vcpu, "Error decoding instruction at %#lx",
sys/amd64/vmm/vmm.c
931
vcpu->nextrip += vie->num_processed;
sys/amd64/vmm/vmm.c
932
VMM_CTR1(vcpu, "nextrip updated to %#lx after instruction decoding",
sys/amd64/vmm/vmm.c
933
vcpu->nextrip);
sys/amd64/vmm/vmm.c
95
#define VMM_CTR0(vcpu, format) \
sys/amd64/vmm/vmm.c
950
error = vmm_emulate_instruction(vcpu, gpa, vie, paging, mread, mwrite,
sys/amd64/vmm/vmm.c
957
vm_handle_suspend(struct vcpu *vcpu, bool *retu)
sys/amd64/vmm/vmm.c
959
struct vm *vm = vcpu->vm;
sys/amd64/vmm/vmm.c
96
VCPU_CTR0((vcpu)->vm, (vcpu)->vcpuid, format)
sys/amd64/vmm/vmm.c
966
CPU_SET_ATOMIC(vcpu->vcpuid, &vm->suspended_cpus);
sys/amd64/vmm/vmm.c
975
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
978
VMM_CTR0(vcpu, "All vcpus suspended");
sys/amd64/vmm/vmm.c
98
#define VMM_CTR1(vcpu, format, p1) \
sys/amd64/vmm/vmm.c
983
VMM_CTR0(vcpu, "Sleeping during suspend");
sys/amd64/vmm/vmm.c
984
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/amd64/vmm/vmm.c
985
msleep_spin(vcpu, &vcpu->mtx, "vmsusp", hz);
sys/amd64/vmm/vmm.c
986
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/amd64/vmm/vmm.c
988
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
99
VCPU_CTR1((vcpu)->vm, (vcpu)->vcpuid, format, p1)
sys/amd64/vmm/vmm.c
990
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
993
VMM_CTR0(vcpu, "Rendezvous during suspend");
sys/amd64/vmm/vmm.c
994
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm.c
995
error = vm_handle_rendezvous(vcpu);
sys/amd64/vmm/vmm.c
996
vcpu_lock(vcpu);
sys/amd64/vmm/vmm.c
999
vcpu_unlock(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
176
vmmdev_machdep_ioctl(struct vm *vm, struct vcpu *vcpu, u_long cmd, caddr_t data,
sys/amd64/vmm/vmm_dev_machdep.c
188
vme = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
190
error = vm_run(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
198
error = copyout(vm_exitinfo_cpuset(vcpu),
sys/amd64/vmm/vmm_dev_machdep.c
227
vme = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
229
error = vm_run(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
240
dmask = vm_exitinfo_cpuset(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
257
error = vmm_stat_copy(vcpu, 0, nitems(vmstats_13->statbuf),
sys/amd64/vmm/vmm_dev_machdep.c
323
error = vm_inject_exception(vcpu,
sys/amd64/vmm/vmm_dev_machdep.c
329
error = vm_inject_nmi(vcpu);
sys/amd64/vmm/vmm_dev_machdep.c
335
error = lapic_intr_edge(vcpu, vmirq->vector);
sys/amd64/vmm/vmm_dev_machdep.c
342
error = lapic_set_local_intr(vm, vcpu, vmirq->vector);
sys/amd64/vmm/vmm_dev_machdep.c
409
error = mwrite(vcpu, kernemu->gpa,
sys/amd64/vmm/vmm_dev_machdep.c
412
error = mread(vcpu, kernemu->gpa,
sys/amd64/vmm/vmm_dev_machdep.c
455
error = vm_set_seg_desc(vcpu, vmsegdesc->regnum,
sys/amd64/vmm/vmm_dev_machdep.c
463
error = vm_get_seg_desc(vcpu, vmsegdesc->regnum,
sys/amd64/vmm/vmm_dev_machdep.c
471
error = vm_set_x2apic_state(vcpu, x2apic->state);
sys/amd64/vmm/vmm_dev_machdep.c
478
error = vm_get_x2apic_state(vcpu, &x2apic->state);
sys/amd64/vmm/vmm_dev_machdep.c
499
error = vm_gla2gpa(vcpu, &gg->paging, gg->gla,
sys/amd64/vmm/vmm_dev_machdep.c
509
error = vm_gla2gpa_nofault(vcpu, &gg->paging, gg->gla,
sys/amd64/vmm/vmm_dev_machdep.c
519
error = vm_exit_intinfo(vcpu, vmii->info1);
sys/amd64/vmm/vmm_dev_machdep.c
526
error = vm_get_intinfo(vcpu, &vmii->info1, &vmii->info2);
sys/amd64/vmm/vmm_dev_machdep.c
560
error = vm_restart_instruction(vcpu);
sys/amd64/vmm/vmm_instruction_emul.c
1001
emulate_and(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1024
error = vie_read_register(vcpu, reg, &val1);
sys/amd64/vmm/vmm_instruction_emul.c
1029
error = memread(vcpu, gpa, &val2, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1035
error = vie_update_register(vcpu, reg, result, size);
sys/amd64/vmm/vmm_instruction_emul.c
1053
error = memread(vcpu, gpa, &val1, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1062
error = memwrite(vcpu, gpa, result, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1070
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1084
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
sys/amd64/vmm/vmm_instruction_emul.c
1089
emulate_or(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1112
error = vie_read_register(vcpu, reg, &val1);
sys/amd64/vmm/vmm_instruction_emul.c
1117
error = memread(vcpu, gpa, &val2, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1123
error = vie_update_register(vcpu, reg, result, size);
sys/amd64/vmm/vmm_instruction_emul.c
1141
error = memread(vcpu, gpa, &val1, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1150
error = memwrite(vcpu, gpa, result, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1158
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1172
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
sys/amd64/vmm/vmm_instruction_emul.c
1177
emulate_cmp(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1205
error = vie_read_register(vcpu, reg, ®op);
sys/amd64/vmm/vmm_instruction_emul.c
1210
error = memread(vcpu, gpa, &memop, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1249
error = memread(vcpu, gpa, &op1, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1258
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1264
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
sys/amd64/vmm/vmm_instruction_emul.c
1269
emulate_test(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1299
error = memread(vcpu, gpa, &op1, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1308
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1319
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
sys/amd64/vmm/vmm_instruction_emul.c
1324
emulate_bextr(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1352
error = memread(vcpu, gpa, &src1, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1355
error = vie_read_register(vcpu, gpr_map[vie->vex_reg], &src2);
sys/amd64/vmm/vmm_instruction_emul.c
1358
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1384
error = vie_update_register(vcpu, gpr_map[vie->reg], dst, size);
sys/amd64/vmm/vmm_instruction_emul.c
1395
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags,
sys/amd64/vmm/vmm_instruction_emul.c
1401
emulate_add(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1423
error = vie_read_register(vcpu, reg, &val1);
sys/amd64/vmm/vmm_instruction_emul.c
1428
error = memread(vcpu, gpa, &val2, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1434
error = vie_update_register(vcpu, reg, nval, size);
sys/amd64/vmm/vmm_instruction_emul.c
1442
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/vmm_instruction_emul.c
1449
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/vmm_instruction_emul.c
1457
emulate_sub(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1479
error = vie_read_register(vcpu, reg, &val1);
sys/amd64/vmm/vmm_instruction_emul.c
1484
error = memread(vcpu, gpa, &val2, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1490
error = vie_update_register(vcpu, reg, nval, size);
sys/amd64/vmm/vmm_instruction_emul.c
1498
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/vmm_instruction_emul.c
1505
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS,
sys/amd64/vmm/vmm_instruction_emul.c
1513
emulate_stack_op(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1551
error = vm_get_seg_desc(vcpu, VM_REG_GUEST_SS, &ss_desc);
sys/amd64/vmm/vmm_instruction_emul.c
1560
error = vie_read_register(vcpu, VM_REG_GUEST_CR0, &cr0);
sys/amd64/vmm/vmm_instruction_emul.c
1563
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1566
error = vie_read_register(vcpu, VM_REG_GUEST_RSP, &rsp);
sys/amd64/vmm/vmm_instruction_emul.c
1575
vm_inject_ss(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
1580
vm_inject_ss(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
1585
vm_inject_ac(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
1589
error = vm_copy_setup(vcpu, paging, stack_gla, size,
sys/amd64/vmm/vmm_instruction_emul.c
1596
error = memread(vcpu, mmio_gpa, &val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1601
error = memwrite(vcpu, mmio_gpa, val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
1607
error = vie_update_register(vcpu, VM_REG_GUEST_RSP, rsp,
sys/amd64/vmm/vmm_instruction_emul.c
1615
emulate_push(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1630
error = emulate_stack_op(vcpu, mmio_gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1636
emulate_pop(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1651
error = emulate_stack_op(vcpu, mmio_gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1657
emulate_group1(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1665
error = emulate_or(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1669
error = emulate_and(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1673
error = emulate_cmp(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1685
emulate_bittest(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1701
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
1704
error = memread(vcpu, gpa, &val, vie->opsize, memarg);
sys/amd64/vmm/vmm_instruction_emul.c
1721
error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
sys/amd64/vmm/vmm_instruction_emul.c
1728
emulate_twob_group15(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1748
error = memread(vcpu, gpa, &buf, 1, memarg);
sys/amd64/vmm/vmm_instruction_emul.c
1760
vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
1771
error = emulate_group1(vcpu, gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1775
error = emulate_pop(vcpu, gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1779
error = emulate_push(vcpu, gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1783
error = emulate_cmp(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1787
error = emulate_mov(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1792
error = emulate_movx(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1796
error = emulate_movs(vcpu, gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1800
error = emulate_stos(vcpu, gpa, vie, paging, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1804
error = emulate_and(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1808
error = emulate_or(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1812
error = emulate_sub(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1816
error = emulate_bittest(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1820
error = emulate_twob_group15(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1824
error = emulate_add(vcpu, gpa, vie, memread,
sys/amd64/vmm/vmm_instruction_emul.c
1828
error = emulate_test(vcpu, gpa, vie,
sys/amd64/vmm/vmm_instruction_emul.c
1832
error = emulate_bextr(vcpu, gpa, vie, paging,
sys/amd64/vmm/vmm_instruction_emul.c
2055
ptp_hold(struct vcpu *vcpu, vm_paddr_t ptpphys, size_t len, void **cookie)
sys/amd64/vmm/vmm_instruction_emul.c
2060
ptr = vm_gpa_hold(vcpu, ptpphys, len, VM_PROT_RW, cookie);
sys/amd64/vmm/vmm_instruction_emul.c
2065
_vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/vmm/vmm_instruction_emul.c
2093
vm_inject_gp(vcpu);
sys/amd64/vmm/vmm_instruction_emul.c
2108
ptpbase32 = ptp_hold(vcpu, ptpphys, PAGE_SIZE,
sys/amd64/vmm/vmm_instruction_emul.c
2126
vm_inject_pf(vcpu, pfcode, gla);
sys/amd64/vmm/vmm_instruction_emul.c
2170
ptpbase = ptp_hold(vcpu, ptpphys, sizeof(*ptpbase) * 4,
sys/amd64/vmm/vmm_instruction_emul.c
2182
vm_inject_pf(vcpu, pfcode, gla);
sys/amd64/vmm/vmm_instruction_emul.c
2200
ptpbase = ptp_hold(vcpu, ptpphys, PAGE_SIZE, &cookie);
sys/amd64/vmm/vmm_instruction_emul.c
2215
vm_inject_pf(vcpu, pfcode, gla);
sys/amd64/vmm/vmm_instruction_emul.c
2233
vm_inject_pf(vcpu, pfcode, gla);
sys/amd64/vmm/vmm_instruction_emul.c
2266
vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/vmm/vmm_instruction_emul.c
2270
return (_vm_gla2gpa(vcpu, paging, gla, prot, gpa, guest_fault,
sys/amd64/vmm/vmm_instruction_emul.c
2275
vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/vmm/vmm_instruction_emul.c
2279
return (_vm_gla2gpa(vcpu, paging, gla, prot, gpa, guest_fault,
sys/amd64/vmm/vmm_instruction_emul.c
2284
vmm_fetch_instruction(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/amd64/vmm/vmm_instruction_emul.c
2294
error = vm_copy_setup(vcpu, paging, rip, inst_length, prot,
sys/amd64/vmm/vmm_instruction_emul.c
2812
verify_gla(struct vcpu *vcpu, uint64_t gla, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
2826
error = vm_get_register(vcpu, vie->base_register, &base);
sys/amd64/vmm/vmm_instruction_emul.c
283
vie_read_register(struct vcpu *vcpu, enum vm_reg_name reg, uint64_t *rval)
sys/amd64/vmm/vmm_instruction_emul.c
2843
error = vm_get_register(vcpu, vie->index_register, &idx);
sys/amd64/vmm/vmm_instruction_emul.c
287
error = vm_get_register(vcpu, reg, rval);
sys/amd64/vmm/vmm_instruction_emul.c
2875
error = vm_get_seg_desc(vcpu, seg, &desc);
sys/amd64/vmm/vmm_instruction_emul.c
2902
vmm_decode_instruction(struct vcpu *vcpu, uint64_t gla,
sys/amd64/vmm/vmm_instruction_emul.c
2932
if (verify_gla(vcpu, gla, vie, cpu_mode))
sys/amd64/vmm/vmm_instruction_emul.c
319
vie_read_bytereg(struct vcpu *vcpu, struct vie *vie, uint8_t *rval)
sys/amd64/vmm/vmm_instruction_emul.c
326
error = vm_get_register(vcpu, reg, &val);
sys/amd64/vmm/vmm_instruction_emul.c
340
vie_write_bytereg(struct vcpu *vcpu, struct vie *vie, uint8_t byte)
sys/amd64/vmm/vmm_instruction_emul.c
347
error = vm_get_register(vcpu, reg, &origval);
sys/amd64/vmm/vmm_instruction_emul.c
360
error = vm_set_register(vcpu, reg, val);
sys/amd64/vmm/vmm_instruction_emul.c
366
vie_update_register(struct vcpu *vcpu, enum vm_reg_name reg,
sys/amd64/vmm/vmm_instruction_emul.c
375
error = vie_read_register(vcpu, reg, &origval);
sys/amd64/vmm/vmm_instruction_emul.c
390
error = vm_set_register(vcpu, reg, val);
sys/amd64/vmm/vmm_instruction_emul.c
502
emulate_mov(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
521
error = vie_read_bytereg(vcpu, vie, &byte);
sys/amd64/vmm/vmm_instruction_emul.c
523
error = memwrite(vcpu, gpa, byte, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
533
error = vie_read_register(vcpu, reg, &val);
sys/amd64/vmm/vmm_instruction_emul.c
536
error = memwrite(vcpu, gpa, val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
546
error = memread(vcpu, gpa, &val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
548
error = vie_write_bytereg(vcpu, vie, val);
sys/amd64/vmm/vmm_instruction_emul.c
557
error = memread(vcpu, gpa, &val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
560
error = vie_update_register(vcpu, reg, val, size);
sys/amd64/vmm/vmm_instruction_emul.c
570
error = memread(vcpu, gpa, &val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
573
error = vie_update_register(vcpu, reg, val, size);
sys/amd64/vmm/vmm_instruction_emul.c
583
error = vie_read_register(vcpu, VM_REG_GUEST_RAX, &val);
sys/amd64/vmm/vmm_instruction_emul.c
586
error = memwrite(vcpu, gpa, val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
596
error = memwrite(vcpu, gpa, vie->immediate, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
606
error = memwrite(vcpu, gpa, val, size, arg);
sys/amd64/vmm/vmm_instruction_emul.c
616
emulate_movx(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
638
error = memread(vcpu, gpa, &val, 1, arg);
sys/amd64/vmm/vmm_instruction_emul.c
649
error = vie_update_register(vcpu, reg, val, size);
sys/amd64/vmm/vmm_instruction_emul.c
659
error = memread(vcpu, gpa, &val, 2, arg);
sys/amd64/vmm/vmm_instruction_emul.c
668
error = vie_update_register(vcpu, reg, val, size);
sys/amd64/vmm/vmm_instruction_emul.c
681
error = memread(vcpu, gpa, &val, 1, arg);
sys/amd64/vmm/vmm_instruction_emul.c
692
error = vie_update_register(vcpu, reg, val, size);
sys/amd64/vmm/vmm_instruction_emul.c
704
get_gla(struct vcpu *vcpu, struct vie *vie __unused,
sys/amd64/vmm/vmm_instruction_emul.c
712
error = vie_read_register(vcpu, VM_REG_GUEST_CR0, &cr0);
sys/amd64/vmm/vmm_instruction_emul.c
715
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
718
error = vm_get_seg_desc(vcpu, seg, &desc);
sys/amd64/vmm/vmm_instruction_emul.c
722
error = vie_read_register(vcpu, gpr, &val);
sys/amd64/vmm/vmm_instruction_emul.c
729
vm_inject_ss(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
731
vm_inject_gp(vcpu);
sys/amd64/vmm/vmm_instruction_emul.c
737
vm_inject_ss(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
739
vm_inject_gp(vcpu);
sys/amd64/vmm/vmm_instruction_emul.c
744
vm_inject_ac(vcpu, 0);
sys/amd64/vmm/vmm_instruction_emul.c
757
emulate_movs(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
784
error = vie_read_register(vcpu, VM_REG_GUEST_RCX, &rcx);
sys/amd64/vmm/vmm_instruction_emul.c
814
error = get_gla(vcpu, vie, paging, opsize, vie->addrsize,
sys/amd64/vmm/vmm_instruction_emul.c
819
error = vm_copy_setup(vcpu, paging, srcaddr, opsize, PROT_READ,
sys/amd64/vmm/vmm_instruction_emul.c
830
error = memwrite(vcpu, gpa, val, opsize, arg);
sys/amd64/vmm/vmm_instruction_emul.c
839
error = get_gla(vcpu, vie, paging, opsize, vie->addrsize,
sys/amd64/vmm/vmm_instruction_emul.c
845
error = vm_copy_setup(vcpu, paging, dstaddr, opsize,
sys/amd64/vmm/vmm_instruction_emul.c
860
error = memread(vcpu, gpa, &val, opsize, arg);
sys/amd64/vmm/vmm_instruction_emul.c
875
error = vm_gla2gpa(vcpu, paging, srcaddr,
sys/amd64/vmm/vmm_instruction_emul.c
880
error = vm_gla2gpa(vcpu, paging, dstaddr,
sys/amd64/vmm/vmm_instruction_emul.c
885
error = memread(vcpu, srcgpa, &val, opsize, arg);
sys/amd64/vmm/vmm_instruction_emul.c
889
error = memwrite(vcpu, dstgpa, val, opsize, arg);
sys/amd64/vmm/vmm_instruction_emul.c
895
error = vie_read_register(vcpu, VM_REG_GUEST_RSI, &rsi);
sys/amd64/vmm/vmm_instruction_emul.c
898
error = vie_read_register(vcpu, VM_REG_GUEST_RDI, &rdi);
sys/amd64/vmm/vmm_instruction_emul.c
901
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
912
error = vie_update_register(vcpu, VM_REG_GUEST_RSI, rsi,
sys/amd64/vmm/vmm_instruction_emul.c
916
error = vie_update_register(vcpu, VM_REG_GUEST_RDI, rdi,
sys/amd64/vmm/vmm_instruction_emul.c
922
error = vie_update_register(vcpu, VM_REG_GUEST_RCX,
sys/amd64/vmm/vmm_instruction_emul.c
930
vm_restart_instruction(vcpu);
sys/amd64/vmm/vmm_instruction_emul.c
939
emulate_stos(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/amd64/vmm/vmm_instruction_emul.c
951
error = vie_read_register(vcpu, VM_REG_GUEST_RCX, &rcx);
sys/amd64/vmm/vmm_instruction_emul.c
962
error = vie_read_register(vcpu, VM_REG_GUEST_RAX, &val);
sys/amd64/vmm/vmm_instruction_emul.c
965
error = memwrite(vcpu, gpa, val, opsize, arg);
sys/amd64/vmm/vmm_instruction_emul.c
969
error = vie_read_register(vcpu, VM_REG_GUEST_RDI, &rdi);
sys/amd64/vmm/vmm_instruction_emul.c
972
error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
sys/amd64/vmm/vmm_instruction_emul.c
980
error = vie_update_register(vcpu, VM_REG_GUEST_RDI, rdi,
sys/amd64/vmm/vmm_instruction_emul.c
986
error = vie_update_register(vcpu, VM_REG_GUEST_RCX,
sys/amd64/vmm/vmm_instruction_emul.c
994
vm_restart_instruction(vcpu);
sys/amd64/vmm/vmm_ioport.c
102
emulate_inout_port(struct vcpu *vcpu, struct vm_exit *vmexit, bool *retu)
sys/amd64/vmm/vmm_ioport.c
123
error = (*handler)(vcpu_vm(vcpu), vmexit->u.inout.in,
sys/amd64/vmm/vmm_ioport.c
139
error = vm_set_register(vcpu, VM_REG_GUEST_RAX,
sys/amd64/vmm/vmm_ioport.c
149
decode_segment(struct vcpu *vcpu, enum vm_reg_name *segment)
sys/amd64/vmm/vmm_ioport.c
157
vme = vm_exitinfo(vcpu);
sys/amd64/vmm/vmm_ioport.c
161
err = vmm_fetch_instruction(vcpu, paging,
sys/amd64/vmm/vmm_ioport.c
166
err = vmm_decode_instruction(vcpu, VIE_INVALID_GLA, paging->cpu_mode,
sys/amd64/vmm/vmm_ioport.c
180
emulate_inout_str(struct vcpu *vcpu, struct vm_exit *vmexit, bool *retu)
sys/amd64/vmm/vmm_ioport.c
186
err = decode_segment(vcpu, &vmexit->u.inout_str.seg_name);
sys/amd64/vmm/vmm_ioport.c
189
return (vm_get_seg_desc(vcpu, vmexit->u.inout_str.seg_name,
sys/amd64/vmm/vmm_ioport.c
196
vm_handle_inout(struct vcpu *vcpu, struct vm_exit *vmexit, bool *retu)
sys/amd64/vmm/vmm_ioport.c
205
error = emulate_inout_str(vcpu, vmexit, retu);
sys/amd64/vmm/vmm_ioport.c
207
error = emulate_inout_port(vcpu, vmexit, retu);
sys/amd64/vmm/vmm_ioport.c
209
VCPU_CTR4(vcpu_vm(vcpu), vcpu_vcpuid(vcpu), "%s%s 0x%04x: %s",
sys/amd64/vmm/vmm_ioport.h
35
int vm_handle_inout(struct vcpu *vcpu, struct vm_exit *vme, bool *retu);
sys/amd64/vmm/vmm_lapic.c
157
lapic_rdmsr(struct vcpu *vcpu, u_int msr, uint64_t *rval, bool *retu)
sys/amd64/vmm/vmm_lapic.c
163
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
177
lapic_wrmsr(struct vcpu *vcpu, u_int msr, uint64_t val, bool *retu)
sys/amd64/vmm/vmm_lapic.c
183
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
196
lapic_mmio_write(struct vcpu *vcpu, uint64_t gpa, uint64_t wval, int size,
sys/amd64/vmm/vmm_lapic.c
212
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
218
lapic_mmio_read(struct vcpu *vcpu, uint64_t gpa, uint64_t *rval, int size,
sys/amd64/vmm/vmm_lapic.c
236
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
52
lapic_set_intr(struct vcpu *vcpu, int vector, bool level)
sys/amd64/vmm/vmm_lapic.c
63
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
65
vcpu_notify_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.c
70
lapic_set_local_intr(struct vm *vm, struct vcpu *vcpu, int vector)
sys/amd64/vmm/vmm_lapic.c
76
if (vcpu == NULL) {
sys/amd64/vmm/vmm_lapic.c
86
vlapic = vm_lapic(vcpu);
sys/amd64/vmm/vmm_lapic.h
32
struct vcpu;
sys/amd64/vmm/vmm_lapic.h
36
int lapic_rdmsr(struct vcpu *vcpu, u_int msr, uint64_t *rval, bool *retu);
sys/amd64/vmm/vmm_lapic.h
37
int lapic_wrmsr(struct vcpu *vcpu, u_int msr, uint64_t wval, bool *retu);
sys/amd64/vmm/vmm_lapic.h
39
int lapic_mmio_read(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/vmm/vmm_lapic.h
41
int lapic_mmio_write(struct vcpu *vcpu, uint64_t gpa,
sys/amd64/vmm/vmm_lapic.h
48
int lapic_set_intr(struct vcpu *vcpu, int vector, bool trig);
sys/amd64/vmm/vmm_lapic.h
53
lapic_intr_level(struct vcpu *vcpu, int vector)
sys/amd64/vmm/vmm_lapic.h
56
return (lapic_set_intr(vcpu, vector, LAPIC_TRIG_LEVEL));
sys/amd64/vmm/vmm_lapic.h
60
lapic_intr_edge(struct vcpu *vcpu, int vector)
sys/amd64/vmm/vmm_lapic.h
63
return (lapic_set_intr(vcpu, vector, LAPIC_TRIG_EDGE));
sys/amd64/vmm/vmm_lapic.h
70
int lapic_set_local_intr(struct vm *vm, struct vcpu *vcpu, int vector);
sys/amd64/vmm/x86.c
192
error = vm_get_capability(vcpu,
sys/amd64/vmm/x86.c
306
error = vm_get_x2apic_state(vcpu, &x2apic_state);
sys/amd64/vmm/x86.c
346
error = vm_get_register(vcpu,
sys/amd64/vmm/x86.c
464
error = vm_get_capability(vcpu, VM_CAP_RDPID,
sys/amd64/vmm/x86.c
470
error = vm_get_capability(vcpu,
sys/amd64/vmm/x86.c
654
vm_cpuid_capability(struct vcpu *vcpu, enum vm_cpuid_capability cap)
sys/amd64/vmm/x86.c
77
x86_emulate_cpuid(struct vcpu *vcpu, uint64_t *rax, uint64_t *rbx,
sys/amd64/vmm/x86.c
80
struct vm *vm = vcpu_vm(vcpu);
sys/amd64/vmm/x86.c
81
int vcpu_id = vcpu_vcpuid(vcpu);
sys/amd64/vmm/x86.h
67
int x86_emulate_cpuid(struct vcpu *vcpu, uint64_t *rax, uint64_t *rbx,
sys/amd64/vmm/x86.h
82
bool vm_cpuid_capability(struct vcpu *vcpu, enum vm_cpuid_capability);
sys/arm64/include/vmm.h
159
DECLARE_VMMOPS_FUNC(void *, vcpu_init, (void *vmi, struct vcpu *vcpu,
sys/arm64/include/vmm.h
179
int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval);
sys/arm64/include/vmm.h
180
int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val);
sys/arm64/include/vmm.h
181
int vm_run(struct vcpu *vcpu);
sys/arm64/include/vmm.h
183
void *vcpu_get_cookie(struct vcpu *vcpu);
sys/arm64/include/vmm.h
184
int vm_get_capability(struct vcpu *vcpu, int type, int *val);
sys/arm64/include/vmm.h
185
int vm_set_capability(struct vcpu *vcpu, int type, int val);
sys/arm64/include/vmm.h
186
int vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far);
sys/arm64/include/vmm.h
192
struct vm_exit *vm_exitinfo(struct vcpu *vcpu);
sys/arm64/include/vmm.h
193
void vm_exit_suspended(struct vcpu *vcpu, uint64_t pc);
sys/arm64/include/vmm.h
194
void vm_exit_debug(struct vcpu *vcpu, uint64_t pc);
sys/arm64/include/vmm.h
195
void vm_exit_astpending(struct vcpu *vcpu, uint64_t pc);
sys/arm64/include/vmm.h
38
struct vcpu;
sys/arm64/include/vmm_instruction_emul.h
32
struct vcpu;
sys/arm64/include/vmm_instruction_emul.h
41
typedef int (*mem_region_read_t)(struct vcpu *vcpu, uint64_t gpa,
sys/arm64/include/vmm_instruction_emul.h
43
typedef int (*mem_region_write_t)(struct vcpu *vcpu, uint64_t gpa,
sys/arm64/include/vmm_instruction_emul.h
49
typedef int (*reg_read_t)(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/arm64/include/vmm_instruction_emul.h
50
typedef int (*reg_write_t)(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/arm64/include/vmm_instruction_emul.h
63
int vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/arm64/include/vmm_instruction_emul.h
78
int vmm_emulate_register(struct vcpu *vcpu, struct vre *vre, reg_read_t regread,
sys/arm64/vmm/arm64.h
121
struct vcpu *vcpu;
sys/arm64/vmm/io/vgic_v3.c
1071
INJECT_IRQ(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu), irqid,
sys/arm64/vmm/io/vgic_v3.c
1371
dist_read(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t *rval,
sys/arm64/vmm/io/vgic_v3.c
1379
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vgic_v3.c
1409
dist_write(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t wval,
sys/arm64/vmm/io/vgic_v3.c
1417
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vgic_v3.c
1470
if (vcpu_vcpuid(hypctx->vcpu) == (vgic_max_cpu_count(hypctx->hyp) - 1))
sys/arm64/vmm/io/vgic_v3.c
1487
(uint64_t)vcpu_vcpuid(hypctx->vcpu) << GICR_TYPER_CPUNUM_SHIFT;
sys/arm64/vmm/io/vgic_v3.c
1614
redist_read(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t *rval,
sys/arm64/vmm/io/vgic_v3.c
1624
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vgic_v3.c
1692
redist_write(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t wval,
sys/arm64/vmm/io/vgic_v3.c
1702
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vgic_v3.c
1766
vgic_v3_icc_sgi1r_read(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/io/vgic_v3.c
1776
vgic_v3_icc_sgi1r_write(struct vcpu *vcpu, uint64_t rval, void *arg)
sys/arm64/vmm/io/vgic_v3.c
1785
vm = vcpu_vm(vcpu);
sys/arm64/vmm/io/vgic_v3.c
1788
vcpuid = vcpu_vcpuid(vcpu);
sys/arm64/vmm/io/vgic_v3.c
2202
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
485
irq->target_vcpu = vcpu_vcpuid(hypctx->vcpu);
sys/arm64/vmm/io/vgic_v3.c
670
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
697
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
718
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
751
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
796
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
827
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
871
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
890
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
912
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
941
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vgic_v3.c
958
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu), n);
sys/arm64/vmm/io/vgic_v3.c
974
irq = vgic_v3_get_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu), n);
sys/arm64/vmm/io/vtimer.c
102
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
274
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
277
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
280
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
307
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
317
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
337
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(hypctx->vcpu),
sys/arm64/vmm/io/vtimer.c
352
vtimer_remove_irq(struct hypctx *hypctx, struct vcpu *vcpu)
sys/arm64/vmm/io/vtimer.c
367
vgic_inject_irq(hypctx->hyp, vcpu_vcpuid(vcpu), timer->irqid, false);
sys/arm64/vmm/io/vtimer.c
382
vtimer_phys_ctl_read(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/io/vtimer.c
389
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
404
vtimer_phys_ctl_write(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/io/vtimer.c
411
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
420
vtimer_remove_irq(hypctx, vcpu);
sys/arm64/vmm/io/vtimer.c
431
vtimer_phys_cnt_read(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/io/vtimer.c
436
vm = vcpu_vm(vcpu);
sys/arm64/vmm/io/vtimer.c
443
vtimer_phys_cnt_write(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/io/vtimer.c
449
vtimer_phys_cval_read(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/io/vtimer.c
454
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
463
vtimer_phys_cval_write(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/io/vtimer.c
468
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
473
vtimer_remove_irq(hypctx, vcpu);
sys/arm64/vmm/io/vtimer.c
482
vtimer_phys_tval_read(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/io/vtimer.c
489
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
511
vtimer_phys_tval_write(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/io/vtimer.c
518
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/io/vtimer.c
525
vtimer_remove_irq(hypctx, vcpu);
sys/arm64/vmm/io/vtimer.h
77
int vtimer_phys_ctl_read(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/arm64/vmm/io/vtimer.h
78
int vtimer_phys_ctl_write(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/arm64/vmm/io/vtimer.h
79
int vtimer_phys_cnt_read(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/arm64/vmm/io/vtimer.h
80
int vtimer_phys_cnt_write(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/arm64/vmm/io/vtimer.h
81
int vtimer_phys_cval_read(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/arm64/vmm/io/vtimer.h
82
int vtimer_phys_cval_write(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/arm64/vmm/io/vtimer.h
83
int vtimer_phys_tval_read(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/arm64/vmm/io/vtimer.h
84
int vtimer_phys_tval_write(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/arm64/vmm/reset.h
30
void reset_vm_el01_regs(void *vcpu);
sys/arm64/vmm/reset.h
31
void reset_vm_el2_regs(void *vcpu);
sys/arm64/vmm/vmm.c
1003
vcpuid = vcpu->vcpuid;
sys/arm64/vmm/vmm.c
1012
vme = &vcpu->exitinfo;
sys/arm64/vmm/vmm.c
1019
restore_guest_fpustate(vcpu);
sys/arm64/vmm/vmm.c
1021
vcpu_require_state(vcpu, VCPU_RUNNING);
sys/arm64/vmm/vmm.c
1022
error = vmmops_run(vcpu->cookie, vcpu->nextpc, pmap, &evinfo);
sys/arm64/vmm/vmm.c
1023
vcpu_require_state(vcpu, VCPU_FROZEN);
sys/arm64/vmm/vmm.c
1025
save_guest_fpustate(vcpu);
sys/arm64/vmm/vmm.c
1033
vcpu->nextpc = vme->pc + vme->inst_length;
sys/arm64/vmm/vmm.c
1034
error = vm_handle_inst_emul(vcpu, &retu);
sys/arm64/vmm/vmm.c
1038
vcpu->nextpc = vme->pc + vme->inst_length;
sys/arm64/vmm/vmm.c
1039
error = vm_handle_reg_emul(vcpu, &retu);
sys/arm64/vmm/vmm.c
1047
vcpu->nextpc = vme->pc;
sys/arm64/vmm/vmm.c
1052
error = vm_handle_smccc_call(vcpu, vme, &retu);
sys/arm64/vmm/vmm.c
1056
vcpu->nextpc = vme->pc + vme->inst_length;
sys/arm64/vmm/vmm.c
1057
error = vm_handle_wfi(vcpu, vme, &retu);
sys/arm64/vmm/vmm.c
1061
vcpu->nextpc = vme->pc;
sys/arm64/vmm/vmm.c
1062
error = vm_handle_paging(vcpu, &retu);
sys/arm64/vmm/vmm.c
1066
vcpu->nextpc = vme->pc;
sys/arm64/vmm/vmm.c
1067
error = vm_handle_suspend(vcpu, &retu);
sys/arm64/vmm/vmm.c
1072
vcpu->nextpc = vme->pc;
sys/arm64/vmm/vmm.c
177
vcpu_cleanup(struct vcpu *vcpu, bool destroy)
sys/arm64/vmm/vmm.c
179
vmmops_vcpu_cleanup(vcpu->cookie);
sys/arm64/vmm/vmm.c
180
vcpu->cookie = NULL;
sys/arm64/vmm/vmm.c
182
vmm_stat_free(vcpu->stats);
sys/arm64/vmm/vmm.c
183
fpu_save_area_free(vcpu->guestfpu);
sys/arm64/vmm/vmm.c
184
vcpu_lock_destroy(vcpu);
sys/arm64/vmm/vmm.c
185
free(vcpu, M_VMM);
sys/arm64/vmm/vmm.c
189
static struct vcpu *
sys/arm64/vmm/vmm.c
192
struct vcpu *vcpu;
sys/arm64/vmm/vmm.c
197
vcpu = malloc(sizeof(*vcpu), M_VMM, M_WAITOK | M_ZERO);
sys/arm64/vmm/vmm.c
198
vcpu_lock_init(vcpu);
sys/arm64/vmm/vmm.c
199
vcpu->state = VCPU_IDLE;
sys/arm64/vmm/vmm.c
200
vcpu->hostcpu = NOCPU;
sys/arm64/vmm/vmm.c
201
vcpu->vcpuid = vcpu_id;
sys/arm64/vmm/vmm.c
202
vcpu->vm = vm;
sys/arm64/vmm/vmm.c
203
vcpu->guestfpu = fpu_save_area_alloc();
sys/arm64/vmm/vmm.c
204
vcpu->stats = vmm_stat_alloc();
sys/arm64/vmm/vmm.c
205
return (vcpu);
sys/arm64/vmm/vmm.c
209
vcpu_init(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
211
vcpu->cookie = vmmops_vcpu_init(vcpu->vm->cookie, vcpu, vcpu->vcpuid);
sys/arm64/vmm/vmm.c
212
MPASS(vcpu->cookie != NULL);
sys/arm64/vmm/vmm.c
213
fpu_save_area_reset(vcpu->guestfpu);
sys/arm64/vmm/vmm.c
214
vmm_stat_init(vcpu->stats);
sys/arm64/vmm/vmm.c
218
vm_exitinfo(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
220
return (&vcpu->exitinfo);
sys/arm64/vmm/vmm.c
278
if (vm->vcpu[i] != NULL)
sys/arm64/vmm/vmm.c
279
vcpu_init(vm->vcpu[i]);
sys/arm64/vmm/vmm.c
284
struct vcpu *
sys/arm64/vmm/vmm.c
287
struct vcpu *vcpu;
sys/arm64/vmm/vmm.c
292
vcpu = (struct vcpu *)
sys/arm64/vmm/vmm.c
293
atomic_load_acq_ptr((uintptr_t *)&vm->vcpu[vcpuid]);
sys/arm64/vmm/vmm.c
294
if (__predict_true(vcpu != NULL))
sys/arm64/vmm/vmm.c
295
return (vcpu);
sys/arm64/vmm/vmm.c
298
vcpu = vm->vcpu[vcpuid];
sys/arm64/vmm/vmm.c
299
if (vcpu == NULL && !vm->dying) {
sys/arm64/vmm/vmm.c
306
vcpu = vcpu_alloc(vm, vcpuid);
sys/arm64/vmm/vmm.c
307
vcpu_init(vcpu);
sys/arm64/vmm/vmm.c
313
atomic_store_rel_ptr((uintptr_t *)&vm->vcpu[vcpuid],
sys/arm64/vmm/vmm.c
314
(uintptr_t)vcpu);
sys/arm64/vmm/vmm.c
317
return (vcpu);
sys/arm64/vmm/vmm.c
341
vm->vcpu = malloc(sizeof(*vm->vcpu) * vm->maxcpus, M_VMM,
sys/arm64/vmm/vmm.c
372
if (vm->vcpu[i] != NULL)
sys/arm64/vmm/vmm.c
373
vcpu_cleanup(vm->vcpu[i], destroy);
sys/arm64/vmm/vmm.c
382
free(vm->vcpu, M_VMM);
sys/arm64/vmm/vmm.c
402
vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/arm64/vmm/vmm.c
405
return (vmmops_gla2gpa(vcpu->cookie, paging, gla, prot, gpa, is_fault));
sys/arm64/vmm/vmm.c
409
vmm_reg_raz(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/vmm.c
416
vmm_reg_read_arg(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/vmm.c
423
vmm_reg_wi(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/vmm.c
429
vmm_write_oslar_el1(struct vcpu *vcpu, uint64_t wval, void *arg)
sys/arm64/vmm/vmm.c
433
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/vmm.c
441
vmm_read_oslsr_el1(struct vcpu *vcpu, uint64_t *rval, void *arg)
sys/arm64/vmm/vmm.c
446
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/vmm.c
561
vm_handle_reg_emul(struct vcpu *vcpu, bool *retu)
sys/arm64/vmm/vmm.c
568
vm = vcpu->vm;
sys/arm64/vmm/vmm.c
569
vme = &vcpu->exitinfo;
sys/arm64/vmm/vmm.c
579
rv = vmm_emulate_register(vcpu, vre,
sys/arm64/vmm/vmm.c
592
rv = vmm_emulate_register(vcpu, vre,
sys/arm64/vmm/vmm.c
647
vm_handle_inst_emul(struct vcpu *vcpu, bool *retu)
sys/arm64/vmm/vmm.c
658
vm = vcpu->vm;
sys/arm64/vmm/vmm.c
663
vme = &vcpu->exitinfo;
sys/arm64/vmm/vmm.c
680
error = vmm_emulate_instruction(vcpu, fault_ipa, vie, paging,
sys/arm64/vmm/vmm.c
690
vm_exit_suspended(struct vcpu *vcpu, uint64_t pc)
sys/arm64/vmm/vmm.c
692
struct vm *vm = vcpu->vm;
sys/arm64/vmm/vmm.c
698
vmexit = vm_exitinfo(vcpu);
sys/arm64/vmm/vmm.c
706
vm_exit_debug(struct vcpu *vcpu, uint64_t pc)
sys/arm64/vmm/vmm.c
710
vmexit = vm_exitinfo(vcpu);
sys/arm64/vmm/vmm.c
717
restore_guest_fpustate(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
727
vfp_restore(vcpu->guestfpu);
sys/arm64/vmm/vmm.c
737
save_guest_fpustate(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
745
vfp_store(vcpu->guestfpu);
sys/arm64/vmm/vmm.c
753
vcpu_require_state(struct vcpu *vcpu, enum vcpu_state newstate)
sys/arm64/vmm/vmm.c
757
if ((error = vcpu_set_state(vcpu, newstate, false)) != 0)
sys/arm64/vmm/vmm.c
762
vcpu_require_state_locked(struct vcpu *vcpu, enum vcpu_state newstate)
sys/arm64/vmm/vmm.c
766
if ((error = vcpu_set_state_locked(vcpu, newstate, false)) != 0)
sys/arm64/vmm/vmm.c
771
vm_get_capability(struct vcpu *vcpu, int type, int *retval)
sys/arm64/vmm/vmm.c
776
return (vmmops_getcap(vcpu->cookie, type, retval));
sys/arm64/vmm/vmm.c
780
vm_set_capability(struct vcpu *vcpu, int type, int val)
sys/arm64/vmm/vmm.c
785
return (vmmops_setcap(vcpu->cookie, type, val));
sys/arm64/vmm/vmm.c
789
vcpu_get_cookie(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
791
return (vcpu->cookie);
sys/arm64/vmm/vmm.c
795
vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval)
sys/arm64/vmm/vmm.c
800
return (vmmops_getreg(vcpu->cookie, reg, retval));
sys/arm64/vmm/vmm.c
804
vm_set_register(struct vcpu *vcpu, int reg, uint64_t val)
sys/arm64/vmm/vmm.c
810
error = vmmops_setreg(vcpu->cookie, reg, val);
sys/arm64/vmm/vmm.c
814
vcpu->nextpc = val;
sys/arm64/vmm/vmm.c
826
vm_inject_exception(struct vcpu *vcpu, uint64_t esr, uint64_t far)
sys/arm64/vmm/vmm.c
828
return (vmmops_exception(vcpu->cookie, esr, far));
sys/arm64/vmm/vmm.c
858
vm_handle_smccc_call(struct vcpu *vcpu, struct vm_exit *vme, bool *retu)
sys/arm64/vmm/vmm.c
863
hypctx = vcpu_get_cookie(vcpu);
sys/arm64/vmm/vmm.c
878
vm_handle_wfi(struct vcpu *vcpu, struct vm_exit *vme, bool *retu)
sys/arm64/vmm/vmm.c
882
vm = vcpu->vm;
sys/arm64/vmm/vmm.c
883
vcpu_lock(vcpu);
sys/arm64/vmm/vmm.c
888
if (vgic_has_pending_irq(vcpu->cookie))
sys/arm64/vmm/vmm.c
891
if (vcpu_should_yield(vcpu))
sys/arm64/vmm/vmm.c
894
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/arm64/vmm/vmm.c
899
msleep_spin(vcpu, &vcpu->mtx, "vmidle", hz);
sys/arm64/vmm/vmm.c
900
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/arm64/vmm/vmm.c
902
vcpu_unlock(vcpu);
sys/arm64/vmm/vmm.c
909
vm_handle_paging(struct vcpu *vcpu, bool *retu)
sys/arm64/vmm/vmm.c
911
struct vm *vm = vcpu->vm;
sys/arm64/vmm/vmm.c
918
vme = &vcpu->exitinfo;
sys/arm64/vmm/vmm.c
920
pmap = vmspace_pmap(vm_vmspace(vcpu->vm));
sys/arm64/vmm/vmm.c
946
vm_handle_suspend(struct vcpu *vcpu, bool *retu)
sys/arm64/vmm/vmm.c
948
struct vm *vm = vcpu->vm;
sys/arm64/vmm/vmm.c
955
CPU_SET_ATOMIC(vcpu->vcpuid, &vm->suspended_cpus);
sys/arm64/vmm/vmm.c
964
vcpu_lock(vcpu);
sys/arm64/vmm/vmm.c
969
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/arm64/vmm/vmm.c
970
msleep_spin(vcpu, &vcpu->mtx, "vmsusp", hz);
sys/arm64/vmm/vmm.c
971
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/arm64/vmm/vmm.c
973
vcpu_unlock(vcpu);
sys/arm64/vmm/vmm.c
975
vcpu_lock(vcpu);
sys/arm64/vmm/vmm.c
978
vcpu_unlock(vcpu);
sys/arm64/vmm/vmm.c
994
vm_run(struct vcpu *vcpu)
sys/arm64/vmm/vmm.c
996
struct vm *vm = vcpu->vm;
sys/arm64/vmm/vmm_arm64.c
1000
ptep = ptp_hold(hypctx->vcpu, pte_addr, PAGE_SIZE, &cookie);
sys/arm64/vmm/vmm_arm64.c
107
DPCPU_DEFINE_STATIC(struct hypctx *, vcpu);
sys/arm64/vmm/vmm_arm64.c
1084
struct vcpu *vcpu;
sys/arm64/vmm/vmm_arm64.c
1090
vcpu = hypctx->vcpu;
sys/arm64/vmm/vmm_arm64.c
1091
vme = vm_exitinfo(vcpu);
sys/arm64/vmm/vmm_arm64.c
112
DPCPU_SET(vcpu, hypctx);
sys/arm64/vmm/vmm_arm64.c
1138
vm_exit_suspended(vcpu, pc);
sys/arm64/vmm/vmm_arm64.c
1142
if (vcpu_debugged(vcpu)) {
sys/arm64/vmm/vmm_arm64.c
1144
vm_exit_debug(vcpu, pc);
sys/arm64/vmm/vmm_arm64.c
1171
vmm_stat_incr(vcpu, VMEXIT_COUNT, 1);
sys/arm64/vmm/vmm_arm64.c
118
return (DPCPU_GET(vcpu));
sys/arm64/vmm/vmm_arm64.c
1284
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/arm64/vmm/vmm_arm64.c
1287
vcpu_vcpuid(hypctx->vcpu));
sys/arm64/vmm/vmm_arm64.c
1304
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/arm64/vmm/vmm_arm64.c
1307
vcpu_vcpuid(hypctx->vcpu));
sys/arm64/vmm/vmm_arm64.c
1323
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/arm64/vmm/vmm_arm64.c
1326
vcpu_vcpuid(hypctx->vcpu));
sys/arm64/vmm/vmm_arm64.c
553
vmmops_vcpu_init(void *vmi, struct vcpu *vcpu1, int vcpuid)
sys/arm64/vmm/vmm_arm64.c
567
hypctx->vcpu = vcpu1;
sys/arm64/vmm/vmm_arm64.c
695
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNKNOWN, 1);
sys/arm64/vmm/vmm_arm64.c
701
vmm_stat_incr(hypctx->vcpu, VMEXIT_WFI, 1);
sys/arm64/vmm/vmm_arm64.c
704
vmm_stat_incr(hypctx->vcpu, VMEXIT_WFE, 1);
sys/arm64/vmm/vmm_arm64.c
709
vmm_stat_incr(hypctx->vcpu, VMEXIT_HVC, 1);
sys/arm64/vmm/vmm_arm64.c
713
vmm_stat_incr(hypctx->vcpu, VMEXIT_MSR, 1);
sys/arm64/vmm/vmm_arm64.c
718
vmm_stat_incr(hypctx->vcpu, VMEXIT_BRK, 1);
sys/arm64/vmm/vmm_arm64.c
722
vmm_stat_incr(hypctx->vcpu, VMEXIT_SS, 1);
sys/arm64/vmm/vmm_arm64.c
727
vmm_stat_incr(hypctx->vcpu, esr_ec == EXCP_DATA_ABORT_L ?
sys/arm64/vmm/vmm_arm64.c
751
if (vm_mem_allocated(hypctx->vcpu, gpa)) {
sys/arm64/vmm/vmm_arm64.c
781
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNHANDLED_SYNC, 1);
sys/arm64/vmm/vmm_arm64.c
806
vmm_stat_incr(hypctx->vcpu,
sys/arm64/vmm/vmm_arm64.c
817
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNHANDLED_EL2, 1);
sys/arm64/vmm/vmm_arm64.c
823
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNHANDLED, 1);
sys/arm64/vmm/vmm_arm64.c
842
ptp_hold(struct vcpu *vcpu, vm_paddr_t ptpphys, size_t len, void **cookie)
sys/arm64/vmm/vmm_arm64.c
847
ptr = vm_gpa_hold(vcpu, ptpphys, len, VM_PROT_RW, cookie);
sys/arm64/vmm/vmm_dev_machdep.c
102
error = vm_gla2gpa_nofault(vcpu, &gg->paging, gg->gla,
sys/arm64/vmm/vmm_dev_machdep.c
68
vmmdev_machdep_ioctl(struct vm *vm, struct vcpu *vcpu, u_long cmd, caddr_t data,
sys/arm64/vmm/vmm_dev_machdep.c
80
vme = vm_exitinfo(vcpu);
sys/arm64/vmm/vmm_dev_machdep.c
82
error = vm_run(vcpu);
sys/arm64/vmm/vmm_dev_machdep.c
95
error = vm_inject_exception(vcpu, vmexc->esr, vmexc->far);
sys/arm64/vmm/vmm_instruction_emul.c
55
vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/arm64/vmm/vmm_instruction_emul.c
63
error = memread(vcpu, gpa, &val, vie->access_size, memarg);
sys/arm64/vmm/vmm_instruction_emul.c
66
error = vm_set_register(vcpu, vie->reg, val);
sys/arm64/vmm/vmm_instruction_emul.c
68
error = vm_get_register(vcpu, vie->reg, &val);
sys/arm64/vmm/vmm_instruction_emul.c
74
error = memwrite(vcpu, gpa, val, vie->access_size, memarg);
sys/arm64/vmm/vmm_instruction_emul.c
82
vmm_emulate_register(struct vcpu *vcpu, struct vre *vre, reg_read_t regread,
sys/arm64/vmm/vmm_instruction_emul.c
89
error = regread(vcpu, &val, regarg);
sys/arm64/vmm/vmm_instruction_emul.c
92
error = vm_set_register(vcpu, vre->reg, val);
sys/arm64/vmm/vmm_instruction_emul.c
94
error = vm_get_register(vcpu, vre->reg, &val);
sys/arm64/vmm/vmm_instruction_emul.c
97
error = regwrite(vcpu, val, regarg);
sys/arm64/vmm/vmm_reset.c
115
reset_vm_el2_regs(void *vcpu)
sys/arm64/vmm/vmm_reset.c
120
el2ctx = vcpu;
sys/arm64/vmm/vmm_reset.c
121
vcpuid = vcpu_vcpuid(el2ctx->vcpu);
sys/arm64/vmm/vmm_reset.c
50
reset_vm_el01_regs(void *vcpu)
sys/arm64/vmm/vmm_reset.c
54
el2ctx = vcpu;
sys/dev/hyperv/vmbus/hyperv_mmu.c
112
vcpu = VMBUS_PCPU_GET(sc, vcpuid, cpu);
sys/dev/hyperv/vmbus/hyperv_mmu.c
113
if (vcpu == -1)
sys/dev/hyperv/vmbus/hyperv_mmu.c
115
vcpu_bank = vcpu / HV_VCPUS_PER_SPARSE_BANK;
sys/dev/hyperv/vmbus/hyperv_mmu.c
116
vcpu_offset = vcpu % HV_VCPUS_PER_SPARSE_BANK;
sys/dev/hyperv/vmbus/hyperv_mmu.c
135
int cpu, vcpu;
sys/dev/hyperv/vmbus/hyperv_mmu.c
200
vcpu = VMBUS_PCPU_GET(sc, vcpuid, cpu);
sys/dev/hyperv/vmbus/hyperv_mmu.c
201
if (vcpu >= 64)
sys/dev/hyperv/vmbus/hyperv_mmu.c
204
set_bit(vcpu, &flush->processor_mask);
sys/dev/hyperv/vmbus/hyperv_mmu.c
90
int cpu, vcpu, vcpu_bank, vcpu_offset, nr_bank = 1;
sys/dev/vmm/vmm_dev.c
127
vcpu_lock_one(struct vcpu *vcpu)
sys/dev/vmm/vmm_dev.c
129
return (vcpu_set_state(vcpu, VCPU_FROZEN, true));
sys/dev/vmm/vmm_dev.c
133
vcpu_unlock_one(struct vcpu *vcpu)
sys/dev/vmm/vmm_dev.c
137
state = vcpu_get_state(vcpu, NULL);
sys/dev/vmm/vmm_dev.c
140
vm_name(vcpu_vm(vcpu)), vcpu_vcpuid(vcpu), state);
sys/dev/vmm/vmm_dev.c
143
vcpu_set_state(vcpu, VCPU_IDLE, false);
sys/dev/vmm/vmm_dev.c
165
struct vcpu *vcpu;
sys/dev/vmm/vmm_dev.c
170
vcpu = vm_vcpu(sc->vm, i);
sys/dev/vmm/vmm_dev.c
171
if (vcpu == NULL)
sys/dev/vmm/vmm_dev.c
173
vcpu_unlock_one(vcpu);
sys/dev/vmm/vmm_dev.c
336
vm_get_register_set(struct vcpu *vcpu, unsigned int count, int *regnum,
sys/dev/vmm/vmm_dev.c
343
error = vm_get_register(vcpu, regnum[i], ®val[i]);
sys/dev/vmm/vmm_dev.c
351
vm_set_register_set(struct vcpu *vcpu, unsigned int count, int *regnum,
sys/dev/vmm/vmm_dev.c
358
error = vm_set_register(vcpu, regnum[i], regval[i]);
sys/dev/vmm/vmm_dev.c
437
struct vcpu *vcpu;
sys/dev/vmm/vmm_dev.c
478
vcpu = NULL;
sys/dev/vmm/vmm_dev.c
490
vcpu = vm_alloc_vcpu(sc->vm, vcpuid);
sys/dev/vmm/vmm_dev.c
491
if (vcpu == NULL) {
sys/dev/vmm/vmm_dev.c
496
error = vcpu_lock_one(vcpu);
sys/dev/vmm/vmm_dev.c
532
error = vmm_stat_copy(vcpu, vmstats->index,
sys/dev/vmm/vmm_dev.c
635
error = vm_get_register(vcpu, vmreg->regnum, &vmreg->regval);
sys/dev/vmm/vmm_dev.c
642
error = vm_set_register(vcpu, vmreg->regnum, vmreg->regval);
sys/dev/vmm/vmm_dev.c
662
error = vm_get_register_set(vcpu,
sys/dev/vmm/vmm_dev.c
691
error = vm_set_register_set(vcpu,
sys/dev/vmm/vmm_dev.c
701
error = vm_get_capability(vcpu, vmcap->captype, &vmcap->capval);
sys/dev/vmm/vmm_dev.c
708
error = vm_set_capability(vcpu, vmcap->captype, vmcap->capval);
sys/dev/vmm/vmm_dev.c
712
error = vm_activate_cpu(vcpu);
sys/dev/vmm/vmm_dev.c
744
error = vm_suspend_cpu(sc->vm, vcpu);
sys/dev/vmm/vmm_dev.c
747
error = vm_resume_cpu(sc->vm, vcpu);
sys/dev/vmm/vmm_dev.c
767
error = vmmdev_machdep_ioctl(sc->vm, vcpu, cmd, data, fflag,
sys/dev/vmm/vmm_dev.c
778
vcpu_unlock_one(vcpu);
sys/dev/vmm/vmm_dev.h
22
struct vcpu;
sys/dev/vmm/vmm_dev.h
27
int vmmdev_machdep_ioctl(struct vm *vm, struct vcpu *vcpu, u_long cmd,
sys/dev/vmm/vmm_mem.c
153
vm_mem_allocated(struct vcpu *vcpu, vm_paddr_t gpa)
sys/dev/vmm/vmm_mem.c
155
struct vm *vm = vcpu_vm(vcpu);
sys/dev/vmm/vmm_mem.c
161
state = vcpu_get_state(vcpu, &hostcpu);
sys/dev/vmm/vmm_mem.c
460
vm_gpa_hold(struct vcpu *vcpu, vm_paddr_t gpa, size_t len, int reqprot,
sys/dev/vmm/vmm_mem.c
468
int state = vcpu_get_state(vcpu, NULL);
sys/dev/vmm/vmm_mem.c
472
return (_vm_gpa_hold(vcpu_vm(vcpu), gpa, len, reqprot, cookie));
sys/dev/vmm/vmm_mem.h
103
bool vm_mem_allocated(struct vcpu *vcpu, vm_paddr_t gpa);
sys/dev/vmm/vmm_mem.h
105
int vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/dev/vmm/vmm_mem.h
38
struct vcpu;
sys/dev/vmm/vmm_mem.h
98
void *vm_gpa_hold(struct vcpu *vcpu, vm_paddr_t gpa, size_t len,
sys/dev/vmm/vmm_stat.c
101
(*vst->func)(vcpu, vst);
sys/dev/vmm/vmm_stat.c
105
stats = vcpu_stats(vcpu);
sys/dev/vmm/vmm_stat.c
77
vmm_stat_copy(struct vcpu *vcpu, int index, int count, int *num_stats,
sys/dev/vmm/vmm_stat.h
106
vmm_stat_array_set(struct vcpu *vcpu, struct vmm_stat_type *vst, int statidx,
sys/dev/vmm/vmm_stat.h
112
stats = vcpu_stats(vcpu);
sys/dev/vmm/vmm_stat.h
120
vmm_stat_incr(struct vcpu *vcpu, struct vmm_stat_type *vst, uint64_t x)
sys/dev/vmm/vmm_stat.h
124
vmm_stat_array_incr(vcpu, vst, 0, x);
sys/dev/vmm/vmm_stat.h
129
vmm_stat_set(struct vcpu *vcpu, struct vmm_stat_type *vst, uint64_t val)
sys/dev/vmm/vmm_stat.h
133
vmm_stat_array_set(vcpu, vst, 0, val);
sys/dev/vmm/vmm_stat.h
42
typedef void (*vmm_stat_func_t)(struct vcpu *vcpu,
sys/dev/vmm/vmm_stat.h
87
int vmm_stat_copy(struct vcpu *vcpu, int index, int count,
sys/dev/vmm/vmm_stat.h
92
vmm_stat_array_incr(struct vcpu *vcpu, struct vmm_stat_type *vst, int statidx,
sys/dev/vmm/vmm_stat.h
98
stats = vcpu_stats(vcpu);
sys/dev/vmm/vmm_vm.c
100
vcpu_set_state_locked(struct vcpu *vcpu, enum vcpu_state newstate,
sys/dev/vmm/vmm_vm.c
105
vcpu_assert_locked(vcpu);
sys/dev/vmm/vmm_vm.c
113
while (vcpu->state != VCPU_IDLE)
sys/dev/vmm/vmm_vm.c
114
vcpu_wait_idle(vcpu);
sys/dev/vmm/vmm_vm.c
116
KASSERT(vcpu->state != VCPU_IDLE, ("invalid transition from "
sys/dev/vmm/vmm_vm.c
120
if (vcpu->state == VCPU_RUNNING) {
sys/dev/vmm/vmm_vm.c
121
KASSERT(vcpu->hostcpu == curcpu, ("curcpu %d and hostcpu %d "
sys/dev/vmm/vmm_vm.c
122
"mismatch for running vcpu", curcpu, vcpu->hostcpu));
sys/dev/vmm/vmm_vm.c
124
KASSERT(vcpu->hostcpu == NOCPU, ("Invalid hostcpu %d for a "
sys/dev/vmm/vmm_vm.c
125
"vcpu that is not running", vcpu->hostcpu));
sys/dev/vmm/vmm_vm.c
134
switch (vcpu->state) {
sys/dev/vmm/vmm_vm.c
151
vcpu->state = newstate;
sys/dev/vmm/vmm_vm.c
153
vcpu->hostcpu = curcpu;
sys/dev/vmm/vmm_vm.c
155
vcpu->hostcpu = NOCPU;
sys/dev/vmm/vmm_vm.c
158
wakeup(&vcpu->state);
sys/dev/vmm/vmm_vm.c
173
struct vcpu *vcpu;
sys/dev/vmm/vmm_vm.c
195
vcpu = vm_vcpu(vm, i);
sys/dev/vmm/vmm_vm.c
196
if (vcpu == NULL)
sys/dev/vmm/vmm_vm.c
198
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
199
if (vcpu->state == VCPU_IDLE) {
sys/dev/vmm/vmm_vm.c
200
(void)vcpu_set_state_locked(vcpu, VCPU_FROZEN,
sys/dev/vmm/vmm_vm.c
209
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
210
(void)vm_rendezvous(vcpu);
sys/dev/vmm/vmm_vm.c
211
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
213
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
225
vcpu = vm_vcpu(vm, i);
sys/dev/vmm/vmm_vm.c
226
if (vcpu == NULL)
sys/dev/vmm/vmm_vm.c
228
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
229
while (vcpu->state != VCPU_IDLE) {
sys/dev/vmm/vmm_vm.c
231
vcpu_wait_idle(vcpu);
sys/dev/vmm/vmm_vm.c
232
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
236
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
238
error = vcpu_set_state_locked(vcpu, newstate, true);
sys/dev/vmm/vmm_vm.c
239
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
243
(void)vcpu_set_state(vcpu, VCPU_IDLE, false);
sys/dev/vmm/vmm_vm.c
254
vcpu_set_state(struct vcpu *vcpu, enum vcpu_state newstate, bool from_idle)
sys/dev/vmm/vmm_vm.c
258
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
259
error = vcpu_set_state_locked(vcpu, newstate, from_idle);
sys/dev/vmm/vmm_vm.c
260
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
266
vcpu_get_state(struct vcpu *vcpu, int *hostcpu)
sys/dev/vmm/vmm_vm.c
270
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
271
state = vcpu->state;
sys/dev/vmm/vmm_vm.c
273
*hostcpu = vcpu->hostcpu;
sys/dev/vmm/vmm_vm.c
274
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
287
vcpu_notify_event_locked(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
291
hostcpu = vcpu->hostcpu;
sys/dev/vmm/vmm_vm.c
292
if (vcpu->state == VCPU_RUNNING) {
sys/dev/vmm/vmm_vm.c
306
"with hostcpu %d", vcpu->state, hostcpu));
sys/dev/vmm/vmm_vm.c
307
if (vcpu->state == VCPU_SLEEPING)
sys/dev/vmm/vmm_vm.c
308
wakeup_one(vcpu);
sys/dev/vmm/vmm_vm.c
31
vm_rendezvous(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
313
vcpu_notify_event(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
315
vcpu_lock(vcpu);
sys/dev/vmm/vmm_vm.c
316
vcpu_notify_event_locked(vcpu);
sys/dev/vmm/vmm_vm.c
317
vcpu_unlock(vcpu);
sys/dev/vmm/vmm_vm.c
321
vcpu_debugged(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
323
return (CPU_ISSET(vcpu->vcpuid, &vcpu->vm->debug_cpus));
sys/dev/vmm/vmm_vm.c
33
struct vm *vm = vcpu->vm;
sys/dev/vmm/vmm_vm.c
36
mtx_assert(&vcpu->vm->rendezvous_mtx, MA_OWNED);
sys/dev/vmm/vmm_vm.c
37
KASSERT(vcpu->vm->rendezvous_func != NULL,
sys/dev/vmm/vmm_vm.c
416
vm_activate_cpu(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
418
struct vm *vm = vcpu->vm;
sys/dev/vmm/vmm_vm.c
420
if (CPU_ISSET(vcpu->vcpuid, &vm->active_cpus))
sys/dev/vmm/vmm_vm.c
423
CPU_SET_ATOMIC(vcpu->vcpuid, &vm->active_cpus);
sys/dev/vmm/vmm_vm.c
428
vm_suspend_cpu(struct vm *vm, struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
430
if (vcpu == NULL) {
sys/dev/vmm/vmm_vm.c
437
if (!CPU_ISSET(vcpu->vcpuid, &vm->active_cpus))
sys/dev/vmm/vmm_vm.c
44
vcpuid = vcpu->vcpuid;
sys/dev/vmm/vmm_vm.c
440
CPU_SET_ATOMIC(vcpu->vcpuid, &vm->debug_cpus);
sys/dev/vmm/vmm_vm.c
441
vcpu_notify_event(vcpu);
sys/dev/vmm/vmm_vm.c
447
vm_resume_cpu(struct vm *vm, struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
449
if (vcpu == NULL) {
sys/dev/vmm/vmm_vm.c
452
if (!CPU_ISSET(vcpu->vcpuid, &vm->debug_cpus))
sys/dev/vmm/vmm_vm.c
455
CPU_CLR_ATOMIC(vcpu->vcpuid, &vm->debug_cpus);
sys/dev/vmm/vmm_vm.c
47
(*vm->rendezvous_func)(vcpu, vm->rendezvous_arg);
sys/dev/vmm/vmm_vm.c
60
vm_handle_rendezvous(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
66
vm = vcpu->vm;
sys/dev/vmm/vmm_vm.c
70
if (vm_rendezvous(vcpu))
sys/dev/vmm/vmm_vm.c
90
vcpu_wait_idle(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.c
92
KASSERT(vcpu->state != VCPU_IDLE, ("vcpu already idle"));
sys/dev/vmm/vmm_vm.c
94
vcpu->reqidle = 1;
sys/dev/vmm/vmm_vm.c
95
vcpu_notify_event_locked(vcpu);
sys/dev/vmm/vmm_vm.c
96
msleep_spin(&vcpu->state, &vcpu->mtx, "vmstat", hz);
sys/dev/vmm/vmm_vm.h
100
typedef void (*vm_rendezvous_func_t)(struct vcpu *vcpu, void *arg);
sys/dev/vmm/vmm_vm.h
101
int vm_handle_rendezvous(struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
114
int vm_smp_rendezvous(struct vcpu *vcpu, cpuset_t dest,
sys/dev/vmm/vmm_vm.h
130
struct vcpu **vcpu; /* (o) guest vcpus */
sys/dev/vmm/vmm_vm.h
159
struct vcpu *vm_alloc_vcpu(struct vm *vm, int vcpuid);
sys/dev/vmm/vmm_vm.h
169
int vm_activate_cpu(struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
170
int vm_suspend_cpu(struct vm *vm, struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
171
int vm_resume_cpu(struct vm *vm, struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
19
struct vcpu;
sys/dev/vmm/vmm_vm.h
195
static inline struct vcpu *
sys/dev/vmm/vmm_vm.h
198
return (vm->vcpu[vcpuid]);
sys/dev/vmm/vmm_vm.h
208
vcpu_rendezvous_pending(struct vcpu *vcpu, struct vm_eventinfo *info)
sys/dev/vmm/vmm_vm.h
217
return (CPU_ISSET(vcpu_vcpuid(vcpu), info->rptr));
sys/dev/vmm/vmm_vm.h
56
int vcpu_set_state(struct vcpu *vcpu, enum vcpu_state state, bool from_idle);
sys/dev/vmm/vmm_vm.h
57
int vcpu_set_state_locked(struct vcpu *vcpu, enum vcpu_state newstate,
sys/dev/vmm/vmm_vm.h
60
enum vcpu_state vcpu_get_state(struct vcpu *vcpu, int *hostcpu);
sys/dev/vmm/vmm_vm.h
61
void vcpu_notify_event(struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
62
void vcpu_notify_event_locked(struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
63
int vcpu_debugged(struct vcpu *vcpu);
sys/dev/vmm/vmm_vm.h
66
vcpu_stats(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.h
68
return (vcpu->stats);
sys/dev/vmm/vmm_vm.h
72
vcpu_vm(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.h
74
return (vcpu->vm);
sys/dev/vmm/vmm_vm.h
78
vcpu_vcpuid(struct vcpu *vcpu)
sys/dev/vmm/vmm_vm.h
80
return (vcpu->vcpuid);
sys/dev/vmm/vmm_vm.h
84
vcpu_is_running(struct vcpu *vcpu, int *hostcpu)
sys/dev/vmm/vmm_vm.h
86
return (vcpu_get_state(vcpu, hostcpu) == VCPU_RUNNING);
sys/dev/vmm/vmm_vm.h
91
vcpu_should_yield(struct vcpu *vcpu)
sys/dev/xen/bus/xen_intr.c
517
struct evtchn_bind_ipi bind_ipi = { .vcpu = vcpu_id };
sys/dev/xen/bus/xen_intr.c
537
.vcpu = vcpu_id };
sys/dev/xen/bus/xen_intr.c
689
bind_vcpu.vcpu = vcpu_id;
sys/dev/xen/bus/xen_intr.c
863
struct evtchn_bind_virq bind_virq = { .virq = virq, .vcpu = vcpu_id };
sys/dev/xen/bus/xen_intr.c
923
struct evtchn_bind_ipi bind_ipi = { .vcpu = vcpu_id };
sys/dev/xen/timer/xen_timer.c
157
xen_fetch_vcpu_time(struct vcpu_info *vcpu)
sys/dev/xen/timer/xen_timer.c
161
time = (struct pvclock_vcpu_time_info *) &vcpu->time;
sys/dev/xen/timer/xen_timer.c
284
xentimer_vcpu_start_timer(int vcpu, uint64_t next_time)
sys/dev/xen/timer/xen_timer.c
291
return (HYPERVISOR_vcpu_op(VCPUOP_set_singleshot_timer, vcpu, &single));
sys/dev/xen/timer/xen_timer.c
295
xentimer_vcpu_stop_timer(int vcpu)
sys/dev/xen/timer/xen_timer.c
298
return (HYPERVISOR_vcpu_op(VCPUOP_stop_singleshot_timer, vcpu, NULL));
sys/dev/xen/timer/xen_timer.c
321
struct vcpu_info *vcpu = DPCPU_GET(vcpu_info);
sys/dev/xen/timer/xen_timer.c
334
next_time = xen_fetch_vcpu_time(vcpu) + first_in_ns;
sys/dev/xen/timer/xen_timer.c
520
struct vcpu_info *vcpu = &HYPERVISOR_shared_info->vcpu_info[0];
sys/dev/xen/timer/xen_timer.c
524
end_ns = xen_fetch_vcpu_time(vcpu);
sys/dev/xen/timer/xen_timer.c
528
current = xen_fetch_vcpu_time(vcpu);
sys/riscv/include/vmm.h
146
DECLARE_VMMOPS_FUNC(void *, vcpu_init, (void *vmi, struct vcpu *vcpu,
sys/riscv/include/vmm.h
158
int vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval);
sys/riscv/include/vmm.h
159
int vm_set_register(struct vcpu *vcpu, int reg, uint64_t val);
sys/riscv/include/vmm.h
160
int vm_run(struct vcpu *vcpu);
sys/riscv/include/vmm.h
162
void *vcpu_get_cookie(struct vcpu *vcpu);
sys/riscv/include/vmm.h
163
int vm_get_capability(struct vcpu *vcpu, int type, int *val);
sys/riscv/include/vmm.h
164
int vm_set_capability(struct vcpu *vcpu, int type, int val);
sys/riscv/include/vmm.h
165
int vm_inject_exception(struct vcpu *vcpu, uint64_t scause);
sys/riscv/include/vmm.h
171
struct vm_exit *vm_exitinfo(struct vcpu *vcpu);
sys/riscv/include/vmm.h
172
void vm_exit_suspended(struct vcpu *vcpu, uint64_t pc);
sys/riscv/include/vmm.h
173
void vm_exit_debug(struct vcpu *vcpu, uint64_t pc);
sys/riscv/include/vmm.h
174
void vm_exit_astpending(struct vcpu *vcpu, uint64_t pc);
sys/riscv/include/vmm.h
45
struct vcpu;
sys/riscv/include/vmm_instruction_emul.h
32
struct vcpu;
sys/riscv/include/vmm_instruction_emul.h
41
typedef int (*mem_region_read_t)(struct vcpu *vcpu, uint64_t gpa,
sys/riscv/include/vmm_instruction_emul.h
43
typedef int (*mem_region_write_t)(struct vcpu *vcpu, uint64_t gpa,
sys/riscv/include/vmm_instruction_emul.h
49
typedef int (*reg_read_t)(struct vcpu *vcpu, uint64_t *rval, void *arg);
sys/riscv/include/vmm_instruction_emul.h
50
typedef int (*reg_write_t)(struct vcpu *vcpu, uint64_t wval, void *arg);
sys/riscv/include/vmm_instruction_emul.h
63
int vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/riscv/include/vmm_instruction_emul.h
78
int vmm_emulate_register(struct vcpu *vcpu, struct vre *vre, reg_read_t regread,
sys/riscv/vmm/riscv.h
130
bool vmm_sbi_ecall(struct vcpu *);
sys/riscv/vmm/riscv.h
93
struct vcpu *vcpu;
sys/riscv/vmm/vmm.c
103
static struct vcpu *
sys/riscv/vmm/vmm.c
106
struct vcpu *vcpu;
sys/riscv/vmm/vmm.c
111
vcpu = malloc(sizeof(*vcpu), M_VMM, M_WAITOK | M_ZERO);
sys/riscv/vmm/vmm.c
112
vcpu_lock_init(vcpu);
sys/riscv/vmm/vmm.c
113
vcpu->state = VCPU_IDLE;
sys/riscv/vmm/vmm.c
114
vcpu->hostcpu = NOCPU;
sys/riscv/vmm/vmm.c
115
vcpu->vcpuid = vcpu_id;
sys/riscv/vmm/vmm.c
116
vcpu->vm = vm;
sys/riscv/vmm/vmm.c
117
vcpu->guestfpu = fpu_save_area_alloc();
sys/riscv/vmm/vmm.c
118
vcpu->stats = vmm_stat_alloc();
sys/riscv/vmm/vmm.c
119
return (vcpu);
sys/riscv/vmm/vmm.c
123
vcpu_init(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
125
vcpu->cookie = vmmops_vcpu_init(vcpu->vm->cookie, vcpu, vcpu->vcpuid);
sys/riscv/vmm/vmm.c
126
MPASS(vcpu->cookie != NULL);
sys/riscv/vmm/vmm.c
127
fpu_save_area_reset(vcpu->guestfpu);
sys/riscv/vmm/vmm.c
128
vmm_stat_init(vcpu->stats);
sys/riscv/vmm/vmm.c
132
vm_exitinfo(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
134
return (&vcpu->exitinfo);
sys/riscv/vmm/vmm.c
167
if (vm->vcpu[i] != NULL)
sys/riscv/vmm/vmm.c
168
vcpu_init(vm->vcpu[i]);
sys/riscv/vmm/vmm.c
173
struct vcpu *
sys/riscv/vmm/vmm.c
176
struct vcpu *vcpu;
sys/riscv/vmm/vmm.c
181
vcpu = (struct vcpu *)
sys/riscv/vmm/vmm.c
182
atomic_load_acq_ptr((uintptr_t *)&vm->vcpu[vcpuid]);
sys/riscv/vmm/vmm.c
183
if (__predict_true(vcpu != NULL))
sys/riscv/vmm/vmm.c
184
return (vcpu);
sys/riscv/vmm/vmm.c
187
vcpu = vm->vcpu[vcpuid];
sys/riscv/vmm/vmm.c
188
if (vcpu == NULL && !vm->dying) {
sys/riscv/vmm/vmm.c
189
vcpu = vcpu_alloc(vm, vcpuid);
sys/riscv/vmm/vmm.c
190
vcpu_init(vcpu);
sys/riscv/vmm/vmm.c
196
atomic_store_rel_ptr((uintptr_t *)&vm->vcpu[vcpuid],
sys/riscv/vmm/vmm.c
197
(uintptr_t)vcpu);
sys/riscv/vmm/vmm.c
200
return (vcpu);
sys/riscv/vmm/vmm.c
224
vm->vcpu = malloc(sizeof(*vm->vcpu) * vm->maxcpus, M_VMM,
sys/riscv/vmm/vmm.c
246
if (vm->vcpu[i] != NULL)
sys/riscv/vmm/vmm.c
247
vcpu_cleanup(vm->vcpu[i], destroy);
sys/riscv/vmm/vmm.c
256
free(vm->vcpu, M_VMM);
sys/riscv/vmm/vmm.c
276
vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
sys/riscv/vmm/vmm.c
279
return (vmmops_gla2gpa(vcpu->cookie, paging, gla, prot, gpa, is_fault));
sys/riscv/vmm/vmm.c
321
vm_handle_inst_emul(struct vcpu *vcpu, bool *retu)
sys/riscv/vmm/vmm.c
332
vm = vcpu->vm;
sys/riscv/vmm/vmm.c
337
vme = &vcpu->exitinfo;
sys/riscv/vmm/vmm.c
354
error = vmm_emulate_instruction(vcpu, fault_ipa, vie, paging,
sys/riscv/vmm/vmm.c
364
vm_exit_suspended(struct vcpu *vcpu, uint64_t pc)
sys/riscv/vmm/vmm.c
366
struct vm *vm = vcpu->vm;
sys/riscv/vmm/vmm.c
372
vmexit = vm_exitinfo(vcpu);
sys/riscv/vmm/vmm.c
380
vm_exit_debug(struct vcpu *vcpu, uint64_t pc)
sys/riscv/vmm/vmm.c
384
vmexit = vm_exitinfo(vcpu);
sys/riscv/vmm/vmm.c
391
restore_guest_fpustate(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
402
fpe_restore(vcpu->guestfpu);
sys/riscv/vmm/vmm.c
412
save_guest_fpustate(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
417
fpe_store(vcpu->guestfpu);
sys/riscv/vmm/vmm.c
425
vcpu_require_state(struct vcpu *vcpu, enum vcpu_state newstate)
sys/riscv/vmm/vmm.c
429
if ((error = vcpu_set_state(vcpu, newstate, false)) != 0)
sys/riscv/vmm/vmm.c
434
vcpu_require_state_locked(struct vcpu *vcpu, enum vcpu_state newstate)
sys/riscv/vmm/vmm.c
438
if ((error = vcpu_set_state_locked(vcpu, newstate, false)) != 0)
sys/riscv/vmm/vmm.c
443
vm_get_capability(struct vcpu *vcpu, int type, int *retval)
sys/riscv/vmm/vmm.c
449
return (vmmops_getcap(vcpu->cookie, type, retval));
sys/riscv/vmm/vmm.c
453
vm_set_capability(struct vcpu *vcpu, int type, int val)
sys/riscv/vmm/vmm.c
459
return (vmmops_setcap(vcpu->cookie, type, val));
sys/riscv/vmm/vmm.c
463
vcpu_get_cookie(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
466
return (vcpu->cookie);
sys/riscv/vmm/vmm.c
470
vm_get_register(struct vcpu *vcpu, int reg, uint64_t *retval)
sys/riscv/vmm/vmm.c
475
return (vmmops_getreg(vcpu->cookie, reg, retval));
sys/riscv/vmm/vmm.c
479
vm_set_register(struct vcpu *vcpu, int reg, uint64_t val)
sys/riscv/vmm/vmm.c
485
error = vmmops_setreg(vcpu->cookie, reg, val);
sys/riscv/vmm/vmm.c
489
vcpu->nextpc = val;
sys/riscv/vmm/vmm.c
502
vm_inject_exception(struct vcpu *vcpu, uint64_t scause)
sys/riscv/vmm/vmm.c
505
return (vmmops_exception(vcpu->cookie, scause));
sys/riscv/vmm/vmm.c
538
vm_handle_wfi(struct vcpu *vcpu, struct vm_exit *vme, bool *retu)
sys/riscv/vmm/vmm.c
542
vm = vcpu->vm;
sys/riscv/vmm/vmm.c
543
vcpu_lock(vcpu);
sys/riscv/vmm/vmm.c
548
if (aplic_check_pending(vcpu->cookie))
sys/riscv/vmm/vmm.c
551
if (riscv_check_ipi(vcpu->cookie, false))
sys/riscv/vmm/vmm.c
554
if (riscv_check_interrupts_pending(vcpu->cookie))
sys/riscv/vmm/vmm.c
557
if (vcpu_should_yield(vcpu))
sys/riscv/vmm/vmm.c
560
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/riscv/vmm/vmm.c
565
msleep_spin(vcpu, &vcpu->mtx, "vmidle", hz);
sys/riscv/vmm/vmm.c
566
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/riscv/vmm/vmm.c
568
vcpu_unlock(vcpu);
sys/riscv/vmm/vmm.c
576
vm_handle_paging(struct vcpu *vcpu, bool *retu)
sys/riscv/vmm/vmm.c
585
vm = vcpu->vm;
sys/riscv/vmm/vmm.c
586
vme = &vcpu->exitinfo;
sys/riscv/vmm/vmm.c
623
vm_handle_suspend(struct vcpu *vcpu, bool *retu)
sys/riscv/vmm/vmm.c
625
struct vm *vm = vcpu->vm;
sys/riscv/vmm/vmm.c
632
CPU_SET_ATOMIC(vcpu->vcpuid, &vm->suspended_cpus);
sys/riscv/vmm/vmm.c
641
vcpu_lock(vcpu);
sys/riscv/vmm/vmm.c
646
vcpu_require_state_locked(vcpu, VCPU_SLEEPING);
sys/riscv/vmm/vmm.c
647
msleep_spin(vcpu, &vcpu->mtx, "vmsusp", hz);
sys/riscv/vmm/vmm.c
648
vcpu_require_state_locked(vcpu, VCPU_FROZEN);
sys/riscv/vmm/vmm.c
650
vcpu_unlock(vcpu);
sys/riscv/vmm/vmm.c
652
vcpu_lock(vcpu);
sys/riscv/vmm/vmm.c
655
vcpu_unlock(vcpu);
sys/riscv/vmm/vmm.c
671
vm_run(struct vcpu *vcpu)
sys/riscv/vmm/vmm.c
681
vm = vcpu->vm;
sys/riscv/vmm/vmm.c
685
vcpuid = vcpu->vcpuid;
sys/riscv/vmm/vmm.c
694
vme = &vcpu->exitinfo;
sys/riscv/vmm/vmm.c
701
restore_guest_fpustate(vcpu);
sys/riscv/vmm/vmm.c
703
vcpu_require_state(vcpu, VCPU_RUNNING);
sys/riscv/vmm/vmm.c
704
error = vmmops_run(vcpu->cookie, vcpu->nextpc, pmap, &evinfo);
sys/riscv/vmm/vmm.c
705
vcpu_require_state(vcpu, VCPU_FROZEN);
sys/riscv/vmm/vmm.c
707
save_guest_fpustate(vcpu);
sys/riscv/vmm/vmm.c
715
vcpu->nextpc = vme->pc + vme->inst_length;
sys/riscv/vmm/vmm.c
716
error = vm_handle_inst_emul(vcpu, &retu);
sys/riscv/vmm/vmm.c
719
vcpu->nextpc = vme->pc + vme->inst_length;
sys/riscv/vmm/vmm.c
720
error = vm_handle_wfi(vcpu, vme, &retu);
sys/riscv/vmm/vmm.c
724
vcpu->nextpc = vme->pc + vme->inst_length;
sys/riscv/vmm/vmm.c
728
vcpu->nextpc = vme->pc;
sys/riscv/vmm/vmm.c
729
error = vm_handle_paging(vcpu, &retu);
sys/riscv/vmm/vmm.c
732
vcpu->nextpc = vme->pc;
sys/riscv/vmm/vmm.c
737
vcpu->nextpc = vme->pc;
sys/riscv/vmm/vmm.c
738
error = vm_handle_suspend(vcpu, &retu);
sys/riscv/vmm/vmm.c
742
vcpu->nextpc = vme->pc;
sys/riscv/vmm/vmm.c
91
vcpu_cleanup(struct vcpu *vcpu, bool destroy)
sys/riscv/vmm/vmm.c
93
vmmops_vcpu_cleanup(vcpu->cookie);
sys/riscv/vmm/vmm.c
94
vcpu->cookie = NULL;
sys/riscv/vmm/vmm.c
96
vmm_stat_free(vcpu->stats);
sys/riscv/vmm/vmm.c
97
fpu_save_area_free(vcpu->guestfpu);
sys/riscv/vmm/vmm.c
98
vcpu_lock_destroy(vcpu);
sys/riscv/vmm/vmm.c
99
free(vcpu, M_VMM);
sys/riscv/vmm/vmm_aplic.c
327
mem_read(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t *rval, int size,
sys/riscv/vmm/vmm_aplic.c
337
hypctx = vcpu_get_cookie(vcpu);
sys/riscv/vmm/vmm_aplic.c
356
mem_write(struct vcpu *vcpu, uint64_t fault_ipa, uint64_t wval, int size,
sys/riscv/vmm/vmm_aplic.c
366
hypctx = vcpu_get_cookie(vcpu);
sys/riscv/vmm/vmm_dev_machdep.c
67
vmmdev_machdep_ioctl(struct vm *vm, struct vcpu *vcpu, u_long cmd, caddr_t data,
sys/riscv/vmm/vmm_dev_machdep.c
79
vme = vm_exitinfo(vcpu);
sys/riscv/vmm/vmm_dev_machdep.c
81
error = vm_run(vcpu);
sys/riscv/vmm/vmm_dev_machdep.c
92
error = vm_inject_exception(vcpu, vmexc->scause);
sys/riscv/vmm/vmm_dev_machdep.c
99
error = vm_gla2gpa_nofault(vcpu, &gg->paging, gg->gla,
sys/riscv/vmm/vmm_fence.c
149
struct vcpu *vcpu;
sys/riscv/vmm/vmm_fence.c
161
vcpu = vm_vcpu(vm, i);
sys/riscv/vmm/vmm_fence.c
162
hypctx = vcpu_get_cookie(vcpu);
sys/riscv/vmm/vmm_fence.c
199
if (vcpu_is_running(vcpu, &hostcpu))
sys/riscv/vmm/vmm_instruction_emul.c
101
error = vm_get_register(vcpu, vre->reg, &val);
sys/riscv/vmm/vmm_instruction_emul.c
104
error = regwrite(vcpu, val, regarg);
sys/riscv/vmm/vmm_instruction_emul.c
60
vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
sys/riscv/vmm/vmm_instruction_emul.c
68
error = memread(vcpu, gpa, &val, vie->access_size, memarg);
sys/riscv/vmm/vmm_instruction_emul.c
73
error = vm_set_register(vcpu, vie->reg, val);
sys/riscv/vmm/vmm_instruction_emul.c
75
error = vm_get_register(vcpu, vie->reg, &val);
sys/riscv/vmm/vmm_instruction_emul.c
81
error = memwrite(vcpu, gpa, val, vie->access_size, memarg);
sys/riscv/vmm/vmm_instruction_emul.c
89
vmm_emulate_register(struct vcpu *vcpu, struct vre *vre, reg_read_t regread,
sys/riscv/vmm/vmm_instruction_emul.c
96
error = regread(vcpu, &val, regarg);
sys/riscv/vmm/vmm_instruction_emul.c
99
error = vm_set_register(vcpu, vre->reg, val);
sys/riscv/vmm/vmm_riscv.c
101
return (DPCPU_GET(vcpu));
sys/riscv/vmm/vmm_riscv.c
198
vmmops_vcpu_init(void *vmi, struct vcpu *vcpu1, int vcpuid)
sys/riscv/vmm/vmm_riscv.c
215
hypctx->vcpu = vcpu1;
sys/riscv/vmm/vmm_riscv.c
464
vmm_stat_incr(hypctx->vcpu, VMEXIT_IRQ, 1);
sys/riscv/vmm/vmm_riscv.c
475
if (vm_mem_allocated(hypctx->vcpu, gpa)) {
sys/riscv/vmm/vmm_riscv.c
495
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNHANDLED, 1);
sys/riscv/vmm/vmm_riscv.c
500
handled = vmm_sbi_ecall(hypctx->vcpu);
sys/riscv/vmm/vmm_riscv.c
517
vmm_stat_incr(hypctx->vcpu, VMEXIT_UNHANDLED, 1);
sys/riscv/vmm/vmm_riscv.c
607
struct vcpu *vcpu;
sys/riscv/vmm/vmm_riscv.c
613
vcpu = hypctx->vcpu;
sys/riscv/vmm/vmm_riscv.c
614
vme = vm_exitinfo(vcpu);
sys/riscv/vmm/vmm_riscv.c
654
vm_exit_suspended(vcpu, pc);
sys/riscv/vmm/vmm_riscv.c
658
if (vcpu_debugged(vcpu)) {
sys/riscv/vmm/vmm_riscv.c
660
vm_exit_debug(vcpu, pc);
sys/riscv/vmm/vmm_riscv.c
707
vmm_stat_incr(vcpu, VMEXIT_COUNT, 1);
sys/riscv/vmm/vmm_riscv.c
78
DPCPU_DEFINE_STATIC(struct hypctx *, vcpu);
sys/riscv/vmm/vmm_riscv.c
863
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/riscv/vmm/vmm_riscv.c
866
vcpu_vcpuid(hypctx->vcpu));
sys/riscv/vmm/vmm_riscv.c
891
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/riscv/vmm/vmm_riscv.c
894
vcpu_vcpuid(hypctx->vcpu));
sys/riscv/vmm/vmm_riscv.c
913
running = vcpu_is_running(hypctx->vcpu, &hostcpu);
sys/riscv/vmm/vmm_riscv.c
916
vcpu_vcpuid(hypctx->vcpu));
sys/riscv/vmm/vmm_riscv.c
94
DPCPU_SET(vcpu, hypctx);
sys/riscv/vmm/vmm_sbi.c
114
vmm_sbi_handle_time(struct vcpu *vcpu, struct hypctx *hypctx)
sys/riscv/vmm/vmm_sbi.c
134
vmm_sbi_handle_ipi(struct vcpu *vcpu, struct hypctx *hypctx)
sys/riscv/vmm/vmm_sbi.c
182
vmm_sbi_ecall(struct vcpu *vcpu)
sys/riscv/vmm/vmm_sbi.c
203
error = vmm_sbi_handle_rfnc(vcpu, hypctx);
sys/riscv/vmm/vmm_sbi.c
206
error = vmm_sbi_handle_time(vcpu, hypctx);
sys/riscv/vmm/vmm_sbi.c
209
error = vmm_sbi_handle_ipi(vcpu, hypctx);
sys/riscv/vmm/vmm_sbi.c
45
vmm_sbi_handle_rfnc(struct vcpu *vcpu, struct hypctx *hypctx)
sys/riscv/vmm/vmm_sbi.c
87
vcpu = vm_vcpu(hyp->vm, i);
sys/riscv/vmm/vmm_sbi.c
88
if (vcpu == NULL)
sys/x86/xen/hvm.c
312
set_percpu_callback(unsigned int vcpu)
sys/x86/xen/hvm.c
317
vec.vcpu = vcpu;
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
196
bhyve_init_vcpu(struct vcpu *vcpu __unused)
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
201
bhyve_start_vcpu(struct vcpu *vcpu, bool bsp __unused)
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
203
fbsdrun_addcpu(vcpu_id(vcpu));
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
258
mmio_uart_mem_handler(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
324
mmio_rtc_mem_handler(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
368
bhyve_init_platform(struct vmctx *ctx, struct vcpu *bsp)
usr.sbin/bhyve/aarch64/bhyverun_machdep.c
435
bhyve_init_platform_late(struct vmctx *ctx, struct vcpu *bsp __unused)
usr.sbin/bhyve/aarch64/mem_aarch64.c
43
mmio_handle_non_backed_mem(struct vcpu *vcpu, uint64_t paddr,
usr.sbin/bhyve/aarch64/mem_aarch64.c
49
if (vm_get_register(vcpu, VM_REG_GUEST_CPSR, &spsr) == -1)
usr.sbin/bhyve/aarch64/mem_aarch64.c
56
err = vm_inject_exception(vcpu, esr, paddr);
usr.sbin/bhyve/aarch64/vmexit.c
105
vmexit_suspend(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/aarch64/vmexit.c
109
int vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/aarch64/vmexit.c
135
vmexit_debug(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/aarch64/vmexit.c
138
gdb_cpu_suspend(vcpu);
usr.sbin/bhyve/aarch64/vmexit.c
148
vmexit_bogus(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/aarch64/vmexit.c
176
for (int vcpu = 0; vcpu < guest_ncpus; vcpu++) {
usr.sbin/bhyve/aarch64/vmexit.c
177
if ((cpu_to_mpidr[vcpu] & mask) == (target_affinity & mask) &&
usr.sbin/bhyve/aarch64/vmexit.c
178
CPU_ISSET(vcpu, &running_cpumask)) {
usr.sbin/bhyve/aarch64/vmexit.c
189
vmexit_smccc(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/aarch64/vmexit.c
191
struct vcpu *newvcpu;
usr.sbin/bhyve/aarch64/vmexit.c
209
CPU_CLR_ATOMIC(vcpu_id(vcpu), &running_cpumask);
usr.sbin/bhyve/aarch64/vmexit.c
210
vm_suspend_cpu(vcpu);
usr.sbin/bhyve/aarch64/vmexit.c
263
error = vm_set_register(vcpu, VM_REG_GUEST_X0, smccc_rv);
usr.sbin/bhyve/aarch64/vmexit.c
270
vmexit_hyp(struct vmctx *ctx __unused, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/aarch64/vmexit.c
273
if (vm_inject_exception(vcpu,
usr.sbin/bhyve/aarch64/vmexit.c
282
vmexit_brk(struct vmctx *ctx __unused, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/aarch64/vmexit.c
284
gdb_cpu_breakpoint(vcpu, vmrun->vm_exit);
usr.sbin/bhyve/aarch64/vmexit.c
289
vmexit_ss(struct vmctx *ctx __unused, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/aarch64/vmexit.c
291
gdb_cpu_debug(vcpu, vmrun->vm_exit);
usr.sbin/bhyve/aarch64/vmexit.c
61
vmexit_inst_emul(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/aarch64/vmexit.c
71
err = emulate_mem(vcpu, vme->u.inst_emul.gpa, vie,
usr.sbin/bhyve/aarch64/vmexit.c
90
vmexit_reg_emul(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/bhyverun_machdep.c
275
bhyve_init_vcpu(struct vcpu *vcpu)
usr.sbin/bhyve/amd64/bhyverun_machdep.c
280
err = vm_get_capability(vcpu, VM_CAP_HALT_EXIT, &tmp);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
285
vm_set_capability(vcpu, VM_CAP_HALT_EXIT, 1);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
292
err = vm_get_capability(vcpu, VM_CAP_PAUSE_EXIT, &tmp);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
297
vm_set_capability(vcpu, VM_CAP_PAUSE_EXIT, 1);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
301
err = vm_set_x2apic_state(vcpu, X2APIC_ENABLED);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
303
err = vm_set_x2apic_state(vcpu, X2APIC_DISABLED);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
310
vm_set_capability(vcpu, VM_CAP_ENABLE_INVPCID, 1);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
312
err = vm_set_capability(vcpu, VM_CAP_IPI_EXIT, 1);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
317
bhyve_start_vcpu(struct vcpu *vcpu, bool bsp)
usr.sbin/bhyve/amd64/bhyverun_machdep.c
323
error = vm_set_capability(vcpu,
usr.sbin/bhyve/amd64/bhyverun_machdep.c
329
error = vcpu_reset(vcpu);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
333
bhyve_init_vcpu(vcpu);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
340
error = vm_set_capability(vcpu, VM_CAP_UNRESTRICTED_GUEST, 1);
usr.sbin/bhyve/amd64/bhyverun_machdep.c
344
fbsdrun_addcpu(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/bhyverun_machdep.c
348
bhyve_init_platform(struct vmctx *ctx, struct vcpu *bsp __unused)
usr.sbin/bhyve/amd64/bhyverun_machdep.c
373
bhyve_init_platform_late(struct vmctx *ctx, struct vcpu *bsp __unused)
usr.sbin/bhyve/amd64/inout.c
101
emulate_inout(struct vmctx *ctx, struct vcpu *vcpu, struct vm_exit *vmexit)
usr.sbin/bhyve/amd64/inout.c
159
vm_inject_gp(vcpu);
usr.sbin/bhyve/amd64/inout.c
163
error = vm_copy_setup(vcpu, &vis->paging, gla,
usr.sbin/bhyve/amd64/inout.c
175
vm_inject_ac(vcpu, 0);
usr.sbin/bhyve/amd64/inout.c
201
error = vie_update_register(vcpu, idxreg, index, addrsize);
usr.sbin/bhyve/amd64/inout.c
209
error = vie_update_register(vcpu, VM_REG_GUEST_RCX,
usr.sbin/bhyve/amd64/inout.c
216
error = vm_restart_instruction(vcpu);
usr.sbin/bhyve/amd64/inout.c
226
error = vm_set_register(vcpu, VM_REG_GUEST_RAX,
usr.sbin/bhyve/amd64/inout.h
34
struct vcpu;
usr.sbin/bhyve/amd64/inout.h
74
int emulate_inout(struct vmctx *ctx, struct vcpu *vcpu, struct vm_exit *vmexit);
usr.sbin/bhyve/amd64/kernemu_dev.c
47
apic_handler(struct vcpu *vcpu, int dir, uint64_t addr, int size,
usr.sbin/bhyve/amd64/kernemu_dev.c
50
if (vm_readwrite_kernemu_device(vcpu, addr, (dir == MEM_F_WRITE),
usr.sbin/bhyve/amd64/mem_x86.c
42
no_mem_handler(struct vcpu *vcpu __unused, int dir, uint64_t addr __unused,
usr.sbin/bhyve/amd64/mem_x86.c
75
mmio_handle_non_backed_mem(struct vcpu *vcpu __unused, uint64_t paddr,
usr.sbin/bhyve/amd64/spinup_ap.c
43
spinup_ap_realmode(struct vcpu *newcpu, uint64_t rip)
usr.sbin/bhyve/amd64/spinup_ap.c
74
spinup_ap(struct vcpu *newcpu, uint64_t rip)
usr.sbin/bhyve/amd64/spinup_ap.h
32
void spinup_ap(struct vcpu *newcpu, uint64_t rip);
usr.sbin/bhyve/amd64/task_switch.c
100
GETREG(struct vcpu *vcpu, int reg)
usr.sbin/bhyve/amd64/task_switch.c
105
error = vm_get_register(vcpu, reg, &val);
usr.sbin/bhyve/amd64/task_switch.c
111
SETREG(struct vcpu *vcpu, int reg, uint64_t val)
usr.sbin/bhyve/amd64/task_switch.c
115
error = vm_set_register(vcpu, reg, val);
usr.sbin/bhyve/amd64/task_switch.c
151
sel_exception(struct vcpu *vcpu, int vector, uint16_t sel, int ext)
usr.sbin/bhyve/amd64/task_switch.c
165
vm_inject_fault(vcpu, vector, 1, sel);
usr.sbin/bhyve/amd64/task_switch.c
173
desc_table_limit_check(struct vcpu *vcpu, uint16_t sel)
usr.sbin/bhyve/amd64/task_switch.c
180
error = vm_get_desc(vcpu, reg, &base, &limit, &access);
usr.sbin/bhyve/amd64/task_switch.c
203
desc_table_rw(struct vcpu *vcpu, struct vm_guest_paging *paging,
usr.sbin/bhyve/amd64/task_switch.c
213
error = vm_get_desc(vcpu, reg, &base, &limit, &access);
usr.sbin/bhyve/amd64/task_switch.c
217
error = vm_copy_setup(vcpu, paging, base + SEL_START(sel),
usr.sbin/bhyve/amd64/task_switch.c
231
desc_table_read(struct vcpu *vcpu, struct vm_guest_paging *paging,
usr.sbin/bhyve/amd64/task_switch.c
234
return (desc_table_rw(vcpu, paging, sel, desc, true, faultptr));
usr.sbin/bhyve/amd64/task_switch.c
238
desc_table_write(struct vcpu *vcpu, struct vm_guest_paging *paging,
usr.sbin/bhyve/amd64/task_switch.c
241
return (desc_table_rw(vcpu, paging, sel, desc, false, faultptr));
usr.sbin/bhyve/amd64/task_switch.c
252
read_tss_descriptor(struct vcpu *vcpu, struct vm_task_switch *ts,
usr.sbin/bhyve/amd64/task_switch.c
262
if (desc_table_limit_check(vcpu, sel)) {
usr.sbin/bhyve/amd64/task_switch.c
264
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
266
sel_exception(vcpu, IDT_GP, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
272
error = desc_table_read(vcpu, &sup_paging, sel, desc, faultptr);
usr.sbin/bhyve/amd64/task_switch.c
308
validate_seg_desc(struct vcpu *vcpu, struct vm_task_switch *ts,
usr.sbin/bhyve/amd64/task_switch.c
340
sel = GETREG(vcpu, segment);
usr.sbin/bhyve/amd64/task_switch.c
344
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
349
if (desc_table_limit_check(vcpu, sel)) {
usr.sbin/bhyve/amd64/task_switch.c
350
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
358
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
370
error = desc_table_read(vcpu, &sup_paging, sel, &usd, faultptr);
usr.sbin/bhyve/amd64/task_switch.c
379
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
391
sel_exception(vcpu, idtvec, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
395
cs = GETREG(vcpu, VM_REG_GUEST_CS);
usr.sbin/bhyve/amd64/task_switch.c
401
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
409
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
425
sel_exception(vcpu, IDT_TS, sel, ts->ext);
usr.sbin/bhyve/amd64/task_switch.c
434
tss32_save(struct vcpu *vcpu, struct vm_task_switch *task_switch,
usr.sbin/bhyve/amd64/task_switch.c
439
tss->tss_eax = GETREG(vcpu, VM_REG_GUEST_RAX);
usr.sbin/bhyve/amd64/task_switch.c
440
tss->tss_ecx = GETREG(vcpu, VM_REG_GUEST_RCX);
usr.sbin/bhyve/amd64/task_switch.c
441
tss->tss_edx = GETREG(vcpu, VM_REG_GUEST_RDX);
usr.sbin/bhyve/amd64/task_switch.c
442
tss->tss_ebx = GETREG(vcpu, VM_REG_GUEST_RBX);
usr.sbin/bhyve/amd64/task_switch.c
443
tss->tss_esp = GETREG(vcpu, VM_REG_GUEST_RSP);
usr.sbin/bhyve/amd64/task_switch.c
444
tss->tss_ebp = GETREG(vcpu, VM_REG_GUEST_RBP);
usr.sbin/bhyve/amd64/task_switch.c
445
tss->tss_esi = GETREG(vcpu, VM_REG_GUEST_RSI);
usr.sbin/bhyve/amd64/task_switch.c
446
tss->tss_edi = GETREG(vcpu, VM_REG_GUEST_RDI);
usr.sbin/bhyve/amd64/task_switch.c
449
tss->tss_es = GETREG(vcpu, VM_REG_GUEST_ES);
usr.sbin/bhyve/amd64/task_switch.c
450
tss->tss_cs = GETREG(vcpu, VM_REG_GUEST_CS);
usr.sbin/bhyve/amd64/task_switch.c
451
tss->tss_ss = GETREG(vcpu, VM_REG_GUEST_SS);
usr.sbin/bhyve/amd64/task_switch.c
452
tss->tss_ds = GETREG(vcpu, VM_REG_GUEST_DS);
usr.sbin/bhyve/amd64/task_switch.c
453
tss->tss_fs = GETREG(vcpu, VM_REG_GUEST_FS);
usr.sbin/bhyve/amd64/task_switch.c
454
tss->tss_gs = GETREG(vcpu, VM_REG_GUEST_GS);
usr.sbin/bhyve/amd64/task_switch.c
457
tss->tss_eflags = GETREG(vcpu, VM_REG_GUEST_RFLAGS);
usr.sbin/bhyve/amd64/task_switch.c
467
update_seg_desc(struct vcpu *vcpu, int reg, struct seg_desc *sd)
usr.sbin/bhyve/amd64/task_switch.c
471
error = vm_set_desc(vcpu, reg, sd->base, sd->limit, sd->access);
usr.sbin/bhyve/amd64/task_switch.c
479
tss32_restore(struct vmctx *ctx, struct vcpu *vcpu, struct vm_task_switch *ts,
usr.sbin/bhyve/amd64/task_switch.c
499
SETREG(vcpu, VM_REG_GUEST_LDTR, tss->tss_ldt);
usr.sbin/bhyve/amd64/task_switch.c
519
vm_inject_gp(vcpu);
usr.sbin/bhyve/amd64/task_switch.c
523
SETREG(vcpu, VM_REG_GUEST_PDPTE0, pdpte[0]);
usr.sbin/bhyve/amd64/task_switch.c
524
SETREG(vcpu, VM_REG_GUEST_PDPTE1, pdpte[1]);
usr.sbin/bhyve/amd64/task_switch.c
525
SETREG(vcpu, VM_REG_GUEST_PDPTE2, pdpte[2]);
usr.sbin/bhyve/amd64/task_switch.c
526
SETREG(vcpu, VM_REG_GUEST_PDPTE3, pdpte[3]);
usr.sbin/bhyve/amd64/task_switch.c
528
SETREG(vcpu, VM_REG_GUEST_CR3, tss->tss_cr3);
usr.sbin/bhyve/amd64/task_switch.c
533
SETREG(vcpu, VM_REG_GUEST_RFLAGS, eflags);
usr.sbin/bhyve/amd64/task_switch.c
534
SETREG(vcpu, VM_REG_GUEST_RIP, tss->tss_eip);
usr.sbin/bhyve/amd64/task_switch.c
537
SETREG(vcpu, VM_REG_GUEST_RAX, tss->tss_eax);
usr.sbin/bhyve/amd64/task_switch.c
538
SETREG(vcpu, VM_REG_GUEST_RCX, tss->tss_ecx);
usr.sbin/bhyve/amd64/task_switch.c
539
SETREG(vcpu, VM_REG_GUEST_RDX, tss->tss_edx);
usr.sbin/bhyve/amd64/task_switch.c
540
SETREG(vcpu, VM_REG_GUEST_RBX, tss->tss_ebx);
usr.sbin/bhyve/amd64/task_switch.c
541
SETREG(vcpu, VM_REG_GUEST_RSP, tss->tss_esp);
usr.sbin/bhyve/amd64/task_switch.c
542
SETREG(vcpu, VM_REG_GUEST_RBP, tss->tss_ebp);
usr.sbin/bhyve/amd64/task_switch.c
543
SETREG(vcpu, VM_REG_GUEST_RSI, tss->tss_esi);
usr.sbin/bhyve/amd64/task_switch.c
544
SETREG(vcpu, VM_REG_GUEST_RDI, tss->tss_edi);
usr.sbin/bhyve/amd64/task_switch.c
547
SETREG(vcpu, VM_REG_GUEST_ES, tss->tss_es);
usr.sbin/bhyve/amd64/task_switch.c
548
SETREG(vcpu, VM_REG_GUEST_CS, tss->tss_cs);
usr.sbin/bhyve/amd64/task_switch.c
549
SETREG(vcpu, VM_REG_GUEST_SS, tss->tss_ss);
usr.sbin/bhyve/amd64/task_switch.c
550
SETREG(vcpu, VM_REG_GUEST_DS, tss->tss_ds);
usr.sbin/bhyve/amd64/task_switch.c
551
SETREG(vcpu, VM_REG_GUEST_FS, tss->tss_fs);
usr.sbin/bhyve/amd64/task_switch.c
552
SETREG(vcpu, VM_REG_GUEST_GS, tss->tss_gs);
usr.sbin/bhyve/amd64/task_switch.c
562
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_LDTR, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
566
update_seg_desc(vcpu, VM_REG_GUEST_LDTR, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
577
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_CS, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
582
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_SS, &seg_desc2,
usr.sbin/bhyve/amd64/task_switch.c
586
update_seg_desc(vcpu, VM_REG_GUEST_CS, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
587
update_seg_desc(vcpu, VM_REG_GUEST_SS, &seg_desc2);
usr.sbin/bhyve/amd64/task_switch.c
590
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_DS, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
594
update_seg_desc(vcpu, VM_REG_GUEST_DS, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
596
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_ES, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
600
update_seg_desc(vcpu, VM_REG_GUEST_ES, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
602
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_FS, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
606
update_seg_desc(vcpu, VM_REG_GUEST_FS, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
608
error = validate_seg_desc(vcpu, ts, VM_REG_GUEST_GS, &seg_desc,
usr.sbin/bhyve/amd64/task_switch.c
612
update_seg_desc(vcpu, VM_REG_GUEST_GS, &seg_desc);
usr.sbin/bhyve/amd64/task_switch.c
623
push_errcode(struct vcpu *vcpu, struct vm_guest_paging *paging,
usr.sbin/bhyve/amd64/task_switch.c
635
cr0 = GETREG(vcpu, VM_REG_GUEST_CR0);
usr.sbin/bhyve/amd64/task_switch.c
636
rflags = GETREG(vcpu, VM_REG_GUEST_RFLAGS);
usr.sbin/bhyve/amd64/task_switch.c
637
stacksel = GETREG(vcpu, VM_REG_GUEST_SS);
usr.sbin/bhyve/amd64/task_switch.c
639
error = vm_get_desc(vcpu, VM_REG_GUEST_SS, &seg_desc.base,
usr.sbin/bhyve/amd64/task_switch.c
663
esp = GETREG(vcpu, VM_REG_GUEST_RSP);
usr.sbin/bhyve/amd64/task_switch.c
668
sel_exception(vcpu, IDT_SS, stacksel, 1);
usr.sbin/bhyve/amd64/task_switch.c
674
vm_inject_ac(vcpu, 1);
usr.sbin/bhyve/amd64/task_switch.c
679
error = vm_copy_setup(vcpu, paging, gla, bytes, PROT_WRITE,
usr.sbin/bhyve/amd64/task_switch.c
685
SETREG(vcpu, VM_REG_GUEST_RSP, esp);
usr.sbin/bhyve/amd64/task_switch.c
702
int vmexit_task_switch(struct vmctx *, struct vcpu *, struct vm_run *);
usr.sbin/bhyve/amd64/task_switch.c
705
vmexit_task_switch(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/task_switch.c
744
error = read_tss_descriptor(vcpu, task_switch, nt_sel, &nt_desc,
usr.sbin/bhyve/amd64/task_switch.c
754
sel_exception(vcpu, IDT_TS, nt_sel, ext);
usr.sbin/bhyve/amd64/task_switch.c
760
sel_exception(vcpu, IDT_NP, nt_sel, ext);
usr.sbin/bhyve/amd64/task_switch.c
777
sel_exception(vcpu, IDT_TS, nt_sel, ext);
usr.sbin/bhyve/amd64/task_switch.c
783
sel_exception(vcpu, IDT_TS, nt_sel, ext);
usr.sbin/bhyve/amd64/task_switch.c
792
sel_exception(vcpu, IDT_GP, nt_sel, ext);
usr.sbin/bhyve/amd64/task_switch.c
797
error = vm_copy_setup(vcpu, &sup_paging, nt.base, minlimit + 1,
usr.sbin/bhyve/amd64/task_switch.c
803
ot_sel = GETREG(vcpu, VM_REG_GUEST_TR);
usr.sbin/bhyve/amd64/task_switch.c
811
sel_exception(vcpu, IDT_TS, ot_sel, task_switch->ext);
usr.sbin/bhyve/amd64/task_switch.c
816
error = vm_get_desc(vcpu, VM_REG_GUEST_TR, &ot_base, &ot_lim,
usr.sbin/bhyve/amd64/task_switch.c
824
error = read_tss_descriptor(vcpu, task_switch, ot_sel, &ot_desc,
usr.sbin/bhyve/amd64/task_switch.c
829
error = vm_copy_setup(vcpu, &sup_paging, ot_base, minlimit + 1,
usr.sbin/bhyve/amd64/task_switch.c
840
error = desc_table_write(vcpu, &sup_paging, ot_sel,
usr.sbin/bhyve/amd64/task_switch.c
851
tss32_save(vcpu, task_switch, eip, &oldtss, ot_iov);
usr.sbin/bhyve/amd64/task_switch.c
859
error = desc_table_write(vcpu, &sup_paging, nt_sel,
usr.sbin/bhyve/amd64/task_switch.c
865
SETREG(vcpu, VM_REG_GUEST_TR, nt_sel);
usr.sbin/bhyve/amd64/task_switch.c
869
update_seg_desc(vcpu, VM_REG_GUEST_TR, &nt);
usr.sbin/bhyve/amd64/task_switch.c
872
cr0 = GETREG(vcpu, VM_REG_GUEST_CR0);
usr.sbin/bhyve/amd64/task_switch.c
873
SETREG(vcpu, VM_REG_GUEST_CR0, cr0 | CR0_TS);
usr.sbin/bhyve/amd64/task_switch.c
880
error = vm_set_register(vcpu, VM_REG_GUEST_RIP, newtss.tss_eip);
usr.sbin/bhyve/amd64/task_switch.c
884
error = tss32_restore(ctx, vcpu, task_switch, ot_sel, &newtss, nt_iov,
usr.sbin/bhyve/amd64/task_switch.c
896
error = push_errcode(vcpu, &task_switch->paging, nt_type,
usr.sbin/bhyve/amd64/task_switch.c
932
error = vm_set_intinfo(vcpu, 0);
usr.sbin/bhyve/amd64/vga.c
653
vga_mem_handler(struct vcpu *vcpu __unused, int dir, uint64_t addr, int size,
usr.sbin/bhyve/amd64/vmexit.c
108
error = emulate_rdmsr(vcpu, vme->u.msr.code, &val);
usr.sbin/bhyve/amd64/vmexit.c
113
vme->u.msr.code, vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
116
vm_inject_gp(vcpu);
usr.sbin/bhyve/amd64/vmexit.c
122
error = vm_set_register(vcpu, VM_REG_GUEST_RAX, eax);
usr.sbin/bhyve/amd64/vmexit.c
126
error = vm_set_register(vcpu, VM_REG_GUEST_RDX, edx);
usr.sbin/bhyve/amd64/vmexit.c
133
vmexit_wrmsr(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/vmexit.c
141
error = emulate_wrmsr(vcpu, vme->u.msr.code, vme->u.msr.wval);
usr.sbin/bhyve/amd64/vmexit.c
146
vme->u.msr.code, vme->u.msr.wval, vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
149
vm_inject_gp(vcpu);
usr.sbin/bhyve/amd64/vmexit.c
242
vmexit_vmx(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/vmexit.c
248
EPRINTLN("vm exit[%d]", vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
261
vm_get_register(vcpu,
usr.sbin/bhyve/amd64/vmexit.c
278
vmexit_svm(struct vmctx *ctx __unused, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/vmexit.c
284
EPRINTLN("vm exit[%d]", vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
295
vmexit_bogus(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/vmexit.c
304
vmexit_reqidle(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/vmexit.c
313
vmexit_hlt(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/vmexit.c
325
vmexit_pause(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/vmexit.c
332
vmexit_mtrap(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/vmexit.c
338
checkpoint_cpu_suspend(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
340
gdb_cpu_mtrap(vcpu);
usr.sbin/bhyve/amd64/vmexit.c
342
checkpoint_cpu_resume(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
349
vmexit_inst_emul(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/vmexit.c
372
if (vm_set_register(vcpu, VM_REG_GUEST_RIP,
usr.sbin/bhyve/amd64/vmexit.c
377
err = emulate_mem(vcpu, vme->u.inst_emul.gpa, vie,
usr.sbin/bhyve/amd64/vmexit.c
398
vmexit_suspend(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/vmexit.c
402
int vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/amd64/vmexit.c
431
vmexit_debug(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/vmexit.c
436
checkpoint_cpu_suspend(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
438
gdb_cpu_suspend(vcpu);
usr.sbin/bhyve/amd64/vmexit.c
440
checkpoint_cpu_resume(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
451
vmexit_db(struct vmctx *ctx __unused, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/vmexit.c
455
checkpoint_cpu_suspend(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
457
gdb_cpu_debug(vcpu, vmrun->vm_exit);
usr.sbin/bhyve/amd64/vmexit.c
459
checkpoint_cpu_resume(vcpu_id(vcpu));
usr.sbin/bhyve/amd64/vmexit.c
465
vmexit_breakpoint(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/vmexit.c
468
gdb_cpu_breakpoint(vcpu, vmrun->vm_exit);
usr.sbin/bhyve/amd64/vmexit.c
473
vmexit_ipi(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/amd64/vmexit.c
508
int vmexit_task_switch(struct vmctx *, struct vcpu *, struct vm_run *);
usr.sbin/bhyve/amd64/vmexit.c
60
vm_inject_fault(struct vcpu *vcpu, int vector, int errcode_valid,
usr.sbin/bhyve/amd64/vmexit.c
67
error = vm_inject_exception(vcpu, vector, errcode_valid, errcode,
usr.sbin/bhyve/amd64/vmexit.c
73
vmexit_inout(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/amd64/vmexit.c
84
error = emulate_inout(ctx, vcpu, vme);
usr.sbin/bhyve/amd64/vmexit.c
97
vmexit_rdmsr(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/amd64/xmsr.c
102
emulate_rdmsr(struct vcpu *vcpu __unused, uint32_t num, uint64_t *val)
usr.sbin/bhyve/amd64/xmsr.c
48
emulate_wrmsr(struct vcpu *vcpu __unused, uint32_t num, uint64_t val __unused)
usr.sbin/bhyve/amd64/xmsr.h
33
int emulate_wrmsr(struct vcpu *vcpu, uint32_t code, uint64_t val);
usr.sbin/bhyve/amd64/xmsr.h
34
int emulate_rdmsr(struct vcpu *vcpu, uint32_t code, uint64_t *val);
usr.sbin/bhyve/bhyverun.c
1051
vm_resume_cpu(vcpu_info[vcpuid].vcpu);
usr.sbin/bhyve/bhyverun.c
119
static void vm_loop(struct vmctx *ctx, struct vcpu *vcpu);
usr.sbin/bhyve/bhyverun.c
123
struct vcpu *vcpu;
usr.sbin/bhyve/bhyverun.c
365
int vcpu, pcpu;
usr.sbin/bhyve/bhyverun.c
367
if (sscanf(opt, "%d:%d", &vcpu, &pcpu) != 2) {
usr.sbin/bhyve/bhyverun.c
372
if (vcpu < 0) {
usr.sbin/bhyve/bhyverun.c
373
fprintf(stderr, "invalid vcpu '%d'\n", vcpu);
usr.sbin/bhyve/bhyverun.c
383
snprintf(key, sizeof(key), "vcpu.%d.cpuset", vcpu);
usr.sbin/bhyve/bhyverun.c
398
parse_cpuset(int vcpu, const char *list, cpuset_t *set)
usr.sbin/bhyve/bhyverun.c
409
errx(4, "invalid cpuset for vcpu %d: '%s'", vcpu, list);
usr.sbin/bhyve/bhyverun.c
431
vcpu, list);
usr.sbin/bhyve/bhyverun.c
435
errx(4, "invalid cpuset for vcpu %d: '%s'", vcpu, list);
usr.sbin/bhyve/bhyverun.c
448
int vcpu;
usr.sbin/bhyve/bhyverun.c
451
for (vcpu = 0; vcpu < guest_ncpus; vcpu++) {
usr.sbin/bhyve/bhyverun.c
452
snprintf(key, sizeof(key), "vcpu.%d.cpuset", vcpu);
usr.sbin/bhyve/bhyverun.c
456
vcpumap[vcpu] = malloc(sizeof(cpuset_t));
usr.sbin/bhyve/bhyverun.c
457
if (vcpumap[vcpu] == NULL)
usr.sbin/bhyve/bhyverun.c
458
err(4, "Failed to allocate cpuset for vcpu %d", vcpu);
usr.sbin/bhyve/bhyverun.c
459
parse_cpuset(vcpu, value, vcpumap[vcpu]);
usr.sbin/bhyve/bhyverun.c
535
struct vcpu *
usr.sbin/bhyve/bhyverun.c
538
return (vcpu_info[vcpuid].vcpu);
usr.sbin/bhyve/bhyverun.c
561
gdb_cpu_add(vi->vcpu);
usr.sbin/bhyve/bhyverun.c
564
vm_loop(vi->ctx, vi->vcpu);
usr.sbin/bhyve/bhyverun.c
578
error = vm_activate_cpu(vi->vcpu);
usr.sbin/bhyve/bhyverun.c
584
error = vm_suspend_cpu(vi->vcpu);
usr.sbin/bhyve/bhyverun.c
592
fbsdrun_deletecpu(int vcpu)
usr.sbin/bhyve/bhyverun.c
598
if (!CPU_ISSET(vcpu, &cpumask)) {
usr.sbin/bhyve/bhyverun.c
599
EPRINTLN("Attempting to delete unknown cpu %d", vcpu);
usr.sbin/bhyve/bhyverun.c
603
CPU_CLR(vcpu, &cpumask);
usr.sbin/bhyve/bhyverun.c
605
if (vcpu != BSP) {
usr.sbin/bhyve/bhyverun.c
621
return (vm_suspend_cpu(vcpu_info[vcpuid].vcpu));
usr.sbin/bhyve/bhyverun.c
625
vm_loop(struct vmctx *ctx, struct vcpu *vcpu)
usr.sbin/bhyve/bhyverun.c
634
assert(CPU_ISSET(vcpu_id(vcpu), &active_cpus));
usr.sbin/bhyve/bhyverun.c
641
error = vm_run(vcpu, &vmrun);
usr.sbin/bhyve/bhyverun.c
652
rc = (*vmexit_handlers[exitcode])(ctx, vcpu, &vmrun);
usr.sbin/bhyve/bhyverun.c
667
num_vcpus_allowed(struct vmctx *ctx, struct vcpu *vcpu)
usr.sbin/bhyve/bhyverun.c
676
error = vm_get_capability(vcpu, VM_CAP_UNRESTRICTED_GUEST, &tmp);
usr.sbin/bhyve/bhyverun.c
802
struct vcpu *bsp;
usr.sbin/bhyve/bhyverun.c
935
vcpu_info[vcpuid].vcpu = bsp;
usr.sbin/bhyve/bhyverun.c
937
vcpu_info[vcpuid].vcpu = vm_vcpu_open(ctx, vcpuid);
usr.sbin/bhyve/bhyverun.c
982
bhyve_start_vcpu(vcpu_info[vcpuid].vcpu, vcpuid == BSP);
usr.sbin/bhyve/bhyverun.h
54
struct vcpu;
usr.sbin/bhyve/bhyverun.h
63
struct vcpu;
usr.sbin/bhyve/bhyverun.h
64
struct vcpu *fbsdrun_vcpu(int vcpuid);
usr.sbin/bhyve/bhyverun.h
71
typedef int (*vmexit_handler_t)(struct vmctx *, struct vcpu *, struct vm_run *);
usr.sbin/bhyve/bhyverun.h
88
void bhyve_init_vcpu(struct vcpu *vcpu);
usr.sbin/bhyve/bhyverun.h
89
void bhyve_start_vcpu(struct vcpu *vcpu, bool bsp);
usr.sbin/bhyve/bhyverun.h
90
int bhyve_init_platform(struct vmctx *ctx, struct vcpu *bsp);
usr.sbin/bhyve/bhyverun.h
91
int bhyve_init_platform_late(struct vmctx *ctx, struct vcpu *bsp);
usr.sbin/bhyve/bootrom.c
86
bootrom_var_mem_handler(struct vcpu *vcpu __unused, int dir, uint64_t addr,
usr.sbin/bhyve/gdb.c
1003
_gdb_cpu_suspend(vcpu, true);
usr.sbin/bhyve/gdb.c
1004
gdb_cpu_resume(vcpu);
usr.sbin/bhyve/gdb.c
1025
gdb_cpu_step(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
1028
int vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/gdb.c
1037
error = _gdb_set_step(vcpu, 0);
usr.sbin/bhyve/gdb.c
1046
_gdb_cpu_suspend(vcpu, true);
usr.sbin/bhyve/gdb.c
1048
gdb_cpu_resume(vcpu);
usr.sbin/bhyve/gdb.c
1058
gdb_cpu_debug(struct vcpu *vcpu, struct vm_exit *vmexit)
usr.sbin/bhyve/gdb.c
1066
gdb_cpu_step(vcpu);
usr.sbin/bhyve/gdb.c
1070
gdb_cpu_step(vcpu);
usr.sbin/bhyve/gdb.c
1079
gdb_cpu_mtrap(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
1083
gdb_cpu_step(vcpu);
usr.sbin/bhyve/gdb.c
1099
gdb_cpu_breakpoint(struct vcpu *vcpu, struct vm_exit *vmexit)
usr.sbin/bhyve/gdb.c
1110
vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/gdb.c
1112
error = guest_vaddr2paddr(vcpu, guest_pc(vmexit), &gpa);
usr.sbin/bhyve/gdb.c
1121
vm_set_register(vcpu, GDB_PC_REGNAME, guest_pc(vmexit));
usr.sbin/bhyve/gdb.c
1129
_gdb_cpu_suspend(vcpu, true);
usr.sbin/bhyve/gdb.c
1141
gdb_cpu_resume(vcpu);
usr.sbin/bhyve/gdb.c
1146
error = vm_set_register(vcpu, VM_REG_GUEST_ENTRY_INST_LENGTH,
usr.sbin/bhyve/gdb.c
1149
error = vm_inject_exception(vcpu, IDT_BP, 0, 0, 0);
usr.sbin/bhyve/gdb.c
1155
error = vm_inject_exception(vcpu, esr, 0);
usr.sbin/bhyve/gdb.c
1163
gdb_step_vcpu(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
1167
vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/gdb.c
1169
error = _gdb_check_step(vcpu);
usr.sbin/bhyve/gdb.c
1175
vm_resume_cpu(vcpu);
usr.sbin/bhyve/gdb.c
1469
int vcpu;
usr.sbin/bhyve/gdb.c
1473
vcpu = CPU_FFS(&mask) - 1;
usr.sbin/bhyve/gdb.c
1474
CPU_CLR(vcpu, &mask);
usr.sbin/bhyve/gdb.c
1475
if (vm_set_capability(vcpus[vcpu], GDB_BREAKPOINT_CAP,
usr.sbin/bhyve/gdb.c
1478
debug("$vCPU %d %sabled breakpoint exits\n", vcpu,
usr.sbin/bhyve/gdb.c
162
static struct vcpu **vcpus;
usr.sbin/bhyve/gdb.c
1740
int vcpu;
usr.sbin/bhyve/gdb.c
1751
vcpu = CPU_FFS(&mask) - 1;
usr.sbin/bhyve/gdb.c
1752
CPU_CLR(vcpu, &mask);
usr.sbin/bhyve/gdb.c
1757
append_integer(vcpu + 1);
usr.sbin/bhyve/gdb.c
287
guest_paging_info(struct vcpu *vcpu, struct vm_guest_paging *paging)
usr.sbin/bhyve/gdb.c
298
if (vm_get_register_set(vcpu, nitems(regset), regset, regs) == -1)
usr.sbin/bhyve/gdb.c
335
if (vm_get_register_set(vcpu, nitems(regset), regset, regs) == -1)
usr.sbin/bhyve/gdb.c
358
guest_vaddr2paddr(struct vcpu *vcpu, uint64_t vaddr, uint64_t *paddr)
usr.sbin/bhyve/gdb.c
363
if (guest_paging_info(vcpu, &paging) == -1)
usr.sbin/bhyve/gdb.c
370
if (vm_gla2gpa_nofault(vcpu, &paging, vaddr, PROT_READ, paddr,
usr.sbin/bhyve/gdb.c
852
_gdb_cpu_suspend(struct vcpu *vcpu, bool report_stop)
usr.sbin/bhyve/gdb.c
854
int vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/gdb.c
871
_gdb_set_step(struct vcpu *vcpu, int val)
usr.sbin/bhyve/gdb.c
880
error = vm_set_capability(vcpu, VM_CAP_MTRAP_EXIT, val);
usr.sbin/bhyve/gdb.c
882
error = vm_set_capability(vcpu, VM_CAP_RFLAGS_TF, val);
usr.sbin/bhyve/gdb.c
884
(void)vm_set_capability(vcpu, VM_CAP_MASK_HWINTR, val);
usr.sbin/bhyve/gdb.c
886
error = vm_set_capability(vcpu, VM_CAP_SS_EXIT, val);
usr.sbin/bhyve/gdb.c
888
error = vm_set_capability(vcpu, VM_CAP_MASK_HWINTR, val);
usr.sbin/bhyve/gdb.c
897
_gdb_check_step(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
902
if (vm_get_capability(vcpu, VM_CAP_MTRAP_EXIT, &val) != 0) {
usr.sbin/bhyve/gdb.c
903
if (vm_get_capability(vcpu, VM_CAP_RFLAGS_TF, &val) != 0)
usr.sbin/bhyve/gdb.c
907
(void)vcpu;
usr.sbin/bhyve/gdb.c
917
gdb_cpu_add(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
923
vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/gdb.c
928
vcpus[vcpuid] = vcpu;
usr.sbin/bhyve/gdb.c
931
vm_set_capability(vcpu, GDB_BREAKPOINT_CAP, 1);
usr.sbin/bhyve/gdb.c
948
_gdb_cpu_suspend(vcpu, false);
usr.sbin/bhyve/gdb.c
960
error = vm_suspend_cpu(vcpu);
usr.sbin/bhyve/gdb.c
972
gdb_cpu_resume(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.c
977
vs = &vcpu_state[vcpu_id(vcpu)];
usr.sbin/bhyve/gdb.c
986
error = _gdb_set_step(vcpu, 1);
usr.sbin/bhyve/gdb.c
997
gdb_cpu_suspend(struct vcpu *vcpu)
usr.sbin/bhyve/gdb.h
31
void gdb_cpu_add(struct vcpu *vcpu);
usr.sbin/bhyve/gdb.h
32
void gdb_cpu_breakpoint(struct vcpu *vcpu, struct vm_exit *vmexit);
usr.sbin/bhyve/gdb.h
33
void gdb_cpu_mtrap(struct vcpu *vcpu);
usr.sbin/bhyve/gdb.h
34
void gdb_cpu_suspend(struct vcpu *vcpu);
usr.sbin/bhyve/gdb.h
35
void gdb_cpu_debug(struct vcpu *vcpu, struct vm_exit *vmexit);
usr.sbin/bhyve/mem.c
142
typedef int (mem_cb_t)(struct vcpu *vcpu, uint64_t gpa, struct mem_range *mr,
usr.sbin/bhyve/mem.c
146
mem_read(struct vcpu *vcpu, uint64_t gpa, uint64_t *rval, int size, void *arg)
usr.sbin/bhyve/mem.c
151
error = (*mr->handler)(vcpu, MEM_F_READ, gpa, size, rval, mr->arg1,
usr.sbin/bhyve/mem.c
157
mem_write(struct vcpu *vcpu, uint64_t gpa, uint64_t wval, int size, void *arg)
usr.sbin/bhyve/mem.c
162
error = (*mr->handler)(vcpu, MEM_F_WRITE, gpa, size, &wval, mr->arg1,
usr.sbin/bhyve/mem.c
168
access_memory(struct vcpu *vcpu, uint64_t paddr, mem_cb_t *cb, void *arg)
usr.sbin/bhyve/mem.c
174
vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/mem.c
195
err = mmio_handle_non_backed_mem(vcpu, paddr, &mr);
usr.sbin/bhyve/mem.c
226
err = cb(vcpu, paddr, mr, arg);
usr.sbin/bhyve/mem.c
242
emulate_mem_cb(struct vcpu *vcpu, uint64_t paddr, struct mem_range *mr,
usr.sbin/bhyve/mem.c
248
return (vmm_emulate_instruction(vcpu, paddr, ema->vie, ema->paging,
usr.sbin/bhyve/mem.c
253
emulate_mem(struct vcpu *vcpu, uint64_t paddr, struct vie *vie,
usr.sbin/bhyve/mem.c
260
return (access_memory(vcpu, paddr, emulate_mem_cb, &ema));
usr.sbin/bhyve/mem.c
270
rw_mem_cb(struct vcpu *vcpu, uint64_t paddr, struct mem_range *mr, void *arg)
usr.sbin/bhyve/mem.c
275
return (mr->handler(vcpu, rma->operation, paddr, rma->size,
usr.sbin/bhyve/mem.c
280
read_mem(struct vcpu *vcpu, uint64_t gpa, uint64_t *rval, int size)
usr.sbin/bhyve/mem.c
287
return (access_memory(vcpu, gpa, rw_mem_cb, &rma));
usr.sbin/bhyve/mem.c
291
write_mem(struct vcpu *vcpu, uint64_t gpa, uint64_t wval, int size)
usr.sbin/bhyve/mem.c
298
return (access_memory(vcpu, gpa, rw_mem_cb, &rma));
usr.sbin/bhyve/mem.h
34
struct vcpu;
usr.sbin/bhyve/mem.h
36
typedef int (*mem_func_t)(struct vcpu *vcpu, int dir, uint64_t addr,
usr.sbin/bhyve/mem.h
54
int emulate_mem(struct vcpu *vcpu, uint64_t paddr, struct vie *vie,
usr.sbin/bhyve/mem.h
56
int mmio_handle_non_backed_mem(struct vcpu *vcpu __unused, uint64_t paddr,
usr.sbin/bhyve/mem.h
59
int read_mem(struct vcpu *vpu, uint64_t gpa, uint64_t *rval, int size);
usr.sbin/bhyve/mem.h
63
int write_mem(struct vcpu *vcpu, uint64_t gpa, uint64_t wval, int size);
usr.sbin/bhyve/mem_md.c
40
mmio_handle_non_backed_mem(struct vcpu *vcpu __unused, uint64_t paddr __unused,
usr.sbin/bhyve/pci_emul.c
1454
pci_emul_fallback_handler(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/pci_emul.c
1470
pci_emul_ecfg_handler(struct vcpu *vcpu __unused, int dir, uint64_t addr,
usr.sbin/bhyve/pci_emul.c
549
pci_emul_iomem_handler(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/pci_emul.c
574
pci_emul_mem_handler(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/pctestdev.c
192
pctestdev_iomem_io(struct vcpu *vcpu __unused, int dir,
usr.sbin/bhyve/pctestdev.c
76
static int pctestdev_iomem_io(struct vcpu *vcpu, int dir,
usr.sbin/bhyve/riscv/bhyverun_machdep.c
187
bhyve_init_vcpu(struct vcpu *vcpu __unused)
usr.sbin/bhyve/riscv/bhyverun_machdep.c
192
bhyve_start_vcpu(struct vcpu *vcpu, bool bsp __unused)
usr.sbin/bhyve/riscv/bhyverun_machdep.c
197
error = vm_set_register(vcpu, VM_REG_GUEST_A0, vcpu_id(vcpu));
usr.sbin/bhyve/riscv/bhyverun_machdep.c
200
fbsdrun_addcpu(vcpu_id(vcpu));
usr.sbin/bhyve/riscv/bhyverun_machdep.c
257
mmio_uart_mem_handler(struct vcpu *vcpu __unused, int dir, uint64_t addr,
usr.sbin/bhyve/riscv/bhyverun_machdep.c
307
bhyve_init_platform(struct vmctx *ctx, struct vcpu *bsp)
usr.sbin/bhyve/riscv/bhyverun_machdep.c
362
bhyve_init_platform_late(struct vmctx *ctx __unused, struct vcpu *bsp __unused)
usr.sbin/bhyve/riscv/vmexit.c
104
vmexit_suspend(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/riscv/vmexit.c
108
int vcpuid = vcpu_id(vcpu);
usr.sbin/bhyve/riscv/vmexit.c
137
vmexit_debug(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/riscv/vmexit.c
151
vmexit_bogus(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/riscv/vmexit.c
179
vmexit_ecall_hsm(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/riscv/vmexit.c
182
struct vcpu *newvcpu;
usr.sbin/bhyve/riscv/vmexit.c
235
vmexit_ecall_base(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/riscv/vmexit.c
273
error = vm_set_register(vcpu, VM_REG_GUEST_A1, val);
usr.sbin/bhyve/riscv/vmexit.c
310
vmexit_ecall(struct vmctx *ctx, struct vcpu *vcpu, struct vm_run *vmrun)
usr.sbin/bhyve/riscv/vmexit.c
325
ret = vmexit_ecall_base(ctx, vcpu, vme);
usr.sbin/bhyve/riscv/vmexit.c
328
ret = vmexit_ecall_hsm(ctx, vcpu, vme);
usr.sbin/bhyve/riscv/vmexit.c
338
error = vm_set_register(vcpu, VM_REG_GUEST_A0, ret);
usr.sbin/bhyve/riscv/vmexit.c
346
vmexit_hyp(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyve/riscv/vmexit.c
75
vmexit_inst_emul(struct vmctx *ctx __unused, struct vcpu *vcpu,
usr.sbin/bhyve/riscv/vmexit.c
85
err = emulate_mem(vcpu, vme->u.inst_emul.gpa, vie,
usr.sbin/bhyve/snapshot.c
1145
checkpoint_cpu_add(int vcpu)
usr.sbin/bhyve/snapshot.c
1149
CPU_SET(vcpu, &vcpus_active);
usr.sbin/bhyve/snapshot.c
1152
CPU_SET(vcpu, &vcpus_suspended);
usr.sbin/bhyve/snapshot.c
1155
CPU_CLR(vcpu, &vcpus_suspended);
usr.sbin/bhyve/snapshot.c
1171
checkpoint_cpu_suspend(int vcpu)
usr.sbin/bhyve/snapshot.c
1175
CPU_SET(vcpu, &vcpus_suspended);
usr.sbin/bhyve/snapshot.c
1182
checkpoint_cpu_resume(int vcpu)
usr.sbin/bhyve/snapshot.c
1188
CPU_CLR(vcpu, &vcpus_suspended);
usr.sbin/bhyve/snapshot.h
89
void checkpoint_cpu_add(int vcpu);
usr.sbin/bhyve/snapshot.h
90
void checkpoint_cpu_resume(int vcpu);
usr.sbin/bhyve/snapshot.h
91
void checkpoint_cpu_suspend(int vcpu);
usr.sbin/bhyve/tpm_intf_crb.c
306
tpm_crb_mem_handler(struct vcpu *vcpu __unused, const int dir,
usr.sbin/bhyve/tpm_ppi_qemu.c
56
tpm_ppi_mem_handler(struct vcpu *const vcpu __unused, const int dir,
usr.sbin/bhyvectl/aarch64/bhyvectl_machdep.c
50
int vcpu __unused)
usr.sbin/bhyvectl/aarch64/bhyvectl_machdep.c
79
bhyvectl_md_main(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1002
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1010
error = vm_get_vmcs_field(vcpu, VMCS_EXIT_QUALIFICATION,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1021
get_misc_vmcb(struct vcpu *vcpu, int vcpuid, bool get_all)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1027
error = vm_get_vmcb_field(vcpu, VMCB_OFF_CR_INTERCEPT, 4,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1032
error = vm_get_vmcb_field(vcpu, VMCB_OFF_DR_INTERCEPT, 4,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1037
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXC_INTERCEPT, 4,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1042
error = vm_get_vmcb_field(vcpu, VMCB_OFF_INST1_INTERCEPT,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1047
error = vm_get_vmcb_field(vcpu, VMCB_OFF_INST2_INTERCEPT,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1054
error = vm_get_vmcb_field(vcpu, VMCB_OFF_TLB_CTRL,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1061
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXITINFO1,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1065
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXITINFO2,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1069
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXITINTINFO,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1076
error = vm_get_vmcb_field(vcpu, VMCB_OFF_VIRQ,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1083
error = vm_get_vmcb_field(vcpu, VMCB_OFF_AVIC_BAR, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1090
error = vm_get_vmcb_field(vcpu, VMCB_OFF_AVIC_PAGE, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1097
error = vm_get_vmcb_field(vcpu, VMCB_OFF_AVIC_LT, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1102
error = vm_get_vmcb_field(vcpu, VMCB_OFF_AVIC_PT, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1546
bhyvectl_md_main(struct vmctx *ctx, struct vcpu *vcpu, int vcpuid, bool get_all)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1559
error = vm_set_register(vcpu, VM_REG_GUEST_EFER, set_efer_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1562
error = vm_set_register(vcpu, VM_REG_GUEST_CR0, set_cr0_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1565
error = vm_set_register(vcpu, VM_REG_GUEST_CR2, set_cr2_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1568
error = vm_set_register(vcpu, VM_REG_GUEST_CR3, set_cr3_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1571
error = vm_set_register(vcpu, VM_REG_GUEST_CR4, set_cr4_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1574
error = vm_set_register(vcpu, VM_REG_GUEST_DR0, set_dr0_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1577
error = vm_set_register(vcpu, VM_REG_GUEST_DR1, set_dr1_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1580
error = vm_set_register(vcpu, VM_REG_GUEST_DR2, set_dr2_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1583
error = vm_set_register(vcpu, VM_REG_GUEST_DR3, set_dr3_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1586
error = vm_set_register(vcpu, VM_REG_GUEST_DR6, set_dr6_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1589
error = vm_set_register(vcpu, VM_REG_GUEST_DR7, set_dr7_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1592
error = vm_set_register(vcpu, VM_REG_GUEST_RSP, set_rsp_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1595
error = vm_set_register(vcpu, VM_REG_GUEST_RIP, set_rip_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1598
error = vm_set_register(vcpu, VM_REG_GUEST_RAX, set_rax_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1601
error = vm_set_register(vcpu, VM_REG_GUEST_RFLAGS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1605
error = vm_set_desc(vcpu, VM_REG_GUEST_DS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1610
error = vm_set_desc(vcpu, VM_REG_GUEST_ES,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1615
error = vm_set_desc(vcpu, VM_REG_GUEST_SS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1620
error = vm_set_desc(vcpu, VM_REG_GUEST_CS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1625
error = vm_set_desc(vcpu, VM_REG_GUEST_FS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1630
error = vm_set_desc(vcpu, VM_REG_GUEST_GS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1635
error = vm_set_desc(vcpu, VM_REG_GUEST_TR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1640
error = vm_set_desc(vcpu, VM_REG_GUEST_LDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1645
error = vm_set_desc(vcpu, VM_REG_GUEST_GDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1650
error = vm_set_desc(vcpu, VM_REG_GUEST_IDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1655
error = vm_set_register(vcpu, VM_REG_GUEST_CS, set_cs_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1658
error = vm_set_register(vcpu, VM_REG_GUEST_DS, set_ds_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1661
error = vm_set_register(vcpu, VM_REG_GUEST_ES, set_es_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1664
error = vm_set_register(vcpu, VM_REG_GUEST_FS, set_fs_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1667
error = vm_set_register(vcpu, VM_REG_GUEST_GS, set_gs_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1670
error = vm_set_register(vcpu, VM_REG_GUEST_SS, set_ss_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1673
error = vm_set_register(vcpu, VM_REG_GUEST_TR, set_tr_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1676
error = vm_set_register(vcpu, VM_REG_GUEST_LDTR, set_ldtr_val);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1679
error = vm_set_x2apic_state(vcpu, x2apic_state);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1685
error = vm_inject_nmi(vcpu);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1688
error = vm_lapic_local_irq(vcpu, assert_lapic_lvt);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1691
error = get_all_registers(vcpu, vcpuid, get_all);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1694
error = get_all_segments(vcpu, vcpuid, get_all);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1698
error = get_misc_vmcs(vcpu, vcpuid, get_all);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1700
error = get_misc_vmcb(vcpu, vcpuid, get_all);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1704
error = vm_get_x2apic_state(vcpu, &x2apic_state);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1711
error = vm_get_vmcs_field(vcpu, VMCS_EPTP, &eptp);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1713
error = vm_get_vmcb_field(vcpu, VMCB_OFF_NPT_BASE, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1722
error = vm_get_vmcs_field(vcpu, VMCS_EXCEPTION_BITMAP,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1725
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXC_INTERCEPT,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1733
error = vm_get_vmcs_field(vcpu, VMCS_IO_BITMAP_A, &bm);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1736
error = vm_get_vmcs_field(vcpu, VMCS_IO_BITMAP_B, &bm);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1740
error = vm_get_vmcb_field(vcpu, VMCB_OFF_IO_PERM, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1751
error = vm_get_vmcs_field(vcpu, VMCS_TSC_OFFSET,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1754
error = vm_get_vmcb_field(vcpu, VMCB_OFF_TSC_OFFSET, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1762
error = vm_get_vmcs_field(vcpu, VMCS_MSR_BITMAP, &addr);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1764
error = vm_get_vmcb_field(vcpu, VMCB_OFF_MSR_PERM, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1772
error = vm_get_vmcs_field(vcpu, VMCS_MSR_BITMAP, &addr);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1774
error = vm_get_vmcb_field(vcpu, VMCB_OFF_MSR_PERM, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1786
error = vm_get_vmcs_field(vcpu, VMCS_VPID, &vpid);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1788
error = vm_get_vmcb_field(vcpu, VMCB_OFF_ASID, 4,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1797
error = vm_get_vmcs_field(vcpu, VMCS_GUEST_IA32_PAT,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1800
error = vm_get_vmcb_field(vcpu, VMCB_OFF_GUEST_PAT, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1808
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1811
error = vm_get_vmcb_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1817
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1820
error = vm_get_vmcb_field(vcpu, VMCB_OFF_SYSENTER_ESP,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1826
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1829
error = vm_get_vmcb_field(vcpu, VMCB_OFF_SYSENTER_EIP,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1837
error = vm_get_vmcs_field(vcpu, VMCS_EXIT_REASON, &u64);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1839
error = vm_get_vmcb_field(vcpu, VMCB_OFF_EXIT_REASON, 8,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
185
bhyvectl_dump_vm_run_exitcode(struct vm_exit *vmexit, int vcpu)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
187
printf("vm exit[%d]\n", vcpu);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
1882
error = vm_get_intinfo(vcpu, &info[0], &info[1]);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
327
print_msr_pm(uint64_t msr, int vcpu, int readable, int writeable)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
331
printf("%-20s[%d]\t\t%c%c\n", msr_name(msr), vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
340
dump_amd_msr_pm(const char *bitmap, int vcpu)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
352
print_msr_pm(msr, vcpu, readable, writeable);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
358
print_msr_pm(msr + MSR_AMD6TH_START, vcpu, readable,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
365
print_msr_pm(msr + MSR_AMD7TH_START, vcpu, readable,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
374
dump_intel_msr_pm(const char *bitmap, int vcpu)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
386
print_msr_pm(msr, vcpu, readable, writeable);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
392
print_msr_pm(msr + MSR_AMD6TH_START, vcpu, readable,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
398
dump_msr_bitmap(int vcpu, uint64_t addr, bool cpu_intel)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
424
dump_intel_msr_pm(bitmap, vcpu);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
426
dump_amd_msr_pm(bitmap, vcpu);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
439
vm_get_vmcs_field(struct vcpu *vcpu, int field, uint64_t *ret_val)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
442
return (vm_get_register(vcpu, VMCS_IDENT(field), ret_val));
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
446
vm_get_vmcb_field(struct vcpu *vcpu, int off, int bytes,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
450
return (vm_get_register(vcpu, VMCB_ACCESS(off, bytes), ret_val));
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
454
get_all_registers(struct vcpu *vcpu, int vcpuid, bool get_all)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
463
error = vm_get_register(vcpu, VM_REG_GUEST_EFER, &efer);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
469
error = vm_get_register(vcpu, VM_REG_GUEST_CR0, &cr0);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
475
error = vm_get_register(vcpu, VM_REG_GUEST_CR2, &cr2);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
481
error = vm_get_register(vcpu, VM_REG_GUEST_CR3, &cr3);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
487
error = vm_get_register(vcpu, VM_REG_GUEST_CR4, &cr4);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
493
error = vm_get_register(vcpu, VM_REG_GUEST_DR0, &dr0);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
499
error = vm_get_register(vcpu, VM_REG_GUEST_DR1, &dr1);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
505
error = vm_get_register(vcpu, VM_REG_GUEST_DR2, &dr2);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
511
error = vm_get_register(vcpu, VM_REG_GUEST_DR3, &dr3);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
517
error = vm_get_register(vcpu, VM_REG_GUEST_DR6, &dr6);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
523
error = vm_get_register(vcpu, VM_REG_GUEST_DR7, &dr7);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
529
error = vm_get_register(vcpu, VM_REG_GUEST_RSP, &rsp);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
535
error = vm_get_register(vcpu, VM_REG_GUEST_RIP, &rip);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
541
error = vm_get_register(vcpu, VM_REG_GUEST_RAX, &rax);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
547
error = vm_get_register(vcpu, VM_REG_GUEST_RBX, &rbx);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
553
error = vm_get_register(vcpu, VM_REG_GUEST_RCX, &rcx);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
559
error = vm_get_register(vcpu, VM_REG_GUEST_RDX, &rdx);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
565
error = vm_get_register(vcpu, VM_REG_GUEST_RSI, &rsi);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
571
error = vm_get_register(vcpu, VM_REG_GUEST_RDI, &rdi);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
577
error = vm_get_register(vcpu, VM_REG_GUEST_RBP, &rbp);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
583
error = vm_get_register(vcpu, VM_REG_GUEST_R8, &r8);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
589
error = vm_get_register(vcpu, VM_REG_GUEST_R9, &r9);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
595
error = vm_get_register(vcpu, VM_REG_GUEST_R10, &r10);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
601
error = vm_get_register(vcpu, VM_REG_GUEST_R11, &r11);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
607
error = vm_get_register(vcpu, VM_REG_GUEST_R12, &r12);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
613
error = vm_get_register(vcpu, VM_REG_GUEST_R13, &r13);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
619
error = vm_get_register(vcpu, VM_REG_GUEST_R14, &r14);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
625
error = vm_get_register(vcpu, VM_REG_GUEST_R15, &r15);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
631
error = vm_get_register(vcpu, VM_REG_GUEST_RFLAGS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
641
get_all_segments(struct vcpu *vcpu, int vcpuid, bool get_all)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
647
error = vm_get_desc(vcpu, VM_REG_GUEST_DS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
656
error = vm_get_desc(vcpu, VM_REG_GUEST_ES,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
665
error = vm_get_desc(vcpu, VM_REG_GUEST_FS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
674
error = vm_get_desc(vcpu, VM_REG_GUEST_GS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
683
error = vm_get_desc(vcpu, VM_REG_GUEST_SS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
692
error = vm_get_desc(vcpu, VM_REG_GUEST_CS,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
701
error = vm_get_desc(vcpu, VM_REG_GUEST_TR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
710
error = vm_get_desc(vcpu, VM_REG_GUEST_LDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
719
error = vm_get_desc(vcpu, VM_REG_GUEST_GDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
728
error = vm_get_desc(vcpu, VM_REG_GUEST_IDTR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
737
error = vm_get_register(vcpu, VM_REG_GUEST_CS, &cs);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
743
error = vm_get_register(vcpu, VM_REG_GUEST_DS, &ds);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
749
error = vm_get_register(vcpu, VM_REG_GUEST_ES, &es);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
755
error = vm_get_register(vcpu, VM_REG_GUEST_FS, &fs);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
761
error = vm_get_register(vcpu, VM_REG_GUEST_GS, &gs);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
767
error = vm_get_register(vcpu, VM_REG_GUEST_SS, &ss);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
773
error = vm_get_register(vcpu, VM_REG_GUEST_TR, &tr);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
779
error = vm_get_register(vcpu, VM_REG_GUEST_LDTR, &ldtr);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
788
get_misc_vmcs(struct vcpu *vcpu, int vcpuid, bool get_all)
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
795
error = vm_get_vmcs_field(vcpu, VMCS_CR0_MASK, &cr0mask);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
802
error = vm_get_vmcs_field(vcpu, VMCS_CR0_SHADOW,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
810
error = vm_get_vmcs_field(vcpu, VMCS_CR4_MASK, &cr4mask);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
817
error = vm_get_vmcs_field(vcpu, VMCS_CR4_SHADOW,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
825
error = vm_get_vmcs_field(vcpu, VMCS_CR3_TARGET_COUNT,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
832
error = vm_get_vmcs_field(vcpu, VMCS_CR3_TARGET0,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
839
error = vm_get_vmcs_field(vcpu, VMCS_CR3_TARGET1,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
846
error = vm_get_vmcs_field(vcpu, VMCS_CR3_TARGET2,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
853
error = vm_get_vmcs_field(vcpu, VMCS_CR3_TARGET3,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
862
error = vm_get_vmcs_field(vcpu, VMCS_PIN_BASED_CTLS, &ctl);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
868
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
875
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
882
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
889
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
897
error = vm_get_vmcs_field(vcpu, VMCS_ENTRY_INTR_INFO,&u64);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
906
error = vm_get_vmcs_field(vcpu, VMCS_TPR_THRESHOLD,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
914
error = vm_get_vmcs_field(vcpu, VMCS_INSTRUCTION_ERROR,
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
923
error = vm_get_vmcs_field(vcpu, VMCS_EXIT_CTLS, &ctl);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
929
error = vm_get_vmcs_field(vcpu, VMCS_ENTRY_CTLS, &ctl);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
935
error = vm_get_vmcs_field(vcpu, VMCS_HOST_IA32_PAT, &pat);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
941
error = vm_get_vmcs_field(vcpu, VMCS_HOST_CR0, &cr0);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
947
error = vm_get_vmcs_field(vcpu, VMCS_HOST_CR3, &cr3);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
953
error = vm_get_vmcs_field(vcpu, VMCS_HOST_CR4, &cr4);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
959
error = vm_get_vmcs_field(vcpu, VMCS_HOST_RIP, &rip);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
965
error = vm_get_vmcs_field(vcpu, VMCS_HOST_RSP, &rsp);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
971
error = vm_get_vmcs_field(vcpu, VMCS_LINK_POINTER, &addr);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
977
error = vm_get_vmcs_field(vcpu, VMCS_EXIT_INTR_INFO, &u64);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
985
error = vm_get_vmcs_field(vcpu, VMCS_EXIT_INTR_ERRCODE, &u64);
usr.sbin/bhyvectl/amd64/bhyvectl_machdep.c
993
error = vm_get_vmcs_field(vcpu,
usr.sbin/bhyvectl/bhyvectl.c
332
struct vcpu *vcpu;
usr.sbin/bhyvectl/bhyvectl.c
410
vcpu = vm_vcpu_open(ctx, vcpuid);
usr.sbin/bhyvectl/bhyvectl.c
423
bhyvectl_md_main(ctx, vcpu, vcpuid, get_all);
usr.sbin/bhyvectl/bhyvectl.c
429
error = vm_set_capability(vcpu, captype, capval);
usr.sbin/bhyvectl/bhyvectl.c
445
error = vm_get_capability(vcpu, captype, &val);
usr.sbin/bhyvectl/bhyvectl.c
484
stats = vm_get_stats(vcpu, &tv, &num_stats);
usr.sbin/bhyvectl/bhyvectl.c
509
error = vm_run(vcpu, &vmrun);
usr.sbin/bhyvectl/bhyvectl.h
45
void bhyvectl_md_main(struct vmctx *ctx, struct vcpu *vcpu, int vcpuid,
usr.sbin/bhyvectl/bhyvectl.h
50
void bhyvectl_dump_vm_run_exitcode(struct vm_exit *vmexit, int vcpu);
usr.sbin/bhyvectl/riscv/bhyvectl_machdep.c
50
int vcpu __unused)
usr.sbin/bhyvectl/riscv/bhyvectl_machdep.c
79
bhyvectl_md_main(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
usr.sbin/bhyveload/bhyveload.c
115
static struct vcpu *vcpu;
usr.sbin/bhyveload/bhyveload.c
435
error = vm_set_register(vcpu, vmreg, v);
usr.sbin/bhyveload/bhyveload.c
463
error = vm_set_register(vcpu, vmreg, v);
usr.sbin/bhyveload/bhyveload.c
498
error = vm_set_register(vcpu, vmreg, v);
usr.sbin/bhyveload/bhyveload.c
510
error = vm_set_desc(vcpu, VM_REG_GUEST_GDTR, base, size - 1, 0);
usr.sbin/bhyveload/bhyveload.c
525
error = vm_setup_freebsd_registers_i386(vcpu, rip, gdtbase,
usr.sbin/bhyveload/bhyveload.c
528
error = vm_setup_freebsd_registers(vcpu, rip, cr3, gdtbase,
usr.sbin/bhyveload/bhyveload.c
609
return (vm_set_register(vcpu, reg, val));
usr.sbin/bhyveload/bhyveload.c
618
return (vm_set_desc(vcpu, reg, base, limit, access));
usr.sbin/bhyveload/bhyveload.c
894
vcpu = vm_vcpu_open(ctx, BSP);