From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05B19CCA483 for ; Wed, 20 Jul 2022 22:46:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229919AbiGTWq5 (ORCPT ); Wed, 20 Jul 2022 18:46:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229449AbiGTWqz (ORCPT ); Wed, 20 Jul 2022 18:46:55 -0400 Received: from mail-ot1-x336.google.com (mail-ot1-x336.google.com [IPv6:2607:f8b0:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FE37255A3 for ; Wed, 20 Jul 2022 15:46:54 -0700 (PDT) Received: by mail-ot1-x336.google.com with SMTP id br15-20020a056830390f00b0061c9d73b8bdso9134093otb.6 for ; Wed, 20 Jul 2022 15:46:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=L6ONf5ncBROvqp8ldt4WaxSQOKhi80VGBXn7MyeukQM=; b=OF2F9CSZB9dqPMw9JeJAkZYBC49PxC8TCHuYSx0KzkiBwalvgpJt7XRlNs8Ce1K2lA brLh8Td3sWspE0ZXoaE/QAZ/dL96Bnm7Yw5hlK8PXufEhP57CWgFR0J4QQDFTIv4MChO JInIWUSV8uOGbxolJ/RtdequmVH84QVO66o4TDiRg/yw80ezxcdEwyrdHa6JPkJzfkzg EHAfQmenRDQqrPaEPwHoDGSb7inZTZLD99d04aivMxQq/AqHAYh7B5N0TkCNiXEtdKaY TxGhclRVTWvnJMe6N4jTEUV46ZFA2G9muTf8FH0YhZgt0W2LwRvNwxAtDv/DNiEdQsP8 MW5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=L6ONf5ncBROvqp8ldt4WaxSQOKhi80VGBXn7MyeukQM=; b=GIUTXlHOCLf65aFmNh/6hlboIIyIhooQ8J7bNIjFd54XC/9bGb83siSnr5PpH0KZ1a WR0xGh2ZMmGRGChI2MKb8b9Vzr6arub+VpcU+9Ks3unDtIZUschBeJdLjp2uP4T6gjtK WiGN+2w/JB17Cim1ycrXGfVX/QaU8+O0z+JO4kzgb0RP2mSygJqEqfgK1+07BlRKuctr nm4HilkJozSPH/oCaCqxbaV+ZsQr0c/+vopo8Meaw910Snf2ZdQG3QHSlhqLQwx26lDZ BTKJedJj2e+8hGGSiIDRfc54Z0G9VkQFxRv7HQzlGP+o5Cr/TtdQ0MxbIBLQgNDov8K/ ydng== X-Gm-Message-State: AJIora/CwQugiAI36pYePziTqLEAXp53otB3Mu1KLfc7yvwUD92Ob2A1 zZPaUWuZ/5abTyN2nMab/SW8oKxnuv8lsU7mraHp1w== X-Google-Smtp-Source: AGRyM1uPF6DlqAUTYGw9rwWhLZe0IbZS8bttwlHpwkLIdngm1dXnNU/Q4NNnFl79sj+FOUsPicgVXN4MCKX0nyDM0UA= X-Received: by 2002:a9d:38e:0:b0:61c:7323:6202 with SMTP id f14-20020a9d038e000000b0061c73236202mr14777740otf.267.1658357213389; Wed, 20 Jul 2022 15:46:53 -0700 (PDT) MIME-Version: 1.0 References: <20220709134230.2397-1-santosh.shukla@amd.com> <20220709134230.2397-6-santosh.shukla@amd.com> In-Reply-To: From: Jim Mattson Date: Wed, 20 Jul 2022 15:46:42 -0700 Message-ID: Subject: Re: [PATCHv2 5/7] KVM: SVM: Add VNMI support in inject_nmi To: Sean Christopherson Cc: Santosh Shukla , Paolo Bonzini , Vitaly Kuznetsov , Joerg Roedel , Maxim Levitsky , Tom Lendacky , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 20, 2022 at 2:41 PM Sean Christopherson wrote: > > On Sat, Jul 09, 2022, Santosh Shukla wrote: > > Inject the NMI by setting V_NMI in the VMCB interrupt control. processor > > will clear V_NMI to acknowledge processing has started and will keep the > > V_NMI_MASK set until the processor is done with processing the NMI event. > > > > Signed-off-by: Santosh Shukla > > --- > > v2: > > - Added WARN_ON check for vnmi pending. > > - use `get_vnmi_vmcb` to get correct vmcb so to inject vnmi. > > > > arch/x86/kvm/svm/svm.c | 10 +++++++++- > > 1 file changed, 9 insertions(+), 1 deletion(-) > > > > diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c > > index 44c1f2317b45..c73a1809a7c7 100644 > > --- a/arch/x86/kvm/svm/svm.c > > +++ b/arch/x86/kvm/svm/svm.c > > @@ -3375,12 +3375,20 @@ static void pre_svm_run(struct kvm_vcpu *vcpu) > > static void svm_inject_nmi(struct kvm_vcpu *vcpu) > > { > > struct vcpu_svm *svm = to_svm(vcpu); > > + struct vmcb *vmcb = NULL; > > + > > + ++vcpu->stat.nmi_injections; > > + if (is_vnmi_enabled(svm)) { > > + vmcb = get_vnmi_vmcb(svm); > > + WARN_ON(vmcb->control.int_ctl & V_NMI_PENDING); > > Haven't read the spec, but based on the changelog I assume the flag doesn't get > cleared until the NMI is fully delivered. Ooh! Is there a spec to read now?!?