Kernel KVM virtualization development
 help / color / mirror / Atom feed
* [GIT PULL] KVM/arm64 updates for Linux 7.4
@ 2026-10-14 16:21 Marc Zyngier
  2026-10-14 16:30 ` Paolo Bonzini
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Zyngier @ 2026-10-14 16:21 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Amit Machhiwal, Catalin Marinas, Colton Lewis, Eric Auger,
	Fuad Tabba, Gautam Menghani, Gavin Shan, Gokul K, Hemanth Selam,
	Hiroyuki Katsura, Itaru Kitayama, Jack Thomson, Jiaqi Yan,
	Joey Gouly, Jonathan Cameron, Jonathan Davies, Karl Mehltretter,
	Leonardo Bras, Like Xu, Lorenzo Stoakes, Mark Brown,
	Nina Schoetterl-Glausch, Oliver Upton, Randy Dunlap,
	Sascha Bischoff, Sean Christopherson, Sebastian Ene,
	Sebastian Ott, Shen Yongchao, Shuai Xue, Stefan Teodorescu,
	Steffen Eiden, Steven Price, Steven Rostedt, Suzuki K Poulose,
	Tharit Tangkijwanichakul, Vincent Donnefort, Wang Han,
	Wei-Lin Chang, Will Deacon, Yuan Yao, Zenghui Yu, Zenghui Yu,
	kvmarm, linux-arm-kernel, kvm

Paolo,

Here's the set of KVM/arm64 updates for 7.4. After a couple of
releases mostly focused on mopping the AI wave, we're back to merging
new code, and there is a lot of it. Given the size and the conflicts
that this generates (see below), I've decided to send the pull request
early.

Details are as usual in the tag below, but there is a few things to
call out:

- a lot of pKVM updates, finally delivering on the isolation promises,
  thanks to Fuad's work on upstreaming this stuff.

- the first stab at sharing code with s390... More fun to come, but
  that's a start

- More GICv5 code. As always with the GIC, it is huge... But for once,
  the code is much simpler than the previous iterations, and also
  comes with a bunch of selftests from the beginning.

As a consequence, the diffstat is a gold-plated pig.

Things to note:

- this drags the kvmarm-fixes-7.3-1 tag as a way to resolve bad
  conflicts with some of the patches

- there is some additional conflicts with 7.3-rc6, due to
  kvmarm-fixes-7.3-2 landing a bit late. I have stashed a resolution
  here [1], which you can either apply if you're basing the merge on
  -rc6, or mention to Linus as you send your own PR. For everybody to
  enjoy, I also add the resolution at the end of this email.

Please pull,

	M.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/log/?h=next-7.4%2bfixes-7.3-2


The following changes since commit fd73f4a6659897191fa0d40695fe370925dd3780:

  Linux 7.3-rc3 (2026-09-13 14:38:02 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git kvmarm-7.4

for you to fetch changes up to dd0bc00e3e9201fd49b62ff9cc07890c89003afe:

  Merge branch kvm-arm64/cca-7.4 into kvmarm-master/next (2026-10-11 11:03:27 +0100)

----------------------------------------------------------------
KVM/arm64 updates for 7.4

* New features

  - pKVM state isolation: years after pKVM started being enabled
    upstream, we finally get the basics in the form of state
    isolation. The vcpu state is now off-limit for the host for
    protected VMs.

  - pKVM also grows a hypervisor-private memory allocator, allowing it
    to deal with sub-page allocation, much like everywhere else.

  - pKVM also lands a trace_printk() equivalent, which hopefully will
    make debugging a bit easier.

  - First shot at annotating portions of the KVM/arm64 code to be
    extracted and built on s390. The real fun is yet to come.

  - Allow pre-faulting of stage-2 canonical mappings from userspace,
    joining x86 and s390 in implementing this feature.

  - Add a reverse mapping infrastructure for shadow stage-2,
    significantly improving performance when MMU notifiers kick in,
    and avoiding full unmap of all shadow tables for this VM.

  - Next step of GICv5 enablement, adding support for the IRS block,
    and providing both SPI and LPI support.  This is the first point
    where KVM/arm64 can support an SMP GICv5 guest.

* Improvements

  - As a preliminary to eventually enabling CCA, add a bunch of
    infrastructure to KVM/arm64, splitting some of the basic
    operations into individual backends (normal VM, normal pKVM VM,
    protected pKVM VM). This allows CCA to later slot in without
    polluting the rest of KVM with its firmware-driven nonsense.

  - Make ID registers immutable from the point where a vcpu is able
    to run, even if it fails to run. This prevents KVM from sampling
    untrusted values.

  - Restore some type checking to the EL2 object. KVM/arm64 originally
    had some strong type checking between the kernel and the EL2
    object, but lost it along the way when the private hypercall
    interface was (somewhat pointlessly) converted to SMCCC. Type
    checking is back, syscall style, and with added sparse goodies.

  - Expand the FFA support to FFA_NOTIFICATION_*, and add some
    sanitisation of the protocol that pKVM relays to the "trusted"
    runtime.

* Fixes

  - Make GICv3 RD assignment more robust to userspace nonsense

  - Convert the remaining MMU fault handler backends to
    kvm_s2_fault_vma_info and co, fixing a number of bugs in the
    process.

  - Fix the SError/SEA selftests to be both more robust and less
    braindead.

  - Fix a smattering of documentation bugs, some of them as a result
    of our AI friends spitting out credible assertions based on
    non-existing symbols.

  - The usual collection of low impact bug fixes (SMCCC, timers, PMU).

----------------------------------------------------------------
Colton Lewis (2):
      KVM: arm64: Handle ID_AA64DFR0_EL1.PMUVer == NI in __kvm_pmu_event_mask()
      KVM: arm64: Check ID_AA64DFR0_EL1.PMUVer in pmu_visibility()

Fuad Tabba (54):
      KVM: arm64: Fix the KVM_ARM_PREFERRED_TARGET documentation
      KVM: arm64: vgic-its: Reword the comment on a collection-less ITE
      tracing: Include linux/types.h in trace_remote_event.h
      KVM: arm64: nVHE: Share the stacktrace per-CPU declarations with EL2
      KVM: arm64: nVHE: Declare the hyp event IDs before defining them
      KVM: arm64: nVHE: Use NULL to reset the trace buffer backing pointer
      KVM: arm64: nVHE: Run the source checker under C=2
      arm64: pi: Run the source checker on the libfdt objects under C=2
      KVM: arm64: nVHE: Pass host VA arguments as pointers
      KVM: arm64: Move the host hypercall interface to its own header
      KVM: arm64: Type-check hypercall arguments at the caller
      KVM: arm64: nVHE: Check hypercall handlers against the declared ABI
      KVM: arm64: Tag host-VA hypercall parameters __kern
      KVM: arm64: vgic-its: Free the caches when GITS_BASER changes
      Revert "KVM: arm64: vgic-its: Don't save collections the table cannot hold"
      KVM: arm64: vgic-its: Skip unreachable devices instead of failing the save
      KVM: arm64: selftests: Add ITS table save tests
      KVM: arm64: Validate the SVE vector length in pkvm_vcpu_init_sve()
      KVM: arm64: Do not clear VM-wide SVE feature on vCPU init failure
      KVM: arm64: Key unpin_host_sve_state() on the state it unpins
      KVM: arm64: Derive GUEST_HAS_SVE from the SVE feature bit at EL2
      KVM: arm64: Transfer the hyp stack pages out of the host stage-2
      KVM: arm64: Match hyp text by physical address in fix_host_ownership()
      KVM: arm64: Move the private VA allocation cursor to __io_map_next
      KVM: arm64: Check every private mapping is hyp-owned at pKVM init
      KVM: arm64: Don't WARN on an unknown VM ioctl in protected mode
      KVM: arm64: Report SMCCC_VERSION and SMCCC_ARCH_FEATURES as implemented
      KVM: arm64: selftests: Check the mandatory SMCCC_ARCH_FEATURES queries
      KVM: arm64: selftests: Check ID regs are immutable after a failed run
      KVM: arm64: Use kvm_s2_fault_vma_info in gmem_abort()
      KVM: arm64: Sync HCR_EL2.VSE back to the host vCPU under pKVM
      KVM: arm64: Validate the host vCPU's VM before reading it under pKVM
      KVM: arm64: Pin the host vCPU before adjusting its PC under pKVM
      KVM: arm64: Disable steal time for protected VMs
      KVM: arm64: Skip fixed-feature state flush for protected vCPUs
      KVM: arm64: Add system register reset framework for protected VMs
      KVM: arm64: Implement HVC handling for protected guests at EL2
      KVM: arm64: Handle PSCI calls for protected VMs at EL2
      KVM: arm64: Restrict KVM_ARM_VCPU_INIT and PSCI version for protected VMs
      KVM: arm64: Prevent host PC adjustments for protected vCPUs
      KVM: arm64: Inject an UNDEF at EL2 for unhandled protected guest exits
      KVM: arm64: Add per-EC entry/exit state marshalling for protected guests
      KVM: arm64: Reject host access to protected VM private state
      KVM: arm64: Reject host power-on of a vCPU that EL2 holds powered off
      KVM: arm64: Advertise the capabilities that protected VMs support
      KVM: arm64: Document the protected VM userspace API
      KVM: Fix comments that refer to the non-existent VCPU_RUN ioctl
      KVM: arm64: Fix references to the non-existent VCPU_RUN ioctl
      KVM: PPC: Book3S HV: Fix comment naming a non-existent KVM_VCPU_RUN ioctl
      KVM: arm64: timers: Compute an offset-applied CVAL from the current count
      KVM: arm64: nv: Read a guest hypervisor's CNTV_CVAL_EL0 from memory on x1e
      KVM: arm64: selftests: Test a timer set past the counter's wrap
      KVM: arm64: Only emulate an SError's entry for vCPUs with NV
      KVM: arm64: selftests: Check the pending SError state in external_aborts

Hemanth Selam (3):
      KVM: arm64: Fix typo "synchonized" in comment
      KVM: arm64: selftests: Fix typos in comments
      KVM: arm64: Fix typo in pauth.c comment

Jack Thomson (3):
      KVM: arm64: Pass walk flags to kvm_pgtable_get_leaf()
      KVM: selftests: Enable pre_fault_memory_test for arm64
      KVM: selftests: Add option for different backing in pre-fault tests

Karl Mehltretter (10):
      KVM: arm64: Fix kvm_get_vtcr() kernel-doc
      Documentation: KVM: Fix the event_source sysfs path in the PMU attribute description
      Documentation: KVM: Fix the struct kvm_arm_device_addr name
      KVM: arm64: Return -EINVAL for an empty SMCCC filter range at base 0
      KVM: arm64: selftests: Test empty SMCCC filter range at base 0
      KVM: arm64: Fix AArch32 DBGBXVR<n> handling
      KVM: arm64: vgic-v3: Undo assignment on iodev registration failure
      KVM: arm64: vgic-v3: Roll back assignments from the new region
      KVM: arm64: selftests: Pass guest code to vm_gic_create_with_vcpus()
      KVM: arm64: selftests: Test VGICv3 redistributor region retry

Like Xu (3):
      KVM: arm64: selftests: Fix EINJ handling in sea_to_user
      KVM: arm64: selftests: Skip sea_to_user without 1GB hugepages
      KVM: arm64: selftests: Skip sea_to_user when EINJ places no poison

Lorenzo Stoakes (ARM) (13):
      KVM: arm64: Fix spurious warning for benign stage 2 teardown race
      KVM: arm64: nv: Fix null ptr deref on nested wp/unmap, teardown race
      KVM: Allow architectures to disallow pre-fault
      arm64: Add ESR fault helpers
      KVM: arm64: Use ESR helpers in guest abort handling
      KVM: arm64: Propagate and use esr in s2fd when handling guest aborts
      KVM: arm64: Propagate and use mmu in s2fd when handling guest aborts
      KVM: arm64: Propagate and use kvm_s2_fault_result on S2 fault
      KVM: arm64: Size the stage-2 memcache from the fault MMU
      KVM: arm64: Propagate EHWPOISON in kvm_s2_fault_pin_pfn()
      KVM: arm64: Implement KVM_PRE_FAULT_MEMORY
      Documentation: KVM: document arm64 KVM_PRE_FAULT_MEMORY
      KVM: selftests: Add nested pre-fault test for arm64

Marc Zyngier (26):
      KVM: arm64: nv: Fix life cycle of the nested_mmus array
      KVM: arm64: nv: Delay freeing of shadow S2 structures until VM destruction
      KVM: arm64: vgic-v5: Drop __iomem attribute from {vmd,vpet}_base
      KVM: arm64: vgic-v5: Correctly reset h_lpi_ist to NULL
      KVM: arm64: vgic-v5: Tidy-up programming of vpe descriptor address
      Merge branch kvm-arm64/ffa-7.4 into kvmarm-master/next
      Merge tag 'kvmarm-fixes-7.3-1' into kvm-arm64/s2-rmap
      KVM: arm64: nv: Drop kvm_s2_mmu pointer from kvm_guest_s2_mapping
      KVM: arm64: vgic-v5: Correctly handle host ISTE __le32 conversion
      KVM: arm64: Introduce per-EC entry handlers for pKVM
      KVM: arm64: Add {flush,sync}_hyp_timer_state() primitives
      Merge branch kvm-arm64/doc-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/selftests-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/hyp-type-checking-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/gicv5-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/s2-rmap into kvmarm-master/next
      Merge branch kvm-arm64/pre-faulting into kvmarm-master/next
      Merge branch kvm-arm64/misc-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/immutable-idregs-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/s390-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/mmu-fixes-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-state-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-allocator-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/pkvm-tracing-7.4 into kvmarm-master/next
      Merge branch kvm-arm64/rd-assignment-fixes into kvmarm-master/next
      Merge branch kvm-arm64/cca-7.4 into kvmarm-master/next

Mark Brown (3):
      KVM: arm64: Fix FGT mapping for HFGITR_EL2.nGCSEPP
      KVM: arm64: Finalize guest-wide sysregs prior to per-vCPU sysregs
      KVM: arm64: Block ID register changes after we rely on the values

Sascha Bischoff (48):
      irqchip/gic-v5: Allow KVM setup without a maintenance IRQ
      irqchip/gic-v5: Provide OF IRS config frame attrs to KVM
      irqchip/gic-v5: Set up gic_kvm_info on ACPI hosts
      KVM: arm64: gic-v5: Define remaining IRS MMIO registers
      arm64/sysreg: Add GICv5 GIC VDPEND encoding
      KVM: arm64: gic-v5: Cache host IRS ID registers
      KVM: arm64: gic-v5: Add VPE doorbell domain
      KVM: arm64: gic-v5: Create and manage VM and VPE tables
      KVM: arm64: gic-v5: Introduce guest IST alloc and management
      KVM: arm64: gic-v5: Implement VMT/vIST IRS MMIO Ops
      KVM: arm64: vgic: Enforce model-specific vCPU limits
      KVM: arm64: gic-v5: Implement VPE IRS MMIO Ops
      KVM: arm64: gic-v5: Set up VMTEs and VPE doorbells
      KVM: arm64: gic-v5: Add resident/non-resident hyp calls
      KVM: arm64: gic-v5: Request doorbells when VPEs enter WFI
      KVM: arm64: gic-v5: Introduce struct vgic_v5_irs and IRS base address
      KVM: arm64: gic-v5: Add IRS IODEV support to MMIO handlers
      KVM: arm64: gic-v5: Add KVM_VGIC_V5_ADDR_TYPE_IRS to UAPI
      KVM: arm64: gic-v5: Add GICv5 IRS IODEV and MMIO emulation
      KVM: arm64: gic-v5: Initialise per-VM IRS state
      KVM: arm64: gic-v5: Register the IRS IODEV
      KVM: arm64: gic-v5: Set IRICHPPIDIS based on IRS enable state
      KVM: arm64: selftests: Update vGICv5 selftest to set IRS address
      KVM: arm64: gic-v5: Add GIC VDPEND hyp call
      KVM: arm64: gic: Introduce set_pending_state() to irq_ops
      KVM: arm64: gic-v5: Support SPI injection
      Documentation: KVM: Extend VGICv5 device attribute docs
      KVM: arm64: gic-v5: Add GICv5 SPI injection to irqfd
      KVM: arm64: gic-v5: Mask per-vCPU PPI state in vgic_v5_finalize_ppi_state()
      KVM: arm64: gic-v5: Add GICv5 EL1 sysreg userspace accessors
      KVM: arm64: gic-v5: Handle userspace accesses to IRS MMIO region
      KVM: arm64: gic-v5: Add CoreSight MMIO regs to IRS
      KVM: arm64: gic-v5: Add VGICv5 IST save/restore UAPI
      KVM: arm64: gic-v5: Implement save/restore mechanisms for ISTs
      Documentation: KVM: Document KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS for VGICv5
      Documentation: KVM: Add KVM_DEV_ARM_VGIC_GRP_IRS_REGS to VGICv5 docs
      Documentation: KVM: Add docs for KVM_DEV_ARM_VGIC_GRP_IST
      Documentation: KVM: Add the VGICv5 IRS save/restore sequences
      KVM: selftests: Add VGICv5 IRS address attribute tests
      KVM: selftests: Add VGICv5 NR_IRQS attribute tests
      KVM: selftests: Add VGICv5 IRS_REGS attribute tests
      KVM: selftests: Add VGICv5 IST attribute tests
      KVM: selftests: Add VGICv5 USERSPACE_PPIS tests
      KVM: selftests: Add VGICv5 CPU sysreg attribute tests
      KVM: selftests: Add VGICv5 SPI injection tests
      KVM: selftests: Add VGICv5 LPI delivery tests
      KVM: selftests: Add VGICv5 IST save/restore coverage
      KVM: selftests: Add VGICv5 sparse vCPU IDs test

Sebastian Ene (7):
      KVM: arm64: Forward FFA_NOTIFICATION_BITMAP calls to Trustzone
      KVM: arm64: Support FFA_NOTIFICATION_BIND in host handler
      KVM: arm64: Support FFA_NOTIFICATION_UNBIND in host handler
      KVM: arm64: Support FFA_NOTIFICATION_SET in host handler
      KVM: arm64: Support FFA_NOTIFICATION_GET in host handler
      KVM: arm64: Support FFA_NOTIFICATION_INFO_GET in host handler
      KVM: arm64: Enforce strict SBZ checks in the FF-A proxy

Sebastian Ott (1):
      KVM: selftests: fix steal_time for arm64 with host page size > 4K

Steffen Eiden (7):
      arm64: ptrace: Use constants for compat register numbers
      arm64: sysreg: Convert SPSR_ELx to automatic register generation
      KVM: arm64: Access elements of vcpu_gp_regs individually
      KVM: arm64: Use accessor functions for core regs
      arm64: Prepare sharing arm64 headers with s390
      arm64: Share arm64 headers with s390
      KVM: arm64: Share arm64 code with s390

Steven Price (1):
      KVM: arm64: Avoid including linux/kvm_host.h in kvm_pgtable.h

Suzuki K Poulose (12):
      KVM: arm64: protected VM: Handle user writes to CNTVCT_EL0/CNTPCT_EL0
      KVM: arm64: Include kvm_emulate.h in kvm/arm_psci.h
      KVM: arm64: Track the type of VM in kvm_arch
      KVM: arm64: Don't call vcpu_set_pauth_traps for pKVM host
      KVM: arm64: Refactor the vcpu_load to allow for VM specific callbacks
      KVM: arm64: Add vcpu load/put call backs for flavors
      KVM: arm64: Consolidate stage2 unmap range into kvm_stage2_unmap_range
      KVM: arm64: Add VM specific callback for S2 MMU operations
      KVM: arm64: Use a local kvm pointer in kvm_handle_guest_abort()
      KVM: arm64: Abstract out memory abort handling
      KVM: arm64: Mandate VGIC v3 for pKVM VMs and Realms
      KVM: arm64: Prevent unsupported vcpu features for VM types

Tharit Tangkijwanichakul (1):
      KVM: arm64: selftests: Fix VM leak in early return

Vincent Donnefort (30):
      KVM: arm64: Disable stage-2 ptdump of pKVM
      KVM: arm64: Remove PAGE_SIZE alignment for hyp event ELF sections
      KVM: arm64: Fix MMFR0 TGRAN advertisement for pVMs
      KVM: arm64: Pass kvm_s2_fault_desc to fault_supports_stage2_huge_mapping()
      KVM: arm64: Use kvm_s2_fault_vma_info in pkvm_mem_abort()
      KVM: arm64: Add pkvm_private_va_range_pa
      KVM: arm64: Add pkvm_remove_mappings
      KVM: arm64: Add pkvm_map_private_va_range
      KVM: arm64: Add a heap allocator for the pKVM hyp
      KVM: arm64: Allow kvm_hyp_memcache usage outside of stage-2
      KVM: arm64: Add pkvm_hyp_req infrastructure
      KVM: arm64: Add PKVM_HYP_REQ_HYP_ALLOC request
      KVM: arm64: Add reclaim interface for the pKVM heap alloc
      KVM: arm64: Add selftests for the pKVM heap allocator
      KVM: arm64: Add a shrinker for pKVM
      KVM: arm64: Filter out non-kernel addresses in kern_hyp_va
      KVM: arm64: Move hyp_vm refcount into the structure
      KVM: arm64: Alloc pkvm_hyp_vm using pKVM heap allocator
      KVM: arm64: Alloc pkvm_hyp_vcpu using pKVM heap allocator
      KVM: arm64: Rename vCPU pkvm_memcache to stage2_mc
      KVM: arm64: Reject hyp trace descriptors with fewer CPUs than hyp_nr_cpus
      KVM: arm64: Reject hyp trace descriptors with fewer than 3 pages
      KVM: arm64: Alloc simple_buffer_page using pKVM hyp allocator
      KVM: arm64: Allow early calls to pKVM host_share/unshare_hyp
      KVM: arm64: Move kvm_define_hypevents.h to arch/arm64/kvm/
      tracing/remotes: Add REMOTE_EVENT_CUSTOM_PRINTK() helper
      KVM: arm64: Add hyp_printk event to nVHE/pKVM hyp
      KVM: arm64: pkvm: Drop keneldoc markers for the allocator structs
      KVM: arm64: Prevent 64-bit overflow when computing hyp clock rate
      KVM: arm64: Fix bpages backing allocation size in hyp_trace

Wei-Lin Chang (8):
      KVM: arm64: Use a variable for the canonical IPA in kvm_s2_fault_map()
      KVM: arm64: nv: Introduce guest stage-2 tracking structures
      KVM: arm64: nv: Track guest stage-2 mapping removal
      KVM: arm64: nv: Track guest stage-2 mapping creation
      KVM: arm64: nv: Avoid full shadow stage-2 unmap
      KVM: arm64: Refactor kvm_unmap_gfn_range() with common variables
      KVM: arm64: ptdump: Check the page tables aren't freed when accessing
      KVM: arm64: ptdump: Fix shadow ptdump sleep-in-atomic-context problem

 Documentation/virt/kvm/api.rst                     |   67 +-
 Documentation/virt/kvm/arm/fw-pseudo-registers.rst |    2 +
 Documentation/virt/kvm/arm/pkvm.rst                |  164 +-
 Documentation/virt/kvm/devices/arm-vgic-v5.rst     |  271 ++-
 Documentation/virt/kvm/devices/vcpu.rst            |    5 +-
 arch/arm64/Makefile                                |    3 +
 arch/arm64/include/asm/brk-imm.h                   |    1 +
 arch/arm64/include/asm/esr.h                       |   34 +-
 arch/arm64/include/asm/kvm_arm.h                   |    6 +-
 arch/arm64/include/asm/kvm_asm.h                   |   11 +-
 arch/arm64/include/asm/kvm_emulate.h               |  124 +-
 arch/arm64/include/asm/kvm_hcall.h                 |  258 +++
 arch/arm64/include/asm/kvm_host.h                  |  300 ++--
 arch/arm64/include/asm/kvm_hyp.h                   |    7 +
 arch/arm64/include/asm/kvm_hypevents.h             |   14 +
 arch/arm64/include/asm/kvm_hyptrace.h              |    9 +
 arch/arm64/include/asm/kvm_mmu.h                   |   19 +-
 arch/arm64/include/asm/kvm_nested.h                |   10 +-
 arch/arm64/include/asm/kvm_pgtable.h               |   17 +-
 arch/arm64/include/asm/kvm_pkvm.h                  |  155 +-
 arch/arm64/include/asm/ptrace.h                    |   64 +-
 arch/arm64/include/asm/stacktrace/nvhe.h           |   10 +-
 arch/arm64/include/asm/sysreg.h                    |   33 +-
 arch/arm64/include/uapi/asm/kvm.h                  |   15 +
 arch/arm64/kernel/image-vars.h                     |    1 +
 arch/arm64/kernel/pi/Makefile                      |    1 +
 arch/arm64/kernel/vmlinux.lds.S                    |   10 +-
 arch/arm64/kvm/Kconfig                             |    1 +
 arch/arm64/kvm/Makefile                            |    3 +-
 arch/arm64/kvm/arch_timer.c                        |   39 +-
 arch/arm64/kvm/arm.c                               |  365 +++-
 .../define_hypevents.h}                            |    0
 arch/arm64/kvm/emulate-nested.c                    |    2 +-
 arch/arm64/kvm/guest.c                             |   33 +-
 arch/arm64/kvm/hyp/entry.S                         |    2 +-
 arch/arm64/kvm/hyp/exception.c                     |   30 +-
 arch/arm64/kvm/hyp/hyp-constants.c                 |    2 -
 arch/arm64/kvm/hyp/include/hyp/adjust_pc.h         |   52 +-
 arch/arm64/kvm/hyp/include/hyp/switch.h            |    4 +-
 arch/arm64/kvm/hyp/include/nvhe/alloc.h            |   28 +
 arch/arm64/kvm/hyp/include/nvhe/define_events.h    |    2 -
 arch/arm64/kvm/hyp/include/nvhe/mem_protect.h      |    2 +
 arch/arm64/kvm/hyp/include/nvhe/mm.h               |    4 +
 arch/arm64/kvm/hyp/include/nvhe/pkvm.h             |   40 +-
 arch/arm64/kvm/hyp/include/nvhe/spinlock.h         |    4 +
 arch/arm64/kvm/hyp/include/nvhe/trace.h            |   71 +-
 arch/arm64/kvm/hyp/nvhe/Makefile                   |    3 +-
 arch/arm64/kvm/hyp/nvhe/alloc.c                    | 1212 +++++++++++++
 arch/arm64/kvm/hyp/nvhe/events.c                   |    8 +
 arch/arm64/kvm/hyp/nvhe/ffa.c                      |  220 ++-
 arch/arm64/kvm/hyp/nvhe/hyp-main.c                 | 1182 +++++++++---
 arch/arm64/kvm/hyp/nvhe/hyp.lds.S                  |    1 -
 arch/arm64/kvm/hyp/nvhe/mem_protect.c              |   40 +-
 arch/arm64/kvm/hyp/nvhe/mm.c                       |  156 +-
 arch/arm64/kvm/hyp/nvhe/pkvm.c                     |  534 +++++-
 arch/arm64/kvm/hyp/nvhe/setup.c                    |   22 +-
 arch/arm64/kvm/hyp/nvhe/stacktrace.c               |    3 +-
 arch/arm64/kvm/hyp/nvhe/switch.c                   |   29 +-
 arch/arm64/kvm/hyp/nvhe/sys_regs.c                 |   63 +
 arch/arm64/kvm/hyp/nvhe/trace.c                    |   76 +-
 arch/arm64/kvm/hyp/pgtable.c                       |    6 +-
 arch/arm64/kvm/hyp/vgic-v5-sr.c                    |   45 +
 arch/arm64/kvm/hyp/vhe/switch.c                    |   21 +-
 arch/arm64/kvm/hyp_trace.c                         |   90 +-
 arch/arm64/kvm/hypercalls.c                        |   14 +-
 arch/arm64/kvm/inject_fault.c                      |   10 +-
 arch/arm64/kvm/mmio.c                              |    3 +
 arch/arm64/kvm/mmu.c                               |  799 +++++++--
 arch/arm64/kvm/nested.c                            |  262 ++-
 arch/arm64/kvm/pauth.c                             |    2 +-
 arch/arm64/kvm/pkvm.c                              |  226 ++-
 arch/arm64/kvm/pmu-emul.c                          |    5 +-
 arch/arm64/kvm/psci.c                              |   11 +-
 arch/arm64/kvm/ptdump.c                            |   79 +-
 arch/arm64/kvm/pvtime.c                            |   10 +-
 arch/arm64/kvm/stacktrace.c                        |    3 -
 arch/arm64/kvm/sys_regs.c                          |   70 +-
 arch/arm64/kvm/sys_regs.h                          |    2 +-
 arch/arm64/kvm/trace_pkvm.h                        |   45 +
 arch/arm64/kvm/vgic-sys-reg-v5.c                   |  519 ++++++
 arch/arm64/kvm/vgic/vgic-init.c                    |  162 +-
 arch/arm64/kvm/vgic/vgic-irqfd.c                   |   18 +-
 arch/arm64/kvm/vgic/vgic-irs-v5.c                  | 1217 +++++++++++++
 arch/arm64/kvm/vgic/vgic-its.c                     |   52 +-
 arch/arm64/kvm/vgic/vgic-kvm-device.c              |  272 ++-
 arch/arm64/kvm/vgic/vgic-mmio-v3.c                 |   33 +-
 arch/arm64/kvm/vgic/vgic-mmio.c                    |    6 +
 arch/arm64/kvm/vgic/vgic-mmio.h                    |    2 +
 arch/arm64/kvm/vgic/vgic-v5-tables.c               | 1872 ++++++++++++++++++++
 arch/arm64/kvm/vgic/vgic-v5-tables.h               |  140 ++
 arch/arm64/kvm/vgic/vgic-v5.c                      | 1152 +++++++++++-
 arch/arm64/kvm/vgic/vgic.c                         |   39 +-
 arch/arm64/kvm/vgic/vgic.h                         |   21 +
 arch/arm64/tools/sysreg                            |   51 +
 arch/powerpc/kvm/book3s_hv.c                       |    2 +-
 arch/s390/kvm/s390/s390.c                          |   11 +-
 arch/x86/kvm/mmu/mmu.c                             |   11 +-
 arch/x86/kvm/vmx/tdx.c                             |    2 +-
 drivers/irqchip/irq-gic-v5-irs.c                   |   19 +-
 drivers/irqchip/irq-gic-v5.c                       |  111 +-
 include/kvm/arm_arch_timer.h                       |   15 +
 include/kvm/arm_psci.h                             |    2 +
 include/kvm/arm_vgic.h                             |  213 ++-
 include/linux/irqchip/arm-gic-v5.h                 |  254 ++-
 include/linux/irqchip/arm-vgic-info.h              |    5 +
 include/linux/kvm_host.h                           |    3 +-
 include/linux/trace_remote_event.h                 |    2 +
 include/trace/define_remote_events.h               |   19 +-
 tools/arch/arm64/include/uapi/asm/kvm.h            |   15 +
 tools/testing/selftests/kvm/Makefile.kvm           |    3 +
 .../selftests/kvm/arm64/arch_timer_edge_cases.c    |   25 +
 .../testing/selftests/kvm/arm64/debug-exceptions.c |    2 +-
 .../testing/selftests/kvm/arm64/external_aborts.c  |   23 +-
 tools/testing/selftests/kvm/arm64/hypercalls.c     |   31 +-
 .../selftests/kvm/arm64/nv_pre_fault_memory_test.c |  158 ++
 tools/testing/selftests/kvm/arm64/sea_to_user.c    |   75 +-
 tools/testing/selftests/kvm/arm64/set_id_regs.c    |  106 +-
 tools/testing/selftests/kvm/arm64/smccc_filter.c   |    4 +
 tools/testing/selftests/kvm/arm64/vgic_init.c      |  116 +-
 tools/testing/selftests/kvm/arm64/vgic_its_save.c  |  441 +++++
 tools/testing/selftests/kvm/arm64/vgic_v5.c        | 1849 ++++++++++++++++++-
 tools/testing/selftests/kvm/include/arm64/gic_v5.h |  105 ++
 tools/testing/selftests/kvm/include/test_util.h    |    1 +
 tools/testing/selftests/kvm/lib/test_util.c        |   15 +
 .../testing/selftests/kvm/pre_fault_memory_test.c  |  150 +-
 tools/testing/selftests/kvm/steal_time.c           |   30 +-
 virt/kvm/kvm_main.c                                |   12 +-
 127 files changed, 15492 insertions(+), 1441 deletions(-)
 create mode 100644 arch/arm64/include/asm/kvm_hcall.h
 rename arch/arm64/{include/asm/kvm_define_hypevents.h => kvm/define_hypevents.h} (100%)
 create mode 100644 arch/arm64/kvm/hyp/include/nvhe/alloc.h
 create mode 100644 arch/arm64/kvm/hyp/nvhe/alloc.c
 create mode 100644 arch/arm64/kvm/trace_pkvm.h
 create mode 100644 arch/arm64/kvm/vgic-sys-reg-v5.c
 create mode 100644 arch/arm64/kvm/vgic/vgic-irs-v5.c
 create mode 100644 arch/arm64/kvm/vgic/vgic-v5-tables.c
 create mode 100644 arch/arm64/kvm/vgic/vgic-v5-tables.h
 create mode 100644 tools/testing/selftests/kvm/arm64/nv_pre_fault_memory_test.c
 create mode 100644 tools/testing/selftests/kvm/arm64/vgic_its_save.c


commit 678f16b6e4767096aa3e3e6eef60e981b3f61e12
Merge: dd0bc00e3e920 bc502b86a3cfd
Author: Marc Zyngier <maz@kernel.org>
Date:   Sun Oct 11 16:40:16 2026 +0100

    Merge branch kvmarm-fixes-7.3-2 into kvmarm-master/next-7.4+fixes-7.3-2
    
    KVM/arm64 fixes for 7.3, round #2
    
     - Take a reference on the last IRQ loaded into an LR to prevent it
       from being freed while running the guest (Marc Zyngier)
    
     - Ensure that the ITS MOVALL command only affects LPIs that were
       previously affined to the source redistributor (Marc Zyngier)
    
     - Fix + test for honoring the host's trap configuration when running
       non-protected VMs while KVM is in protected mode (Fuad Tabba)
    
     - Use the host stage-1 mapping granularity for VM_PFNMAP mappings at
       stage-2 (Mostafa Saleh)
    
    * tag 'kvmarm-fixes-7.3-2':
      KVM: arm64: Use stage-1 leaf size for VM_PFNMAP
      KVM: arm64: selftests: Check a feature hidden in an ID register is UNDEF
      KVM: arm64: Use the host's HCR_EL2 for non-protected VMs in pKVM
      KVM: arm64: Clear HCR_EL2.RW for 32-bit non-protected vCPUs
      KVM: arm64: Apply the fine-grained UNDEFs without FEAT_FGT
      KVM: arm64: vgic-its: Fix MOVALL handling of source redistributor
      KVM: arm64: vgic: Take a refcount on IRQs referenced by last_lr_irq
      KVM: arm64: vgic: Allow last_lr_irq to be NULL when LRs are not overflowing
    
    Signed-off-by: Marc Zyngier <maz@kernel.org>

diff --cc arch/arm64/kvm/hyp/nvhe/hyp-main.c
index d715aa942577e,ac64a036b0a95..137a8144d09e8
--- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
+++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
@@@ -693,8 -216,7 +693,9 @@@ static void sync_debug_state(struct pkv
  static void flush_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
  {
  	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
+ 	u64 host_hcr_mask = PKVM_HCR_EL2_HOST_PVM;
 +	hyp_entry_exit_handler_fn ec_handler;
 +	u8 esr_ec;
  
  	fpsimd_sve_flush();
  	flush_debug_state(hyp_vcpu);
@@@ -707,60 -229,35 +708,57 @@@
  	if (!pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
  		if (vcpu_get_flag(host_vcpu, PKVM_HOST_STATE_DIRTY))
  			flush_hyp_vcpu_state(hyp_vcpu);
 +
- 		hyp_vcpu->vcpu.arch.hcr_el2 &= ~(HCR_TWI | HCR_TWE);
- 		hyp_vcpu->vcpu.arch.hcr_el2 |= READ_ONCE(host_vcpu->arch.hcr_el2) &
- 							 (HCR_TWI | HCR_TWE);
- 
 +		hyp_vcpu->vcpu.arch.mdcr_el2 = host_vcpu->arch.mdcr_el2;
 +		hyp_vcpu->vcpu.arch.iflags = host_vcpu->arch.iflags;
+ 		host_hcr_mask = PKVM_HCR_EL2_HOST_NPVM;
 -	} else {
 -		hyp_vcpu->vcpu.arch.ctxt = host_vcpu->arch.ctxt;
  	}
  
  	/* __hyp_running_vcpu must be NULL in a guest context. */
  	hyp_vcpu->vcpu.arch.ctxt.__hyp_running_vcpu = NULL;
  
 -	hyp_vcpu->vcpu.arch.mdcr_el2	= host_vcpu->arch.mdcr_el2;
  	/*
 -	 * HCR_EL2.VSE is host-owned (a pending virtual SError to inject), not a
 -	 * trap-control bit, so it must flow to the hyp vCPU alongside TWI/TWE
 -	 * for the vSError to be delivered. sync_hyp_vcpu() reflects it back.
 +	 * A host-injected vSError is masked by the guest's own PSTATE.A, so it
 +	 * applies to protected guests too.
  	 */
- 	hyp_vcpu->vcpu.arch.hcr_el2 &= ~HCR_VSE;
- 	hyp_vcpu->vcpu.arch.hcr_el2 |= READ_ONCE(host_vcpu->arch.hcr_el2) & HCR_VSE;
+ 	hyp_vcpu->vcpu.arch.hcr_el2 &= ~host_hcr_mask;
+ 	hyp_vcpu->vcpu.arch.hcr_el2 |= READ_ONCE(host_vcpu->arch.hcr_el2) & host_hcr_mask;
 -
 -	hyp_vcpu->vcpu.arch.iflags	= host_vcpu->arch.iflags;
 -
 -	hyp_vcpu->vcpu.arch.vsesr_el2	= host_vcpu->arch.vsesr_el2;
 +	hyp_vcpu->vcpu.arch.vsesr_el2 = host_vcpu->arch.vsesr_el2;
  
  	flush_hyp_vgic_state(hyp_vcpu);
 +	flush_hyp_timer_state(hyp_vcpu);
  
  	hyp_vcpu->vcpu.arch.pid = host_vcpu->arch.pid;
 +
 +	switch (ARM_EXCEPTION_CODE(hyp_vcpu->exit_code)) {
 +	case ARM_EXCEPTION_IRQ:
 +	case ARM_EXCEPTION_EL1_SERROR:
 +	case ARM_EXCEPTION_IL:
 +		break;
 +	case ARM_EXCEPTION_TRAP:
 +		/* Nothing was marshalled for this trap, see sync_hyp_vcpu(). */
 +		if (ARM_SERROR_PENDING(hyp_vcpu->exit_code))
 +			break;
 +
 +		if (pkvm_hyp_vcpu_is_protected(hyp_vcpu)) {
 +			esr_ec = ESR_ELx_EC(kvm_vcpu_get_esr(&hyp_vcpu->vcpu));
 +			ec_handler = entry_hyp_pvm_handlers[esr_ec];
 +			if (ec_handler)
 +				ec_handler(hyp_vcpu);
 +		}
 +		break;
 +	default:
 +		BUG();
 +	}
 +
 +	hyp_vcpu->exit_code = 0;
  }
  
 -static void sync_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu)
 +static void sync_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu, u32 exit_reason)
  {
  	struct kvm_vcpu *host_vcpu = hyp_vcpu->host_vcpu;
 +	hyp_entry_exit_handler_fn ec_handler;
 +	u8 esr_ec;
  
  	fpsimd_sve_sync(&hyp_vcpu->vcpu);
  	sync_debug_state(hyp_vcpu);
diff --cc arch/arm64/kvm/mmu.c
index a48f3f531e827,bf6d6526639fa..605a9b25f62b1
--- a/arch/arm64/kvm/mmu.c
+++ b/arch/arm64/kvm/mmu.c
@@@ -2307,18 -2104,7 +2276,14 @@@ static int user_mem_abort(const struct 
  			return ret;
  	}
  
- 	/*
- 	 * Let's check if we will get back a huge page backed by hugetlbfs, or
- 	 * get block mapping for device MMIO region.
- 	 */
  	ret = kvm_s2_fault_pin_pfn(s2fd, &s2vi);
 +	if (ret == -EHWPOISON) {
 +		/* If result is specified, let the caller handle this. */
 +		if (result)
 +			return -EHWPOISON;
 +		kvm_send_hwpoison_signal(s2fd->hva, __ffs(s2vi.vma_pagesize));
 +		return 0;
 +	}
  	if (ret != 1)
  		return ret;
  

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

* Re: [GIT PULL] KVM/arm64 updates for Linux 7.4
  2026-10-14 16:21 [GIT PULL] KVM/arm64 updates for Linux 7.4 Marc Zyngier
@ 2026-10-14 16:30 ` Paolo Bonzini
  2026-10-14 16:52   ` Marc Zyngier
  0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2026-10-14 16:30 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Amit Machhiwal, Catalin Marinas, Colton Lewis, Eric Auger,
	Fuad Tabba, Gautam Menghani, Gavin Shan, Gokul K, Hemanth Selam,
	Hiroyuki Katsura, Itaru Kitayama, Jack Thomson, Jiaqi Yan,
	Joey Gouly, Jonathan Cameron, Jonathan Davies, Karl Mehltretter,
	Leonardo Bras, Like Xu, Lorenzo Stoakes, Mark Brown,
	Nina Schoetterl-Glausch, Oliver Upton, Randy Dunlap,
	Sascha Bischoff, Sean Christopherson, Sebastian Ene,
	Sebastian Ott, Shen Yongchao, Shuai Xue, Stefan Teodorescu,
	Steffen Eiden, Steven Price, Steven Rostedt, Suzuki K Poulose,
	Tharit Tangkijwanichakul, Vincent Donnefort, Wang Han,
	Wei-Lin Chang, Will Deacon, Yuan Yao, Zenghui Yu, Zenghui Yu,
	kvmarm, linux-arm-kernel, kvm

On Wed, Oct 14, 2026 at 6:21 PM Marc Zyngier <maz@kernel.org> wrote:
>
> Paolo,
>
> Here's the set of KVM/arm64 updates for 7.4. After a couple of
> releases mostly focused on mopping the AI wave, we're back to merging
> new code, and there is a lot of it. Given the size and the conflicts
> that this generates (see below), I've decided to send the pull request
> early.
>
> Details are as usual in the tag below, but there is a few things to
> call out:
>
> - a lot of pKVM updates, finally delivering on the isolation promises,
>   thanks to Fuad's work on upstreaming this stuff.
>
> - the first stab at sharing code with s390... More fun to come, but
>   that's a start
>
> - More GICv5 code. As always with the GIC, it is huge... But for once,
>   the code is much simpler than the previous iterations, and also
>   comes with a bunch of selftests from the beginning.
>
> As a consequence, the diffstat is a gold-plated pig.
>
> Things to note:
>
> - this drags the kvmarm-fixes-7.3-1 tag as a way to resolve bad
>   conflicts with some of the patches
>
> - there is some additional conflicts with 7.3-rc6, due to
>   kvmarm-fixes-7.3-2 landing a bit late. I have stashed a resolution
>   here [1], which you can either apply if you're basing the merge on
>   -rc6, or mention to Linus as you send your own PR. For everybody to
>   enjoy, I also add the resolution at the end of this email.

I've done the unspeakable and pulled kvmarm-fixes-7.3-2 into kvm/next
so that this PR will go on top; that conflict is too much to send to
Linus. Please check in kvm/queue that I copied your resolution
correctly. As soon as you confirm I'll move it to kvm/next.

Paolo


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

* Re: [GIT PULL] KVM/arm64 updates for Linux 7.4
  2026-10-14 16:30 ` Paolo Bonzini
