Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp475064pxf; Thu, 18 Mar 2021 05:17:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzaR/l/E8RD2itFI83ydjv+UqACRC0gPJ6iJVV6nTjzlHu7xDGNyC1wzzo9rIfK6FHHd+5b X-Received: by 2002:a05:6402:6cb:: with SMTP id n11mr3350401edy.198.1616069874777; Thu, 18 Mar 2021 05:17:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616069874; cv=none; d=google.com; s=arc-20160816; b=yzE4H0XEWuZ1mmXm5+KVhjwbxE86rjCfvxpM62DziAQmgtOzzMOKNX0EmKXWLJAt66 qJUQz4xcYoua+mhzk5C9N3hnS2+S63Jb2acBKsKPMRydRFKXt6wHCJG+SlQmfVUIFjBb Czv9v5X0CBlRYYKDLR6PgNa16w/DCCu+8iWpf35luZIFclKFAU1eR3F8Kdl+kC6APLMP /ujKjE6lMsUyKKZfeOe9475CeJXRWnZVmeUKD2f5I2cFqw2yAcm0bMx9RZAoNgHOu6A0 fzLk+h9ulLtB1t8rZTHJpzQaTPIRpLbNz/pN3WLdcpD7D1UwqPARRoFvqTLB2SzYrgmJ ZvKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=96PabhJDlstmRC7dsrIRYNFjrVdwNrnjmP8hw9NXnxQ=; b=zWMdyQt4nKFd7+WscLnG6jwEC0XwjqJBWYiYRniggfngppTFcnyPFma41C3R3724hh scRtzTGDr1elGZWpiFXmOGoK9yxObVdbb2/YLebtjzxqytUURrgBia0y0quplvO8+Xmw 9L746GANbXuGE/GfoOizOaDP0TX2s+pvxWpqeKUfToAeGrBCLQ5dWmN+rIklz6IUqw47 7dUeHb3r8HC6Ez4yhg+oDsDymatI9d+ktdXDDb024dAy9X/7hZmB7+Y1xPKc8YVSzZjy GLLXa2WUwo3+hUugYdJXyvIg4zApvmURVk8LP1yKnPSg2UKE2zFdAD33R8WilSTIGRqH kKRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=gzroBiHF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q16si1486104ejd.145.2021.03.18.05.17.32; Thu, 18 Mar 2021 05:17:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@messagingengine.com header.s=fm2 header.b=gzroBiHF; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231178AbhCRMQh (ORCPT + 99 others); Thu, 18 Mar 2021 08:16:37 -0400 Received: from wforward4-smtp.messagingengine.com ([64.147.123.34]:60899 "EHLO wforward4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230408AbhCRMP7 (ORCPT ); Thu, 18 Mar 2021 08:15:59 -0400 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailforward.west.internal (Postfix) with ESMTP id 700C4FE1; Thu, 18 Mar 2021 08:08:47 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Thu, 18 Mar 2021 08:08:48 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :in-reply-to:message-id:mime-version:references:subject:to :x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=96PabhJDlstmRC7dsrIRYNFjrVdwNrnjmP8hw9NXnxQ=; b=gzroBiHF qtKZ/V+qgg6VQWfsiGz3OwmJk+/mhZXRjAL+iE/lPyCYea4CEojkDHc6h0V3mBPp lMtQ+qtnX+l/d9AVVoLLFp46EHrDmse48kZplwapjKSbswhT/WU87JjnOkPZxu7B 03giZCHs7LJu47ufOfE7iH75AVAZbSp142j2sSngZbNe/U5Tirxlu2cE1rk/J71e z37uHxoB6BBxOYAxWcwz95WC1jQmLo1E78WFNF7aNxZzAj6UsuhL+rV58eEGf/Iz CKosx45COMf/yWb+12mh729xSSKIZqexuAd7ZW+MSwaTmRuzUbzBB0CjGA8OBORP t5/NeT3ajAx+rQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrudefiedgfeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufffkffojghfggfgsedtkeertdertddtnecuhfhrohhmpeffrghvihgu ucfgughmohhnughsohhnuceouggrvhhiugdrvggumhhonhgushhonhesohhrrggtlhgvrd gtohhmqeenucggtffrrghtthgvrhhnpedufeetjefgfefhtdejhfehtdfftefhteekhefg leehfffhiefhgeelgfejtdehkeenucfkphepkedurddukeejrddviedrvdefkeenucevlh hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegurghvihgurdgv ughmohhnughsohhnsehorhgrtghlvgdrtghomh X-ME-Proxy: Received: from disaster-area.hh.sledj.net (disaster-area.hh.sledj.net [81.187.26.238]) by mail.messagingengine.com (Postfix) with ESMTPA id 0B23B108005F; Thu, 18 Mar 2021 08:08:43 -0400 (EDT) Received: from localhost (disaster-area.hh.sledj.net [local]) by disaster-area.hh.sledj.net (OpenSMTPD) with ESMTPA id 08d61faf; Thu, 18 Mar 2021 12:08:41 +0000 (UTC) From: David Edmondson To: linux-kernel@vger.kernel.org Cc: Ingo Molnar , Joerg Roedel , "H. Peter Anvin" , Paolo Bonzini , kvm@vger.kernel.org, Wanpeng Li , x86@kernel.org, Borislav Petkov , Thomas Gleixner , Sean Christopherson , Jim Mattson , Vitaly Kuznetsov , David Edmondson Subject: [PATCH v5 1/5] KVM: x86: dump_vmcs should not assume GUEST_IA32_EFER is valid Date: Thu, 18 Mar 2021 12:08:37 +0000 Message-Id: <20210318120841.133123-2-david.edmondson@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210318120841.133123-1-david.edmondson@oracle.com> References: <20210318120841.133123-1-david.edmondson@oracle.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the VM entry/exit controls for loading/saving MSR_EFER are either not available (an older processor or explicitly disabled) or not used (host and guest values are the same), reading GUEST_IA32_EFER from the VMCS returns an inaccurate value. Because of this, in dump_vmcs() don't use GUEST_IA32_EFER to decide whether to print the PDPTRs - always do so if the fields exist. Fixes: 4eb64dce8d0a ("KVM: x86: dump VMCS on invalid entry") Signed-off-by: David Edmondson --- arch/x86/kvm/vmx/vmx.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 32cf8287d4a7..b0ee9d240f73 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -5792,7 +5792,6 @@ void dump_vmcs(void) u32 vmentry_ctl, vmexit_ctl; u32 cpu_based_exec_ctrl, pin_based_exec_ctrl, secondary_exec_control; unsigned long cr4; - u64 efer; if (!dump_invalid_vmcs) { pr_warn_ratelimited("set kvm_intel.dump_invalid_vmcs=1 to dump internal KVM state.\n"); @@ -5804,7 +5803,6 @@ void dump_vmcs(void) cpu_based_exec_ctrl = vmcs_read32(CPU_BASED_VM_EXEC_CONTROL); pin_based_exec_ctrl = vmcs_read32(PIN_BASED_VM_EXEC_CONTROL); cr4 = vmcs_readl(GUEST_CR4); - efer = vmcs_read64(GUEST_IA32_EFER); secondary_exec_control = 0; if (cpu_has_secondary_exec_ctrls()) secondary_exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL); @@ -5816,9 +5814,7 @@ void dump_vmcs(void) pr_err("CR4: actual=0x%016lx, shadow=0x%016lx, gh_mask=%016lx\n", cr4, vmcs_readl(CR4_READ_SHADOW), vmcs_readl(CR4_GUEST_HOST_MASK)); pr_err("CR3 = 0x%016lx\n", vmcs_readl(GUEST_CR3)); - if ((secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT) && - (cr4 & X86_CR4_PAE) && !(efer & EFER_LMA)) - { + if (cpu_has_vmx_ept()) { pr_err("PDPTR0 = 0x%016llx PDPTR1 = 0x%016llx\n", vmcs_read64(GUEST_PDPTR0), vmcs_read64(GUEST_PDPTR1)); pr_err("PDPTR2 = 0x%016llx PDPTR3 = 0x%016llx\n", @@ -5844,7 +5840,8 @@ void dump_vmcs(void) if ((vmexit_ctl & (VM_EXIT_SAVE_IA32_PAT | VM_EXIT_SAVE_IA32_EFER)) || (vmentry_ctl & (VM_ENTRY_LOAD_IA32_PAT | VM_ENTRY_LOAD_IA32_EFER))) pr_err("EFER = 0x%016llx PAT = 0x%016llx\n", - efer, vmcs_read64(GUEST_IA32_PAT)); + vmcs_read64(GUEST_IA32_EFER), + vmcs_read64(GUEST_IA32_PAT)); pr_err("DebugCtl = 0x%016llx DebugExceptions = 0x%016lx\n", vmcs_read64(GUEST_IA32_DEBUGCTL), vmcs_readl(GUEST_PENDING_DBG_EXCEPTIONS)); -- 2.30.2