Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp2676422imw; Wed, 6 Jul 2022 09:51:37 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vAPkSCn5p93V6Bzu81kf+KPR3RPzA82UPuK1bMNmw73LqCckXleEfWFyWYOTVEtzkgE3y9 X-Received: by 2002:a63:d315:0:b0:411:bbff:efbc with SMTP id b21-20020a63d315000000b00411bbffefbcmr28008161pgg.342.1657126296741; Wed, 06 Jul 2022 09:51:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657126296; cv=none; d=google.com; s=arc-20160816; b=CLpR+xsBWTGTteaWSn5rfESj0YuUBIP29HSBlzw+UYm8jZIqgd+rhyZMzkVP9po+tK 5TXuxoLArEPVR6F2MT9BXRtHRwI/DLhXuCIoTFr7nzf3A79tFE8bWAzKJCwshdmYtIT8 7IDh3o7vKkWqgb8FMoNiWJnOSy2skd86zUdNqYHP5OCuVJicn0hdkU90S/Ajrdd0UD6J Hq0I9YeyeZEuGfjMuKhApAQvZ0+MSkl4X5pCKLz4I1t+9+U2bvvw7U3jZqqp3FeQmphu hB68hPmnhwWG1bmm89yPffIH1hKsNinSBRCwjDj5L/BWi184wOb4/Q1OWjBC6ppURLCL dQzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=8qMqNPKdwEB+Xj55W1lFVgPi5kuDOPaSuG9HBIEp++0=; b=rAibMFhaB/wNaHqRe2MMUZX5tiPLYlEwVeW4rl2xgUc+UeGpDAeGP8iChP0/mQD7Yp IRs7+EVLx1IsSUUy5pubRujXTaUWNMGv32rFbpZH87OxEQzPEJXOpdWH1JIXOdOGXIbO H7a5va7OtFyotuctpwSSqfU1PfDa2071lOc6i6KvTY1lY7tong1QX/4zHHK4Dd92tkUc 36B5OBRIP4WJg0i7G9UfWqWKp9pyabAm+LhEbW6xCAWNdvYPTE+OQNESYeVQ+CUD+a5C Vfv5Fn2ZsaABJq9kVvEHNOEVnnM5w13F9EX8uSAPtVl+XapB6I2P2qutYmvkicPEe9pt SjxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="LmnZ/Qbs"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t186-20020a6381c3000000b0040ccfa0a0dbsi2826930pgd.480.2022.07.06.09.51.23; Wed, 06 Jul 2022 09:51:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b="LmnZ/Qbs"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S234159AbiGFQpa (ORCPT + 99 others); Wed, 6 Jul 2022 12:45:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39138 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234193AbiGFQpY (ORCPT ); Wed, 6 Jul 2022 12:45:24 -0400 Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D520C28E09 for ; Wed, 6 Jul 2022 09:45:22 -0700 (PDT) Received: by mail-pj1-x1030.google.com with SMTP id 89-20020a17090a09e200b001ef7638e536so12727173pjo.3 for ; Wed, 06 Jul 2022 09:45:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=8qMqNPKdwEB+Xj55W1lFVgPi5kuDOPaSuG9HBIEp++0=; b=LmnZ/QbsPiVvbhlR+0zsAWB1dPXgA0N55j2iDxMMu/VF/aLnqXjS2x+LtThefPrNT5 D50MgQKn+2JgIuBjTsjA2UHACE+WUmOI53oXTyK9ZGWjOCHBcvohtRS/+HBFuagKYQDk td1tya88QXz2LPsV8ZOV7r0W46UqVOqh4zo2C/bRTrW8Y+yFSjziQhUgnRb573WyqlHG 2UCpaF24qJwnhq6xXUUAbaKhmE7JXf/Sr1UWmCDss4rESRHxiOAnI75HsolAgrTiiXQo qyQL37dwX16wyKc32eB6XoUb1pRntRYX0eR08vMMgUa+krX7ZzxztJg+gX+hmoml8L52 HebA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=8qMqNPKdwEB+Xj55W1lFVgPi5kuDOPaSuG9HBIEp++0=; b=XpWg7xZLVg34SdT57TJjFB1/s4/DZwcrDyPuapWkrl0Wo0HoxITUBltLNuorxpGe4I tfJITiWBV91n+mNTkfAK3lPjcJjUki/s7lFa1h6k+J9shL4GbtPD9+fTLNbv6TmmvIZo Wd9+dgEDnhls9CXZDDGBYcHSpfekBHzx3KkHA+OhFSIzeBh0ktlCdyx+4W3Ndn47+M/f pjZQwppf8lbzDYsvNN1B5TSmaQNQQYXGYrtljwfMor1+/vbLbgf4rhcMQNDGuFxIpKyR yeVldRqP9FgUwjFaWSQ17pwQkGXhUeKz2tRglWC0g7Cb/FVGqTZ957LQMbYO0G/J5r35 DqnA== X-Gm-Message-State: AJIora8CGbYTJBx4W2foq2v/lE8FJKu2w+per5P/IPcKsvscBy47p9vM J9fuclBvKsxoU29iG1kSCxb4gg== X-Received: by 2002:a17:902:f543:b0:16a:54c6:78c0 with SMTP id h3-20020a170902f54300b0016a54c678c0mr46544913plf.22.1657125921966; Wed, 06 Jul 2022 09:45:21 -0700 (PDT) Received: from google.com (123.65.230.35.bc.googleusercontent.com. [35.230.65.123]) by smtp.gmail.com with ESMTPSA id p22-20020a1709027ed600b0016a0fe1a1fbsm26057570plb.220.2022.07.06.09.45.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 09:45:21 -0700 (PDT) Date: Wed, 6 Jul 2022 16:45:17 +0000 From: Sean Christopherson To: Maxim Levitsky Cc: Paolo Bonzini , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Oliver Upton , Peter Shier Subject: Re: [PATCH v2 09/21] KVM: nVMX: Unconditionally clear mtf_pending on nested VM-Exit Message-ID: References: <20220614204730.3359543-1-seanjc@google.com> <20220614204730.3359543-10-seanjc@google.com> <599b352e16c970885d3f6bfaf7d1a254627ef5dd.camel@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <599b352e16c970885d3f6bfaf7d1a254627ef5dd.camel@redhat.com> X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 06, 2022, Maxim Levitsky wrote: > On Tue, 2022-06-14 at 20:47 +0000, Sean Christopherson wrote: > > Clear mtf_pending on nested VM-Exit instead of handling the clear on a > > case-by-case basis in vmx_check_nested_events(). The pending MTF should > > rever survive nested VM-Exit, as it is a property of KVM's run of the > ^^ typo: never > > Also it is not clear what the 'case by case' means. > > I see that the vmx_check_nested_events always clears it unless nested run is pending > or we re-inject an event. Those two "unless ..." are the "cases". The point I'm trying to make in the changelog is that there's no need for any conditional logic whatsoever. > > @@ -3927,6 +3919,9 @@ static int vmx_check_nested_events(struct kvm_vcpu *vcpu) > > clear_bit(KVM_APIC_INIT, &apic->pending_events); > > if (vcpu->arch.mp_state != KVM_MP_STATE_INIT_RECEIVED) > > nested_vmx_vmexit(vcpu, EXIT_REASON_INIT_SIGNAL, 0, 0); > > + > > + /* MTF is discarded if the vCPU is in WFS. */ > > + vmx->nested.mtf_pending = false; > > return 0; > > I guess MTF should also be discarded if we enter SMM, and I see that > VMX also enter SMM with a pseudo VM exit (in vmx_enter_smm) which > will clear the MTF. Good. No, a pending MTF should be preserved across SMI. It's not a regression because KVM incorrectly prioritizes MTF (and trap-like #DBs) over SMI (and because if KVM did prioritize SMI, the existing code would also drop the pending MTF). Note, this isn't the only flaw that needs to be addressed in order to correctly prioritize SMIs, e.g. KVM_{G,S}ET_NESTED_STATE would need to save/restore a pending MTF if the vCPU is in SMM after an SMI that arrived while L2 was active. Tangentially related, KVM's pseudo VM-Exit on SMI emulation is completely wrong[*]. [*] https://lore.kernel.org/all/Yobt1XwOfb5M6Dfa@google.com