All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: "Kirill A. Shutemov" <kirill@shutemov.name>
Cc: Rik van Riel <riel@surriel.com>,
	linux-kernel@vger.kernel.org, kernel-team@meta.com,
	 dave.hansen@linux.intel.com, luto@kernel.org,
	peterz@infradead.org,  bp@alien8.de, x86@kernel.org,
	nadav.amit@gmail.com, tglx@linutronix.de,  mingo@kernel.org,
	Yu-cheng Yu <yu-cheng.yu@intel.com>
Subject: Re: [RFC PATCH v4 4/8] x86/apic: Introduce Remote Action Request Operations
Date: Thu, 26 Jun 2025 09:09:57 -0700	[thread overview]
Message-ID: <aF1w1RLgA9w7tRUg@google.com> (raw)
In-Reply-To: <mqeuxn4in7pscni5odii2qvzoils5ce3jdzvmp45w3bg462buj@4elenf2mxaro>

On Thu, Jun 26, 2025, Kirill A. Shutemov wrote:
> On Thu, Jun 19, 2025 at 04:03:56PM -0400, Rik van Riel wrote:
> > From: Yu-cheng Yu <yu-cheng.yu@intel.com>
> > 
> > RAR TLB flushing is started by sending a command to the APIC.
> > This patch adds Remote Action Request commands.
> > 
> > Because RAR_VECTOR is hardcoded at 0xe0, POSTED_MSI_NOTIFICATION_VECTOR
> > has to be lowered to 0xdf, reducing the number of available vectors by
> > 13.
> > 
> > [riel: refactor after 6 years of changes, lower POSTED_MSI_NOTIFICATION_VECTOR]
> 
> But why? Because it is used as FIRST_SYSTEM_VECTOR?

The Posted MSI Notifications vector should be the lowest of the system vectors
so that device IRQs are NOT prioritized over "real" system vectors.

> > Signed-off-by: Yu-cheng Yu <yu-cheng.yu@intel.com>
> > Signed-off-by: Rik van Riel <riel@surriel.com>
> > ---
> >  arch/x86/include/asm/apicdef.h     | 1 +
> >  arch/x86/include/asm/irq_vectors.h | 7 ++++++-
> >  arch/x86/include/asm/smp.h         | 1 +
> >  arch/x86/kernel/apic/ipi.c         | 5 +++++
> >  arch/x86/kernel/apic/local.h       | 3 +++
> >  5 files changed, 16 insertions(+), 1 deletion(-)
> > 
> > diff --git a/arch/x86/include/asm/apicdef.h b/arch/x86/include/asm/apicdef.h
> > index 094106b6a538..b152d45af91a 100644
> > --- a/arch/x86/include/asm/apicdef.h
> > +++ b/arch/x86/include/asm/apicdef.h
> > @@ -92,6 +92,7 @@
> >  #define		APIC_DM_LOWEST		0x00100
> >  #define		APIC_DM_SMI		0x00200
> >  #define		APIC_DM_REMRD		0x00300
> > +#define		APIC_DM_RAR		0x00300
> 
> Hm. Do we conflict with APIC_DM_REMRD here?

Yes and no.  Yes, it literally conflicts, but it's easy enough to define the behavior
of APIC_DM_{REMRD,RAR} based on feature support.  E.g. KVM is likely going to add
support for Remote Read, which would conflict with KVM's bastardization of
APIC_DM_REMRD for PV kicks.  But as Paolo pointed out[*], KVM's PV unhalt/kick
can simply be gated on KVM_FEATURE_PV_UNHALT.  Any code that cares should be able
to do the same thing for RAR.  E.g. KVM's code could end up being something like:

	case APIC_DM_REMRD:
		if (guest_pv_has(vcpu, KVM_FEATURE_PV_UNHALT)) {
			result = 1;
			vcpu->arch.pv.pv_unhalted = 1;
			kvm_make_request(KVM_REQ_EVENT, vcpu);
			kvm_vcpu_kick(vcpu);
		} else if (guest_has_rar(vcpu)) {
			<magic!>
		} else {
			<emulate legacy Remote Read>;
		}
		break;

For the kernel itself, there's nothing to do, because Linux doesn't use Remote Read.

[*] https://lore.kernel.org/all/CABgObfadZZ5sXYB0xR5OcLDw_eVUmXTOTFSWkVpkgiCJmNnFRQ@mail.gmail.com

  reply	other threads:[~2025-06-26 16:09 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-19 20:03 [RFC PATCH v4 0/8] Intel RAR TLB invalidation Rik van Riel
2025-06-19 20:03 ` [RFC PATCH v4 1/8] x86/mm: Introduce Remote Action Request MSRs Rik van Riel
2025-06-19 20:03 ` [RFC PATCH v4 2/8] x86/mm: enable BROADCAST_TLB_FLUSH on Intel, too Rik van Riel
2025-06-26 13:08   ` Kirill A. Shutemov
2025-06-19 20:03 ` [RFC PATCH v4 3/8] x86/mm: Introduce X86_FEATURE_RAR Rik van Riel
2025-06-19 20:03 ` [RFC PATCH v4 4/8] x86/apic: Introduce Remote Action Request Operations Rik van Riel
2025-06-26 13:20   ` Kirill A. Shutemov
2025-06-26 16:09     ` Sean Christopherson [this message]
2025-06-19 20:03 ` [RFC PATCH v4 5/8] x86/mm: Introduce Remote Action Request Rik van Riel
2025-06-19 23:01   ` Nadav Amit
2025-06-20  1:10     ` Rik van Riel
2025-06-20 15:27       ` Sean Christopherson
2025-06-20 21:24       ` Nadav Amit
2025-06-23 10:50       ` David Laight
2025-06-20 15:05   ` kernel test robot
2025-06-26 15:41   ` Kirill A. Shutemov
2025-06-26 15:54     ` Kirill A. Shutemov
2025-06-19 20:03 ` [RFC PATCH v4 6/8] x86/mm: use RAR for kernel TLB flushes Rik van Riel
2025-06-27 13:27   ` Kirill A. Shutemov
2025-06-29  1:30     ` Rik van Riel
2025-06-19 20:03 ` [RFC PATCH v4 7/8] x86/mm: userspace & pageout flushing using Intel RAR Rik van Riel
2025-06-19 20:04 ` [RFC PATCH v4 8/8] x86/tlb: flush the local TLB twice (DEBUG) Rik van Riel
2025-06-26 18:08 ` [RFC PATCH v4 0/8] Intel RAR TLB invalidation Dave Jiang

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=aF1w1RLgA9w7tRUg@google.com \
    --to=seanjc@google.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=kernel-team@meta.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=mingo@kernel.org \
    --cc=nadav.amit@gmail.com \
    --cc=peterz@infradead.org \
    --cc=riel@surriel.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yu-cheng.yu@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.