@ 2026-10-14 16:52   ` Marc Zyngier
  2026-10-14 16:56     ` Paolo Bonzini
  0 siblings, 1 reply; 5+ messages in thread
From: Marc Zyngier @ 2026-10-14 16:52 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Amit Machhiwal, Catalin Marinas, Colton Lewis, Eric Auger,
	Fuad Tabba, Gautam Menghani, Gavin Shan, Gokul K, Hemanth Selam,
	Hiroyuki Katsura, Itaru Kitayama, Jack Thomson, Jiaqi Yan,
	Joey Gouly, Jonathan Cameron, Jonathan Davies, Karl Mehltretter,
	Leonardo Bras, Like Xu, Lorenzo Stoakes, Mark Brown,
	Nina Schoetterl-Glausch, Oliver Upton, Randy Dunlap,
	Sascha Bischoff, Sean Christopherson, Sebastian Ene,
	Sebastian Ott, Shen Yongchao, Shuai Xue, Stefan Teodorescu,
	Steffen Eiden, Steven Price, Steven Rostedt, Suzuki K Poulose,
	Tharit Tangkijwanichakul, Vincent Donnefort, Wang Han,
	Wei-Lin Chang, Will Deacon, Yuan Yao, Zenghui Yu, Zenghui Yu,
	kvmarm, linux-arm-kernel, kvm

