From: Sean Christopherson <seanjc@google.com>
To: Jacob Pan <jacob.jun.pan@linux.intel.com>
Cc: X86 Kernel <x86@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Dave Hansen <dave.hansen@intel.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
Borislav Petkov <bp@alien8.de>, Xin Li <xin3.li@intel.com>,
linux-perf-users@vger.kernel.org,
Peter Zijlstra <peterz@infradead.org>,
Paolo Bonzini <pbonzini@redhat.com>,
Tony Luck <tony.luck@intel.com>,
Andy Lutomirski <luto@kernel.org>,
acme@kernel.org, kan.liang@linux.intel.com,
Andi Kleen <andi.kleen@intel.com>,
Nikolay Borisov <nik.borisov@suse.com>,
Sohil Mehta <sohil.mehta@intel.com>,
Zeng Guang <guang.zeng@intel.com>
Subject: Re: [PATCH v4 11/11] KVM: X86: Use common code for PV IPIs in linux guest
Date: Fri, 16 Aug 2024 06:52:00 -0700 [thread overview]
Message-ID: <Zr9ZgDIhUEzUlOFa@google.com> (raw)
In-Reply-To: <20240709143906.1040477-12-jacob.jun.pan@linux.intel.com>
"x86/kvm:" for the scope. "KVM: x86:" is for host-side KVM, this is guest code.
On Tue, Jul 09, 2024, Jacob Pan wrote:
> The paravirtual APIC hooks in KVM, some of which are used for sending PV
> IPIs, can reuse common code for ICR preparation. This shared code also
> encompasses NMI-source reporting when in effect.
Please state what the patch actually does, not what it can do. For folks that
aren't intimately familiar with FRED (read: me), that second sentence in particular
is wildly unhelpful. I had to download yet another version of the FRED spec, and
decipher the poorly documented software-defined encoding scheme introduced by this
series just to understand what this patch does.
And the order of patches in this series is broken. Overloading the vector *before*
switching the PV IPI code to __prepare_ICR() will result in KVM sending garbage
to the host. I.e. _all_ IPI implementations need to be made safe before the NMI
source reporting code can be introduced.
> Originally-by: Zeng Guang <guang.zeng@intel.com>
> Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
> ---
> v4: Refine comments, no functional change.
> ---
> arch/x86/kernel/kvm.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
> index 263f8aed4e2c..a45d60aa0302 100644
> --- a/arch/x86/kernel/kvm.c
> +++ b/arch/x86/kernel/kvm.c
> @@ -516,15 +516,7 @@ static void __send_ipi_mask(const struct cpumask *mask, int vector)
>
> local_irq_save(flags);
>
> - switch (vector) {
> - default:
> - icr = APIC_DM_FIXED | vector;
> - break;
> - case NMI_VECTOR:
> - icr = APIC_DM_NMI;
> - break;
> - }
> -
> + icr = __prepare_ICR(0, vector, 0);
Rather than force KVM to throw in junk dest+shorthand, what about adding a
__prepare_ICR_vector()? Then KVM doesn't need to arbitrarily pass zeroes, and
even __prepare_ICR() itself benefits (IMO), e.g. this is nice and easy to read:
static inline unsigned int __prepare_ICR(unsigned int shortcut, int vector,
unsigned int dest)
{
return shortcut | dest | __prepare_ICR_vector(vector);
}
prev parent reply other threads:[~2024-08-16 13:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-09 14:38 [PATCH v4 00/11] Add support for NMI-source reporting Jacob Pan
2024-07-09 14:38 ` [PATCH v4 01/11] x86/irq: Add enumeration of NMI source reporting CPU feature Jacob Pan
2024-07-09 14:38 ` [PATCH v4 02/11] x86/irq: Define NMI source vectors Jacob Pan
2024-07-09 14:38 ` [PATCH v4 03/11] x86/irq: Extend NMI handler registration interface to include source Jacob Pan
2024-07-09 14:38 ` [PATCH v4 04/11] x86/irq: Factor out common NMI handling code Jacob Pan
2024-07-09 14:39 ` [PATCH v4 05/11] x86/irq: Process nmi sources in NMI handler Jacob Pan
2024-07-09 14:39 ` [PATCH v4 06/11] KVM: VMX: Expand FRED kvm entry with event data Jacob Pan
2024-08-16 14:12 ` Sean Christopherson
2024-07-09 14:39 ` [PATCH v4 07/11] KVM: VMX: Handle NMI Source report in VM exit Jacob Pan
2024-08-16 14:05 ` Sean Christopherson
2024-07-09 14:39 ` [PATCH v4 08/11] perf/x86: Enable NMI source reporting for perfmon Jacob Pan
2024-07-09 15:04 ` Liang, Kan
2024-07-09 14:39 ` [PATCH v4 09/11] x86/irq: Enable NMI source on IPIs delivered as NMI Jacob Pan
2024-08-16 13:45 ` Sean Christopherson
2024-07-09 14:39 ` [PATCH v4 10/11] x86/irq: Move __prepare_ICR to x86 common header Jacob Pan
2024-07-09 14:39 ` [PATCH v4 11/11] KVM: X86: Use common code for PV IPIs in linux guest Jacob Pan
2024-08-16 13:52 ` Sean Christopherson [this message]
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=Zr9ZgDIhUEzUlOFa@google.com \
--to=seanjc@google.com \
--cc=acme@kernel.org \
--cc=andi.kleen@intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@intel.com \
--cc=guang.zeng@intel.com \
--cc=hpa@zytor.com \
--cc=jacob.jun.pan@linux.intel.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=nik.borisov@suse.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=sohil.mehta@intel.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=xin3.li@intel.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.