Thread (72 messages) 72 messages, 5 authors, 2026-01-13

Re: [RFC PATCH v6 03/35] KVM: arm64: Add CONFIG_KVM_ARM_SPE Kconfig option

From: James Clark <james.clark@linaro.org>
Date: 2026-01-12 12:09:31
Also in: kvmarm


On 12/01/2026 11:26 am, Alexandru Elisei wrote:
Hi James,

On Fri, Jan 09, 2026 at 04:29:50PM +0000, James Clark wrote:
quoted

On 14/11/2025 4:06 pm, Alexandru Elisei wrote:
quoted
Add a new configuration option that will be used for KVM SPE emulation.
CONFIG_KVM_ARM_SPE depends on the SPE driver being builtin because:

1. The SPE driver maintains a cpumask of physical CPUs that support SPE,
     and that will be used by KVM to emulate SPE on heterogeneous systems.

2. KVM will rely on the SPE driver enabling the SPE interrupt at the GIC
     level.

Signed-off-by: Alexandru Elisei <redacted>
---
   arch/arm64/kvm/Kconfig | 8 ++++++++
   1 file changed, 8 insertions(+)
diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig
index 4f803fd1c99a..31388b5b2655 100644
--- a/arch/arm64/kvm/Kconfig
+++ b/arch/arm64/kvm/Kconfig
@@ -83,4 +83,12 @@ config PTDUMP_STAGE2_DEBUGFS
   	  If in doubt, say N.
+config KVM_ARM_SPE
+	bool
+	depends on KVM && ARM_SPE_PMU=y
I think the most common configuration is module, so requiring built-in isn't
great. If there's any way of avoiding it, even if it costs a little bit of
pain, it would be good for adoption.
I'm not sure how that could be done. You need the buffer maintenance interrupt
to do a VM exit so KVM can inject the virtual interrupt back into the guest,
otherwise there's a possibility of a large blackout window when the buffer is
full.
Without expanding more I don't see how injecting an interrupt is 
strongly related to the way it's compiled.
The code also relies on the SPE driver to probe all the SPUs in the system.
I don't think that's a hard requirement either, the KVM code could 
fairly easily do this itself. Inline the common code and put it in a 
shared header etc. I'm sure there are lots of creative ways to flip the 
dependencies that might not be "proper" software engineering. But like I 
said a bit of pain here might be beneficial overall.
quoted
It was basically the first thing I got stuck on trying to get it to work. Or
if it really can't be done, maybe some kind of debug message to say why
enabling failed.
When you search for the symbol in menuconfig you get a list of the symbols it
depends on.
Right, but that doesn't address the problems of adoption at all.

Having it on by default when SPE and KVM are already enabled in their 
default configs is the difference between people being able to use this 
with zero friction vs 200 people all getting stuck and then coming to 
ask me why it's not working and distros having to update SPE from being 
a module to static.
Thanks,
Alex

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help