On Wed, 14 Oct 2026 17:30:50 +0100,
Paolo Bonzini <pbonzini@redhat.com> wrote:
> 
> On Wed, Oct 14, 2026 at 6:21 PM Marc Zyngier <maz@kernel.org> wrote:
> >
> > Paolo,
> >
> > Here's the set of KVM/arm64 updates for 7.4. After a couple of
> > releases mostly focused on mopping the AI wave, we're back to merging
> > new code, and there is a lot of it. Given the size and the conflicts
> > that this generates (see below), I've decided to send the pull request
> > early.
> >
> > Details are as usual in the tag below, but there is a few things to
> > call out:
> >
> > - a lot of pKVM updates, finally delivering on the isolation promises,
> >   thanks to Fuad's work on upstreaming this stuff.
> >
> > - the first stab at sharing code with s390... More fun to come, but
> >   that's a start
> >
> > - More GICv5 code. As always with the GIC, it is huge... But for once,
> >   the code is much simpler than the previous iterations, and also
> >   comes with a bunch of selftests from the beginning.
> >
> > As a consequence, the diffstat is a gold-plated pig.
> >
> > Things to note:
> >
> > - this drags the kvmarm-fixes-7.3-1 tag as a way to resolve bad
> >   conflicts with some of the patches
> >
> > - there is some additional conflicts with 7.3-rc6, due to
> >   kvmarm-fixes-7.3-2 landing a bit late. I have stashed a resolution
> >   here [1], which you can either apply if you're basing the merge on
> >   -rc6, or mention to Linus as you send your own PR. For everybody to
> >   enjoy, I also add the resolution at the end of this email.
> 
> I've done the unspeakable and pulled kvmarm-fixes-7.3-2 into kvm/next
> so that this PR will go on top; that conflict is too much to send to
> Linus. Please check in kvm/queue that I copied your resolution
> correctly. As soon as you confirm I'll move it to kvm/next.

