From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhihui Zhang Subject: [PATCH] Check use I/O bitmap first before unconditional I/O exit Date: Mon, 30 Dec 2013 15:56:29 -0500 Message-ID: <1388436989-8597-1-git-send-email-zzhsuny@gmail.com> Cc: kvm@vger.kernel.org To: gleb@redhat.com, pbonzini@redhat.com, hpa@zytor.com Return-path: Received: from mail-qe0-f52.google.com ([209.85.128.52]:44114 "EHLO mail-qe0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932127Ab3L3U4j (ORCPT ); Mon, 30 Dec 2013 15:56:39 -0500 Received: by mail-qe0-f52.google.com with SMTP id ne12so11973434qeb.11 for ; Mon, 30 Dec 2013 12:56:37 -0800 (PST) Sender: kvm-owner@vger.kernel.org List-ID: According to Table C-1 of Intel SDM 3C, a VM exit happens on an I/O instruction when "use I/O bitmaps" VM-execution control was 0 _and_ the "unconditional I/O exiting" VM-execution control was 1. So we can't just check "unconditional I/O exiting" alone. This patch was improved by suggestion from Jan Kiszka. Signed-off-by: Zhihui Zhang --- arch/x86/kvm/vmx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index b2fe1c2..45617db 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -6460,11 +6460,8 @@ static bool nested_vmx_exit_handled_io(struct kvm_vcpu *vcpu, int size; u8 b; - if (nested_cpu_has(vmcs12, CPU_BASED_UNCOND_IO_EXITING)) - return 1; - if (!nested_cpu_has(vmcs12, CPU_BASED_USE_IO_BITMAPS)) - return 0; + return nested_cpu_has(vmcs12, CPU_BASED_UNCOND_IO_EXITING); exit_qualification = vmcs_readl(EXIT_QUALIFICATION); -- 1.8.1.2