linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] KVM: arm64: Finalize ID registers only once per VM
@ 2025-11-10 17:30 Marc Zyngier
  2025-11-11 12:04 ` Mark Brown
  2025-11-11 12:25 ` Marc Zyngier
  0 siblings, 2 replies; 3+ messages in thread
From: Marc Zyngier @ 2025-11-10 17:30 UTC (permalink / raw)
  To: kvmarm, linux-arm-kernel, kvm
  Cc: Joey Gouly, Suzuki K Poulose, Oliver Upton, Zenghui Yu,
	Mark Brown

Owing to the ID registers being global to the VM, there is no point
in computing them more than once.  However, recent changes making
use of kvm_set_vm_id_reg() outlined that we repeatedly hammer
the ID registers when we shouldn't.

Gate the ID reg update on the VM having never run.

Fixes: 50e7cce81b9b2 ("KVM: arm64: Limit clearing of ID_{AA64PFR0,PFR1}_EL1.GIC to userspace irqchip")
Fixes: 5cb57a1aff755 ("KVM: arm64: Zero ID_AA64PFR0_EL1.GIC when no GICv3 is presented to the guest")
Closes: https://lore.kernel.org/r/aRHf6x5umkTYhYJ3@finisterre.sirena.org.uk
Reported-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
---
 arch/arm64/kvm/sys_regs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index 3bf7005258f07..19afcd833d6fa 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -5624,7 +5624,11 @@ int kvm_finalize_sys_regs(struct kvm_vcpu *vcpu)
 
 	guard(mutex)(&kvm->arch.config_lock);
 
-	if (!irqchip_in_kernel(kvm)) {
+	/*
+	 * This hacks into the ID registers, so only perform it when the
+	 * first vcpu runs, or the kvm_set_vm_id_reg() helper will scream.
+	 */
+	if (!irqchip_in_kernel(kvm) && !kvm_vm_has_ran_once(kvm)) {
 		u64 val;
 
 		val = kvm_read_vm_id_reg(kvm, SYS_ID_AA64PFR0_EL1) & ~ID_AA64PFR0_EL1_GIC;
-- 
2.47.3



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: arm64: Finalize ID registers only once per VM
  2025-11-10 17:30 [PATCH] KVM: arm64: Finalize ID registers only once per VM Marc Zyngier
@ 2025-11-11 12:04 ` Mark Brown
  2025-11-11 12:25 ` Marc Zyngier
  1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2025-11-11 12:04 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: kvmarm, linux-arm-kernel, kvm, Joey Gouly, Suzuki K Poulose,
	Oliver Upton, Zenghui Yu

[-- Attachment #1: Type: text/plain, Size: 462 bytes --]

On Mon, Nov 10, 2025 at 05:30:10PM +0000, Marc Zyngier wrote:
> Owing to the ID registers being global to the VM, there is no point
> in computing them more than once.  However, recent changes making
> use of kvm_set_vm_id_reg() outlined that we repeatedly hammer
> the ID registers when we shouldn't.
> 
> Gate the ID reg update on the VM having never run.

This resolves all the test issues I was seeing:

Tested-by: Mark Brown <broonie@kernel.org>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] KVM: arm64: Finalize ID registers only once per VM
  2025-11-10 17:30 [PATCH] KVM: arm64: Finalize ID registers only once per VM Marc Zyngier
  2025-11-11 12:04 ` Mark Brown
@ 2025-11-11 12:25 ` Marc Zyngier
  1 sibling, 0 replies; 3+ messages in thread
From: Marc Zyngier @ 2025-11-11 12:25 UTC (permalink / raw)
  To: kvmarm, linux-arm-kernel, kvm, Marc Zyngier
  Cc: Joey Gouly, Suzuki K Poulose, Oliver Upton, Zenghui Yu,
	Mark Brown

On Mon, 10 Nov 2025 17:30:10 +0000, Marc Zyngier wrote:
> Owing to the ID registers being global to the VM, there is no point
> in computing them more than once.  However, recent changes making
> use of kvm_set_vm_id_reg() outlined that we repeatedly hammer
> the ID registers when we shouldn't.
> 
> Gate the ID reg update on the VM having never run.
> 
> [...]

Applied to fixes, thanks!

[1/1] KVM: arm64: Finalize ID registers only once per VM
      commit: 0f559cd91e37b7978e4198ca2fbf7eb95df11361

Cheers,

	M.
-- 
Without deviation from the norm, progress is not possible.




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-11-11 12:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-10 17:30 [PATCH] KVM: arm64: Finalize ID registers only once per VM Marc Zyngier
2025-11-11 12:04 ` Mark Brown
2025-11-11 12:25 ` Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).