Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp1604077rdh; Mon, 25 Sep 2023 19:32:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG3jgQIwjSukVHT7UPCmrDghsCm3oNUXfftadLcyAn4IMPmkp+xCkDKcA0WnYRxvBVsuUC7 X-Received: by 2002:a05:6a00:c86:b0:690:2ecd:a599 with SMTP id a6-20020a056a000c8600b006902ecda599mr7115110pfv.21.1695695574581; Mon, 25 Sep 2023 19:32:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695695574; cv=none; d=google.com; s=arc-20160816; b=jvfg3KYwsXS/SDHUUZySC9foESTO8IFPQRMEI60OYDE70zXpHFs1//f1kdIge9Hu5J K2/td22obZSxciM1paHu4u4wRw0R5y3TWSQtC5fEtCycA8k6p9dknfd6wu5aZWhFYfXT sbOC6oyrKpCMd+FFvlIKOn9D1b0CWf+vjCeyhQbfkYgnhLRvpm5vGyFdSC8JhOQLW075 btFYbmx645IF23LVv9ELUiMODRzh3qZK/YwwsRDiZdryz6QhkmAHXnyqmbr00WfkAvNs tQlzqAdL1uKzr2aR3QtE62pdzJExhA9ff8HhIhySaIT02m1xY+emkKd9HwJ9GtUk95CG ZoBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=Mnh3O7m7W6nR87RF4zMqQvhpvq8Z7yUQbT+7w28c04o=; fh=ygPMkKkGcAV9ZsiwA/4QyZMlTUsi3s0nJGQhapWOI2k=; b=RK09QOH/ooVnb1GfanmR38FzUs6R+xR02kR8MGM6QtV/o/Nq3IngRfYfFw1IQ7b29N bf1pzU5qLszSvlfznu/HlVIfH0VhLTlg5pCOoc5tAHScPpMST2aw3vWLlawRCS92ehFb GSCp+33vbkYDmeLXWbp1JpqilD3aO8YAaNRtVQWv8zyufjoV1v9bx4O2vu811QwnOngL vMkIDo7aXkP44NXesHeAyVWJJU+12CKkRRlrkGAnGD0J0P/9VzfwiQ62+pX7yq3G50T+ 6Juzqr3BvXbsyLSeqikIu/ag814MIfrlwy7LR3Q7gAzkwsvpZFg+t8vO+JilksRW9TAS hiCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=b3zQmM8g; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id y15-20020a056a00190f00b00690fa7ab059si11943205pfi.277.2023.09.25.19.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Sep 2023 19:32:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=b3zQmM8g; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 928EA8045955; Mon, 25 Sep 2023 12:35:13 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233315AbjIYTfP (ORCPT + 99 others); Mon, 25 Sep 2023 15:35:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37348 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233306AbjIYTfO (ORCPT ); Mon, 25 Sep 2023 15:35:14 -0400 Received: from mail-qv1-xf2f.google.com (mail-qv1-xf2f.google.com [IPv6:2607:f8b0:4864:20::f2f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC24410C for ; Mon, 25 Sep 2023 12:35:05 -0700 (PDT) Received: by mail-qv1-xf2f.google.com with SMTP id 6a1803df08f44-65b05a45046so18506746d6.2 for ; Mon, 25 Sep 2023 12:35:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1695670505; x=1696275305; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Mnh3O7m7W6nR87RF4zMqQvhpvq8Z7yUQbT+7w28c04o=; b=b3zQmM8gxDtRP6zeMLQgOeMZ3eSkwU/ORZUdOaEfVtAmv67h5O/8JCM7xs2L/W80mI On8jIRKXR3uuSaCEDC9cxcvysQ/+bl6nL3AJXkICWQ+N6B55xUVS502grqznMvAaOg1n LuNAxA5HAa339YXhcCtlCwvz15h/O/Hr9r+3AEYC4wHD8ZRQ18duHZ5no8dnSvhySjiF Q0Q5FcQ+fXvnVmqEWu9kFCklqN3Vs4mLg/jNceC5HLNmWS6ghRSRJ3bFk9qofNFw1zyx wZi07NT7mAZESczb12h5PA13hDNat65PC5U0NVxrIEMP3XTd2JcLajUEKcdyzYyOdZMX xwNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695670505; x=1696275305; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Mnh3O7m7W6nR87RF4zMqQvhpvq8Z7yUQbT+7w28c04o=; b=lPr3UaZqSPjpNz/rKfqaCPVuxdwc3VQVwnNJkiBViUYBmHPuQQSLNOZYo5ABNnUY0T jgeIJifU6qCuwIZvTFquGdQKZ+mRtLXLWMjYIB4gJkm5eo0cddWq4L/OQLf876F+zKwr HNAryqEsMyxbJXJ0u43RR9CTe3vI8HV4Q3mWM+iCaTBvF6/s7bB31Xf7CoISoRjdjvZ9 bRvqjLNkT1C9hLOPEb5C//NLprzfdQwqlpCzaP7s9TAGPfThnGm3VxHliwU0+8U8XX7D CCRYF8D7/MpcfR/9yEGty2VSwEn23i9KKmGUXcoJdjGBSn0Zve/8HaYkJ/0k7UULa7I5 NLOg== X-Gm-Message-State: AOJu0Yw9a7GgNH6b1oHhRTb8sa6ItTxA9tlaLWO9wUERgFgedJaJoRak tsC8rAZSYfUpWMLW6ar3/hT4ZoICo48N6vgYkXfO4g== X-Received: by 2002:a05:6214:33c7:b0:658:3af3:3d9a with SMTP id mw7-20020a05621433c700b006583af33d9amr7933187qvb.1.1695670504618; Mon, 25 Sep 2023 12:35:04 -0700 (PDT) MIME-Version: 1.0 References: <20230925173448.3518223-1-mizhang@google.com> <20230925173448.3518223-3-mizhang@google.com> In-Reply-To: From: Mingwei Zhang Date: Mon, 25 Sep 2023 12:34:28 -0700 Message-ID: Subject: Re: [PATCH 2/2] KVM: x86: Mask LVTPC when handling a PMI To: Sean Christopherson Cc: Paolo Bonzini , "H. Peter Anvin" , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Jim Mattson , Dapeng Mi , Like Xu , Roman Kagan , Kan Liang , Dapeng1 Mi Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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_BLOCKED,SPF_HELO_NONE,SPF_PASS, 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 25 Sep 2023 12:35:13 -0700 (PDT) On Mon, Sep 25, 2023 at 10:52=E2=80=AFAM Sean Christopherson wrote: > > On Mon, Sep 25, 2023, Mingwei Zhang wrote: > > From: Jim Mattson > > > > Per the SDM, "When the local APIC handles a performance-monitoring > > counters interrupt, it automatically sets the mask flag in the LVT > > performance counter register." > > > > Add this behavior to KVM's local APIC emulation, to reduce the > > incidence of "dazed and confused" spurious NMI warnings in Linux > > guests (at least, those that use a PMI handler with "late_ack"). > > > > Fixes: 23930f9521c9 ("KVM: x86: Enable NMI Watchdog via in-kernel PIT s= ource") > > This Fixes is wrong. Prior to commit f5132b01386b ("KVM: Expose a versio= n 2 > architectural PMU to a guests"), KVM didn't ever deliver interrupts via t= he LVTPC > entry. E.g. prior to that commit, the only reference to APIC_LVTPC is in > kvm_lapic_reg_write: > > arch/x86/kvm $ git grep APIC_LVTPC f5132b01386b^ > f5132b01386b^:lapic.c: case APIC_LVTPC: > > Commit 23930f9521c9 definitely set the PMU support up to fail, but the bu= g would > never have existed if kvm_deliver_pmi() had been written as: > > void kvm_deliver_pmi(struct kvm_vcpu *vcpu) > { > struct kvm_lapic *apic =3D vcpu->arch.apic; > > if (apic && kvm_apic_local_deliver(apic, APIC_LVTPC)) > kvm_lapic_set_reg(apic, APIC_LVTPC, > kvm_lapic_get_reg(apic, LVTPC) | APIC_L= VT_MASKED); > } > > And this needs an explicit Cc: to stable because KVM opts out of AUTOSEL. > > So > > Fixes: f5132b01386b ("KVM: Expose a version 2 architectural PMU to a gu= ests") > Cc: stable@vger.kernel.org > > > Signed-off-by: Jim Mattson > > Tested-by: Mingwei Zhang > > When posting patches on behalf of others, you need to provide your SoB. > > > --- > > arch/x86/kvm/lapic.c | 8 ++++++-- > > 1 file changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c > > index 113ca9661ab2..1f3d56a1f45f 100644 > > --- a/arch/x86/kvm/lapic.c > > +++ b/arch/x86/kvm/lapic.c > > @@ -2729,13 +2729,17 @@ int kvm_apic_local_deliver(struct kvm_lapic *ap= ic, int lvt_type) > > { > > u32 reg =3D kvm_lapic_get_reg(apic, lvt_type); > > int vector, mode, trig_mode; > > + int r; > > > > if (kvm_apic_hw_enabled(apic) && !(reg & APIC_LVT_MASKED)) { > > vector =3D reg & APIC_VECTOR_MASK; > > mode =3D reg & APIC_MODE_MASK; > > trig_mode =3D reg & APIC_LVT_LEVEL_TRIGGER; > > - return __apic_accept_irq(apic, mode, vector, 1, trig_mode= , > > - NULL); > > + > > + r =3D __apic_accept_irq(apic, mode, vector, 1, trig_mode,= NULL); > > + if (r && lvt_type =3D=3D APIC_LVTPC) > > + kvm_lapic_set_reg(apic, lvt_type, reg | APIC_LVT_= MASKED); > > Belated feedback, I think I'd prefer to write this as > > kvm_lapic_set_reg(apic, APIC_LVTPC, reg | APIC_LV= T_MASKED); > > so that this code will show up when searching for APIC_LVTPC. > > > + return r; > > } > > return 0; > > } > > -- > > 2.42.0.515.g380fc7ccd1-goog > > Signed-off-by: Mingwei Zhang