Skip to the content.

将所有的 exit reason 都整理下

EXIT_REASON_NOTIFY

preemempt timer

在 intel sdm 中的 25.4.2 Guest Non-Register State 中的,可以看到 VMX-preemption timer value 可以看看 kernel 的实现在那里。

如何理解 EXIT_REASON_NOTIFY

static int handle_notify(struct kvm_vcpu *vcpu)
{
	unsigned long exit_qual = vmx_get_exit_qual(vcpu);
	bool context_invalid = exit_qual & NOTIFY_VM_CONTEXT_INVALID;

	++vcpu->stat.notify_window_exits;

	/*
	 * Notify VM exit happened while executing iret from NMI,
	 * "blocked by NMI" bit has to be set before next VM entry.
	 */
	if (enable_vnmi && (exit_qual & INTR_INFO_UNBLOCK_NMI))
		vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
			      GUEST_INTR_STATE_NMI);

	if (vcpu->kvm->arch.notify_vmexit_flags & KVM_X86_NOTIFY_VMEXIT_USER ||
	    context_invalid) {
		vcpu->run->exit_reason = KVM_EXIT_NOTIFY;
		vcpu->run->notify.flags = context_invalid ?
					  KVM_NOTIFY_CONTEXT_INVALID : 0;
		return 0;
	}

	return 1;
}

EXIT_REASON_INTERRUPT_WINDOW

EXIT_REASON_EXTERNAL_INTERRUPT

[ ] 到底会因为时钟中断退出吗?

这个 exit reason 如何理解

  24.98%  reason EXIT_IOIO rip 0x6b43 info 920091 6b45
  24.98%  reason EXIT_IOIO rip 0x6bd8 info 700091 6bda
  24.98%  reason EXIT_CR0_SEL_WRITE rip 0xcf5d info 8000000000000001 0
  24.98%  reason EXIT_CR0_SEL_WRITE rip 0xcfaa info 8000000000000001 0

[ ] 所有的 msr 都会 exit 吗?

	[EXIT_REASON_MSR_READ]                = kvm_emulate_rdmsr,
	[EXIT_REASON_MSR_WRITE]               = kvm_emulate_wrmsr,

综合测试

1 统计各种 exit 的样式

频率,比例,都是做什么的

suspend ,idle , stress cpu , stress memory , iperf

头疼啊

	[EXIT_REASON_EOI_INDUCED]             = handle_apic_eoi_induced,

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。