]> Gentwo Git Trees - linux/.git/commitdiff
Merge tag 'kvmarm-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm...
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Dec 2025 17:36:26 +0000 (18:36 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Dec 2025 17:36:26 +0000 (18:36 +0100)
KVM/arm64 updates for 6.19

 - Support for userspace handling of synchronous external aborts (SEAs),
   allowing the VMM to potentially handle the abort in a non-fatal
   manner.

 - Large rework of the VGIC's list register handling with the goal of
   supporting more active/pending IRQs than available list registers in
   hardware. In addition, the VGIC now supports EOImode==1 style
   deactivations for IRQs which may occur on a separate vCPU than the
   one that acked the IRQ.

 - Support for FEAT_XNX (user / privileged execute permissions) and
   FEAT_HAF (hardware update to the Access Flag) in the software page
   table walkers and shadow MMU.

 - Allow page table destruction to reschedule, fixing long need_resched
   latencies observed when destroying a large VM.

 - Minor fixes to KVM and selftests

12 files changed:
1  2 
Documentation/virt/kvm/api.rst
arch/arm64/kernel/cpufeature.c
arch/arm64/kvm/arm.c
arch/arm64/kvm/sys_regs.c
arch/arm64/kvm/vgic/vgic-init.c
arch/arm64/kvm/vgic/vgic-v3.c
arch/arm64/kvm/vgic/vgic.c
tools/testing/selftests/kvm/Makefile.kvm
tools/testing/selftests/kvm/arm64/vgic_irq.c
tools/testing/selftests/kvm/include/kvm_util.h
tools/testing/selftests/kvm/lib/arm64/gic_v3_its.c
tools/testing/selftests/kvm/lib/kvm_util.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 2f75ef14d3399992f79f58a238ee014d81049b43,968aa9d89be6352fd28c5d17e1fb38ffefda26d7..1d6dd1b545bdd6cebf5f738c9aa8e29bdcea58a5
@@@ -301,21 -507,9 +507,10 @@@ void vcpu_set_ich_hcr(struct kvm_vcpu *
                return;
  
        /* Hide GICv3 sysreg if necessary */
 -      if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2)
 +      if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V2 ||
-           !irqchip_in_kernel(vcpu->kvm)) {
++          !irqchip_in_kernel(vcpu->kvm))
                vgic_v3->vgic_hcr |= (ICH_HCR_EL2_TALL0 | ICH_HCR_EL2_TALL1 |
                                      ICH_HCR_EL2_TC);
-               return;
-       }
-       if (group0_trap)
-               vgic_v3->vgic_hcr |= ICH_HCR_EL2_TALL0;
-       if (group1_trap)
-               vgic_v3->vgic_hcr |= ICH_HCR_EL2_TALL1;
-       if (common_trap)
-               vgic_v3->vgic_hcr |= ICH_HCR_EL2_TC;
-       if (dir_trap)
-               vgic_v3->vgic_hcr |= ICH_HCR_EL2_TDIR;
  }
  
  int vgic_v3_lpi_sync_pending_status(struct kvm *kvm, struct vgic_irq *irq)
Simple merge