Looks pretty good to me:

$ git diff kvmarm/next-7.4+fixes-7.3-2  kvm/queue arch/arm64/
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 1c6632216e327..5c9843338c510 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -32,6 +32,9 @@
 #include <asm/vncr_mapping.h>
 
 #define __KVM_HAVE_ARCH_INTC_INITIALIZED
+#define __KVM_HAVE_MSI
+#define __KVM_HAVE_READONLY_MEM
+#define __KVM_HAVE_VCPU_RUN_PID_CHANGE
 
 #define KVM_HALT_POLL_NS_DEFAULT 500000
 
diff --git a/arch/arm64/kvm/Kconfig b/arch/arm64/kvm/Kconfig
index 71233068b7cb6..48d531e302d33 100644
--- a/arch/arm64/kvm/Kconfig
+++ b/arch/arm64/kvm/Kconfig
@@ -22,18 +22,14 @@ menuconfig KVM
        select KVM_COMMON
        select KVM_GENERIC_HARDWARE_ENABLING
        select HAVE_KVM_CPU_RELAX_INTERCEPT
-       select KVM_MMIO
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
        select VIRT_XFER_TO_GUEST_WORK
        select KVM_VFIO
        select HAVE_KVM_DIRTY_RING_ACQ_REL
        select NEED_KVM_DIRTY_RING_WITH_BITMAP
-       select HAVE_KVM_MSI
        select HAVE_KVM_IRQCHIP
        select HAVE_KVM_IRQ_ROUTING
        select HAVE_KVM_IRQ_BYPASS
-       select HAVE_KVM_READONLY_MEM
-       select HAVE_KVM_VCPU_RUN_PID_CHANGE
        select SCHED_INFO
        select GUEST_PERF_EVENTS if PERF_EVENTS
        select KVM_GUEST_MEMFD

which is what I'd expected. It even builds, so it is obviously
perfect. Go ahead!

Thanks,

	M.

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

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

* Re: [GIT PULL] KVM/arm64 updates for Linux 7.4
  2026-10-14 16:52   ` Marc Zyngier
@ 2026-10-14 16:56     ` Paolo Bonzini
  2026-10-14 17:05       ` Marc Zyngier
  0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2026-10-14 16:56 UTC (permalink / raw)
  To: Marc Zyngier
  Cc: Amit Machhiwal, Catalin Marinas, Colton Lewis, Eric Auger,
	Fuad Tabba, Gautam Menghani, Gavin Shan, Gokul K, Hemanth Selam,
	Hiroyuki Katsura, Itaru Kitayama, Jack Thomson, Jiaqi Yan,
	Joey Gouly, Jonathan Cameron, Jonathan Davies, Karl Mehltretter,
	Leonardo Bras, Like Xu, Lorenzo Stoakes, Mark Brown,
	Nina Schoetterl-Glausch, Oliver Upton, Randy Dunlap,
	Sascha Bischoff, Sean Christopherson, Sebastian Ene,
	Sebastian Ott, Shen Yongchao, Shuai Xue, Stefan Teodorescu,
	Steffen Eiden, Steven Price, Steven Rostedt, Suzuki K Poulose,
	Tharit Tangkijwanichakul, Vincent Donnefort, Wang Han,
	Wei-Lin Chang, Will Deacon, Yuan Yao, Zenghui Yu, Zenghui Yu,
	kvmarm, linux-arm-kernel, kvm

On Wed, Oct 14, 2026 at 6:52 PM Marc Zyngier <maz@kernel.org> wrote:
>
> On Wed, 14 Oct 2026 17:30:50 +0100,
> Looks pretty good to me:

Good, applied (I idly wonder what the x86 maintainers would think of
KVM growing a memory allocator...).

Paolo


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

* Re: [GIT PULL] KVM/arm64 updates for Linux 7.4
  2026-10-14 16:56     ` Paolo Bonzini
@ 2026-10-14 17:05       ` Marc Zyngier
  0 siblings, 0 replies; 5+ messages in thread
From: Marc Zyngier @ 2026-10-14 17:05 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Amit Machhiwal, Catalin Marinas, Colton Lewis, Eric Auger,
	Fuad Tabba, Gautam Menghani, Gavin Shan, Gokul K, Hemanth Selam,
	Hiroyuki Katsura, Itaru Kitayama, Jack Thomson, Jiaqi Yan,
	Joey Gouly, Jonathan Cameron, Jonathan Davies, Karl Mehltretter,
	Leonardo Bras, Like Xu, Lorenzo Stoakes, Mark Brown,
	Nina Schoetterl-Glausch, Oliver Upton, Randy Dunlap,
	Sascha Bischoff, Sean Christopherson, Sebastian Ene,
	Sebastian Ott, Shen Yongchao, Shuai Xue, Stefan Teodorescu,
	Steffen Eiden, Steven Price, Steven Rostedt, Suzuki K Poulose,
	Tharit Tangkijwanichakul, Vincent Donnefort, Wang Han,
	Wei-Lin Chang, Will Deacon, Yuan Yao, Zenghui Yu, Zenghui Yu,
	kvmarm, linux-arm-kernel, kvm

On Wed, 14 Oct 2026 17:56:40 +0100,
Paolo Bonzini <pbonzini@redhat.com> wrote:
> 
> On Wed, Oct 14, 2026 at 6:52 PM Marc Zyngier <maz@kernel.org> wrote:
> >
> > On Wed, 14 Oct 2026 17:30:50 +0100,
> > Looks pretty good to me:
> 
> Good, applied (I idly wonder what the x86 maintainers would think of
> KVM growing a memory allocator...).

If x86 ever grows something like pKVM, I have no doubt that this will
be a requirement, just like the whole caretaker thingy will eventually
grow into a full-blown hypervisor.

Bloat knows no boundary!

	M.

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

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

end of thread, other threads:[~2026-10-14 17:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-14 16:21 [GIT PULL] KVM/arm64 updates for Linux 7.4 Marc Zyngier
2026-10-14 16:30 ` Paolo Bonzini
2026-10-14 16:52   ` Marc Zyngier
2026-10-14 16:56     ` Paolo Bonzini
2026-10-14 17:05       ` Marc Zyngier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox