Lines Matching defs:vcpu

378 static void check_for_guest_assert(struct kvm_vcpu *vcpu)
382 if (vcpu->run->exit_reason == KVM_EXIT_IO &&
383 get_ucall(vcpu, &uc) == UCALL_ABORT) {
388 static void process_rdmsr(struct kvm_vcpu *vcpu, uint32_t msr_index)
390 struct kvm_run *run = vcpu->run;
392 check_for_guest_assert(vcpu);
394 TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_X86_RDMSR);
420 static void process_wrmsr(struct kvm_vcpu *vcpu, uint32_t msr_index)
422 struct kvm_run *run = vcpu->run;
424 check_for_guest_assert(vcpu);
426 TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_X86_WRMSR);
448 static void process_ucall_done(struct kvm_vcpu *vcpu)
452 check_for_guest_assert(vcpu);
454 TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
456 TEST_ASSERT(get_ucall(vcpu, &uc) == UCALL_DONE,
461 static uint64_t process_ucall(struct kvm_vcpu *vcpu)
465 check_for_guest_assert(vcpu);
467 TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
469 switch (get_ucall(vcpu, &uc)) {
473 check_for_guest_assert(vcpu);
476 process_ucall_done(vcpu);
485 static void run_guest_then_process_rdmsr(struct kvm_vcpu *vcpu,
488 vcpu_run(vcpu);
489 process_rdmsr(vcpu, msr_index);
492 static void run_guest_then_process_wrmsr(struct kvm_vcpu *vcpu,
495 vcpu_run(vcpu);
496 process_wrmsr(vcpu, msr_index);
499 static uint64_t run_guest_then_process_ucall(struct kvm_vcpu *vcpu)
501 vcpu_run(vcpu);
502 return process_ucall(vcpu);
505 static void run_guest_then_process_ucall_done(struct kvm_vcpu *vcpu)
507 vcpu_run(vcpu);
508 process_ucall_done(vcpu);
515 struct kvm_vm *vm = vcpu->vm;
531 run_guest_then_process_rdmsr(vcpu, MSR_IA32_XSS);
532 run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS);
533 run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS);
535 run_guest_then_process_rdmsr(vcpu, MSR_IA32_FLUSH_CMD);
536 run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD);
537 run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD);
539 run_guest_then_process_wrmsr(vcpu, MSR_NON_EXISTENT);
540 run_guest_then_process_rdmsr(vcpu, MSR_NON_EXISTENT);
542 vcpu_run(vcpu);
543 cmd = process_ucall(vcpu);
550 run_guest_then_process_rdmsr(vcpu, MSR_IA32_XSS);
551 run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS);
552 run_guest_then_process_wrmsr(vcpu, MSR_IA32_XSS);
554 run_guest_then_process_rdmsr(vcpu, MSR_IA32_FLUSH_CMD);
555 run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD);
556 run_guest_then_process_wrmsr(vcpu, MSR_IA32_FLUSH_CMD);
558 run_guest_then_process_wrmsr(vcpu, MSR_NON_EXISTENT);
559 run_guest_then_process_rdmsr(vcpu, MSR_NON_EXISTENT);
562 run_guest_then_process_ucall_done(vcpu);
569 static int handle_ucall(struct kvm_vcpu *vcpu)
573 switch (get_ucall(vcpu, &uc)) {
578 vm_ioctl(vcpu->vm, KVM_X86_SET_MSR_FILTER, &no_filter_deny);
628 struct kvm_vm *vm = vcpu->vm;
629 struct kvm_run *run = vcpu->run;
645 vcpu_run(vcpu);
655 if (handle_ucall(vcpu))
669 struct kvm_vm *vm = vcpu->vm;
680 run_guest_then_process_rdmsr(vcpu, MSR_FS_BASE);
681 TEST_ASSERT(run_guest_then_process_ucall(vcpu) == UCALL_SYNC,
684 run_guest_then_process_rdmsr(vcpu, MSR_GS_BASE);
685 run_guest_then_process_ucall_done(vcpu);
757 struct kvm_vm *vm = vcpu->vm;