From patchwork Sun Apr 14 10:12:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kiszka X-Patchwork-Id: 2441681 Return-Path: X-Original-To: patchwork-kvm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 3BB86DF25A for ; Sun, 14 Apr 2013 10:13:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751399Ab3DNKNM (ORCPT ); Sun, 14 Apr 2013 06:13:12 -0400 Received: from mout.web.de ([212.227.17.12]:50383 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751140Ab3DNKM7 (ORCPT ); Sun, 14 Apr 2013 06:12:59 -0400 Received: from localhost.localdomain ([95.157.56.37]) by smtp.web.de (mrweb001) with ESMTPSA (Nemesis) id 0LeLmv-1UvDh40FMj-00q707; Sun, 14 Apr 2013 12:12:55 +0200 From: Jan Kiszka To: Gleb Natapov , Marcelo Tosatti Cc: kvm , Paolo Bonzini , Nadav Har'El Subject: [PATCH v4 1/6] KVM: nVMX: Fix injection of PENDING_INTERRUPT and NMI_WINDOW exits to L1 Date: Sun, 14 Apr 2013 12:12:45 +0200 Message-Id: <65cb1b7c6e3f9db8877047a8057c08e488000941.1365934368.git.jan.kiszka@web.de> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: References: In-Reply-To: References: X-Provags-ID: V02:K0:AmnU4JO3ILscDj4IbggPvqA4+ca+pGUGu0rChrxBQn7 nZNYNpJmobL45sozpy0tTQfCSwdQ2ZbjZ47IHCH0bEPTzegZeK IjKYzzF26XMoAQ2o152WEFDEFEUKkDLExkvZXrILn+60A9B34a Q7pWrTkvaNaiuJrPNb1lPcaEWDwKtaATJMuREWLxiVSM0EVMF3 SMkB7JvLgZhMMamU5u0Kw== Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Jan Kiszka Check if the interrupt or NMI window exit is for L1 by testing if it has the corresponding controls enabled. This is required when we allow direct injection from L0 to L2 Signed-off-by: Jan Kiszka Reviewed-by: Gleb Natapov --- arch/x86/kvm/vmx.c | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 669b803..752dbb5 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -6112,14 +6112,9 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu) case EXIT_REASON_TRIPLE_FAULT: return 1; case EXIT_REASON_PENDING_INTERRUPT: + return nested_cpu_has(vmcs12, CPU_BASED_VIRTUAL_INTR_PENDING); case EXIT_REASON_NMI_WINDOW: - /* - * prepare_vmcs02() set the CPU_BASED_VIRTUAL_INTR_PENDING bit - * (aka Interrupt Window Exiting) only when L1 turned it on, - * so if we got a PENDING_INTERRUPT exit, this must be for L1. - * Same for NMI Window Exiting. - */ - return 1; + return nested_cpu_has(vmcs12, CPU_BASED_VIRTUAL_NMI_PENDING); case EXIT_REASON_TASK_SWITCH: return 1; case EXIT_REASON_CPUID: