Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp337438pxt; Wed, 11 Aug 2021 22:59:56 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw22FANEvcrdFwyAco7/6EFbaFz1D/B4VKCQthyLgu0t2NK61GJaSETBBPwviVq23n2ps7Y X-Received: by 2002:a17:906:1451:: with SMTP id q17mr2122143ejc.214.1628747995782; Wed, 11 Aug 2021 22:59:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628747995; cv=none; d=google.com; s=arc-20160816; b=mtNDqjioT0wqtvjcMLBLa7AkphY/G2CO9Hw0lx8lPi37RMy3hnvoGZ2Dmb4L54yMks MtRQBSu8Yd7SGnd+V3iBbOkIAvQYKpCrX26msymlMuZv2mQRnd7BFJGahfvE8r7sag02 SF1qLQvuxLlomAU4BOyCFFIP423UWK5fCjNvAPiAcbg1T5qB4br3CqXWVcv7RM1ahcI8 TKJbcz0g8oUZ4H9vQuwM4txqfs9s7m/03izFuMCWtBCuoVCV2y57l5BYP21/E5bXcONj Opmqn/kBGng2DHzLp83HfhXAA4UHv0dPV1KCqKVR8Yd189/BZcJdLYDPUf+/83Mqst+y +TEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=IvAHlnOIqIpgAJ2aY7DI+M864xjdE5TdQLOpbiyifvQ=; b=oQYSK7cRNtAD9IcxbY1EwWPqQP34c6ZHXhds11xxsMC33nZpR9j6ot81FawLlNsx5O CnEuzZsxB6TYql3rRwO16+RPyQNS03ejRglpsDUoDP/E5qFK7Uj4vNRdvXZn7y2HYfFl Uu/Q1gBrseyaMxQHY08tnRmRZqQYE3joGQWFcsIfMR7OecQEsirgnX3VfKc1wi1eyxuQ pUB1ZO2yghF2U6dYAeL0UBEgCvHIkOOD6h571OSOU+fRnVxki8TYJ4GJdOG/sYN3bJiu 0a7U/zCZXT4k+aTlYdKvggUfvVSuHz8w7acqVlwe8H395ZQBqFQCceg+jA5LwIKtJY1U UduQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=R3hsnaFt; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d21si1649906edp.534.2021.08.11.22.59.32; Wed, 11 Aug 2021 22:59:55 -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=@google.com header.s=20161025 header.b=R3hsnaFt; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234457AbhHLF4Y (ORCPT + 99 others); Thu, 12 Aug 2021 01:56:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233072AbhHLF4W (ORCPT ); Thu, 12 Aug 2021 01:56:22 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54458C061765 for ; Wed, 11 Aug 2021 22:55:57 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id w1so11103476lfq.10 for ; Wed, 11 Aug 2021 22:55:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IvAHlnOIqIpgAJ2aY7DI+M864xjdE5TdQLOpbiyifvQ=; b=R3hsnaFt3TczhsAE8P17sgq55dF2U0QlhQhDb8zdBvw1DVO4TR7eYKfkErXtlz2vcs XINR/3JZNGETCbrjXbLj5kOTipgpY+fWF/gOsYQ8C0+AhgW1GZ8ndqM7F4fLQoq1gdDa XEK/QeunUlslEML+sHEwvMogqYc/ZcyBYb4FGJlikftTC6WRqMkYg4hk3WYL4Zm3oo01 HzDP1IkCPpU/xNCmD/u4BnvYRmU2pwIBKdT87wRrcCCG5CZ8MDOo0hArTYAhTofxM8q8 UgDi4fwuwUgexrGcdz+cBxJPXauWow4OJhMl2mt0gh1E5+lfL85qV4+NR/hu6l9YwRiN oCkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IvAHlnOIqIpgAJ2aY7DI+M864xjdE5TdQLOpbiyifvQ=; b=T8ER8YqKGHRrY2mRnOpTBYtY33yCKE8CQVxO6uEYnSOtF9lFgNPbFKk1mJbd7H3KPw TqLdJMhyoeqGbPDRjqqY0EvmfOOFIaEkmDed35uL6Sl+7YfTfxy/uCR3qt4p6/P2K56o ClTsbw6qudCR1MJ1HquXOVlpJZHFP5gluqFR3LAJcohRsWrtXlCUxcfuQMprC5SnYdqf 2V2H9G+CEimLUhLX29FVN9qL7JsY6XMEikIGyMyXonM+WQL6r6oXv5rUq6bUbIh/Yex8 /LUBvu81ATt4bMkqr+7shLI0h9qtUPchlQdk9FPKj2yag0agpGE1LBeayf+ZPE2ogcZR 7m9Q== X-Gm-Message-State: AOAM530rEOhV095gP5dyFoGkiVA7mK4BzzoIz+SmkyHjil5XXU2m501r Viz6/m+XgO8ezq7tgvN7eH0DisxzjfdDZFbd10dlgg== X-Received: by 2002:a05:6512:3fa8:: with SMTP id x40mr1371919lfa.0.1628747755164; Wed, 11 Aug 2021 22:55:55 -0700 (PDT) MIME-Version: 1.0 References: <20210812045615.3167686-1-seanjc@google.com> In-Reply-To: <20210812045615.3167686-1-seanjc@google.com> From: Oliver Upton Date: Wed, 11 Aug 2021 22:55:44 -0700 Message-ID: Subject: Re: [PATCH] KVM: nVMX: Use vmx_need_pf_intercept() when deciding if L0 wants a #PF To: Sean Christopherson Cc: Paolo Bonzini , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Peter Shier Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Aug 11, 2021 at 9:56 PM Sean Christopherson wrote: > > Use vmx_need_pf_intercept() when determining if L0 wants to handle a #PF > in L2 or if the VM-Exit should be forwarded to L1. The current logic fails > to account for the case where #PF is intercepted to handle > guest.MAXPHYADDR < host.MAXPHYADDR and ends up reflecting all #PFs into > L1. At best, L1 will complain and inject the #PF back into L2. At > worst, L1 will eat the unexpected fault and cause L2 to hang on infinite > page faults. > > Note, while the bug was technically introduced by the commit that added > support for the MAXPHYADDR madness, the shame is all on commit > a0c134347baf ("KVM: VMX: introduce vmx_need_pf_intercept"). > > Fixes: 1dbf5d68af6f ("KVM: VMX: Add guest physical address check in EPT violation and misconfig") > Cc: stable@vger.kernel.org > Cc: Peter Shier > Cc: Oliver Upton > Cc: Jim Mattson > Signed-off-by: Sean Christopherson Reviewed-by: Oliver Upton -- Thanks, Oliver > --- > arch/x86/kvm/vmx/nested.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kvm/vmx/nested.c b/arch/x86/kvm/vmx/nested.c > index bc6327950657..8bcbe57b560f 100644 > --- a/arch/x86/kvm/vmx/nested.c > +++ b/arch/x86/kvm/vmx/nested.c > @@ -5830,7 +5830,8 @@ static bool nested_vmx_l0_wants_exit(struct kvm_vcpu *vcpu, > if (is_nmi(intr_info)) > return true; > else if (is_page_fault(intr_info)) > - return vcpu->arch.apf.host_apf_flags || !enable_ept; > + return vcpu->arch.apf.host_apf_flags || > + vmx_need_pf_intercept(vcpu); > else if (is_debug(intr_info) && > vcpu->guest_debug & > (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP)) > -- > 2.33.0.rc1.237.g0d66db33f3-goog >