From: Sean Christopherson <seanjc@google.com>
To: Jim Mattson <jmattson@google.com>
Cc: Sandipan Das <sandipan.das@amd.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
pbonzini@redhat.com, tglx@linutronix.de, mingo@redhat.com,
bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
hpa@zytor.com, mlevitsk@redhat.com, vkuznets@redhat.com,
mizhang@google.com, tao1.su@linux.intel.com,
andriy.shevchenko@linux.intel.com, ravi.bangoria@amd.com,
ananth.narayan@amd.com, nikunj.dadhania@amd.com,
santosh.shukla@amd.com, manali.shukla@amd.com
Subject: Re: [PATCH] KVM: x86: Do not mask LVTPC when handling a PMI on AMD platforms
Date: Mon, 4 Mar 2024 12:49:51 -0800 [thread overview]
Message-ID: <ZeYz7zPGcIQSH_NI@google.com> (raw)
In-Reply-To: <CALMp9eRbOQpVsKkZ9N1VYTyOrKPWCmvi0B5WZCFXAPsSkShmEA@mail.gmail.com>
On Fri, Mar 01, 2024, Jim Mattson wrote:
> On Thu, Feb 29, 2024 at 11:44 PM Sandipan Das <sandipan.das@amd.com> wrote:
> >
> > On AMD and Hygon platforms, the local APIC does not automatically set
> > the mask bit of the LVTPC register when handling a PMI and there is
> > no need to clear it in the kernel's PMI handler.
>
> I don't know why it didn't occur to me that different x86 vendors
> wouldn't agree on this specification. :)
Because you're sane? :-D
> > diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
> > index 3242f3da2457..0959a887c306 100644
> > --- a/arch/x86/kvm/lapic.c
> > +++ b/arch/x86/kvm/lapic.c
> > @@ -2768,7 +2768,7 @@ int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type)
> > trig_mode = reg & APIC_LVT_LEVEL_TRIGGER;
> >
> > r = __apic_accept_irq(apic, mode, vector, 1, trig_mode, NULL);
> > - if (r && lvt_type == APIC_LVTPC)
> > + if (r && lvt_type == APIC_LVTPC && !guest_cpuid_is_amd_or_hygon(apic->vcpu))
>
> Perhaps we could use a positive predicate instead:
> guest_cpuid_is_intel(apic->vcpu)?
AFAICT, Zhaoxin follows intel behavior, so we'd theoretically have to allow for
that too. The many checks of guest_cpuid_is_intel() in KVM suggest that no one
actually cares about about correctly virtualizing Zhaoxin CPUs, but it's an easy
enough problem to solve.
I'm also very tempted to say KVM should cache the Intel vs. AMD vCPU model. E.g.
if userspace does something weird with guest CPUID and puts CPUID.0x0 somewhere
other than the zeroth entry, KVM's linear walk to find a CPUID entry will make
this a pretty slow lookup.
Then we could also encapsulate the gory details for Intel vs. Zhaoxin vs. Centaur,
and AMD vs. Hygon, e.g.
if (r && lvt_type == APIC_LVTPC &&
apic->vcpu->arch.is_model_intel_compatible)
next prev parent reply other threads:[~2024-03-04 20:49 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-01 7:44 [PATCH] KVM: x86: Do not mask LVTPC when handling a PMI on AMD platforms Sandipan Das
2024-03-01 19:24 ` Jim Mattson
2024-03-04 20:49 ` Sean Christopherson [this message]
2024-03-07 5:39 ` Sandipan Das
2024-03-07 18:35 ` Sean Christopherson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZeYz7zPGcIQSH_NI@google.com \
--to=seanjc@google.com \
--cc=ananth.narayan@amd.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jmattson@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=manali.shukla@amd.com \
--cc=mingo@redhat.com \
--cc=mizhang@google.com \
--cc=mlevitsk@redhat.com \
--cc=nikunj.dadhania@amd.com \
--cc=pbonzini@redhat.com \
--cc=ravi.bangoria@amd.com \
--cc=sandipan.das@amd.com \
--cc=santosh.shukla@amd.com \
--cc=tao1.su@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=vkuznets@redhat.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox