ARM:

* Generalized infrastructure for 'writable' ID registers, effectively
  allowing userspace to opt-out of certain vCPU features for its guest

* Optimization for vSGI injection, opportunistically compressing MPIDR
  to vCPU mapping into a table

* Improvements to KVM's PMU emulation, allowing userspace to select
  the number of PMCs available to a VM

* Guest support for memory operation instructions (FEAT_MOPS)

* Cleanups to handling feature flags in KVM_ARM_VCPU_INIT, squashing
  bugs and getting rid of useless code

* Changes to the way the SMCCC filter is constructed, avoiding wasted
  memory allocations when not in use

* Load the stage-2 MMU context at vcpu_load() for VHE systems, reducing
  the overhead of errata mitigations

* Miscellaneous kernel and selftest fixes

LoongArch:

* New architecture.  The hardware uses the same model as x86, s390
  and RISC-V, where guest/host mode is orthogonal to supervisor/user
  mode.  The virtualization extensions are very similar to MIPS,
  therefore the code also has some similarities but it's been cleaned
  up to avoid some of the historical bogosities that are found in
  arch/mips.  The kernel emulates MMU, timer and CSR accesses, while
  interrupt controllers are only emulated in userspace, at least for
  now.

RISC-V:

* Support for the Smstateen and Zicond extensions

* Support for virtualizing senvcfg

* Support for virtualized SBI debug console (DBCN)

S390:

* Nested page table management can be monitored through tracepoints
  and statistics

x86:

* Fix incorrect handling of VMX posted interrupt descriptor in KVM_SET_LAPIC,
  which could result in a dropped timer IRQ

* Avoid WARN on systems with Intel IPI virtualization

* Add CONFIG_KVM_MAX_NR_VCPUS, to allow supporting up to 4096 vCPUs without
  forcing more common use cases to eat the extra memory overhead.

* Add virtualization support for AMD SRSO mitigation (IBPB_BRTYPE and
  SBPB, aka Selective Branch Predictor Barrier).

* Fix a bug where restoring a vCPU snapshot that was taken within 1 second of
  creating the original vCPU would cause KVM to try to synchronize the vCPU's
  TSC and thus clobber the correct TSC being set by userspace.

* Compute guest wall clock using a single TSC read to avoid generating an
  inaccurate time, e.g. if the vCPU is preempted between multiple TSC reads.

* "Virtualize" HWCR.TscFreqSel to make Linux guests happy, which complain
  about a "Firmware Bug" if the bit isn't set for select F/M/S combos.
  Likewise "virtualize" (ignore) MSR_AMD64_TW_CFG to appease Windows Server
  2022.

* Don't apply side effects to Hyper-V's synthetic timer on writes from
  userspace to fix an issue where the auto-enable behavior can trigger
  spurious interrupts, i.e. do auto-enabling only for guest writes.

* Remove an unnecessary kick of all vCPUs when synchronizing the dirty log
  without PML enabled.

* Advertise "support" for non-serializing FS/GS base MSR writes as appropriate.

* Harden the fast page fault path to guard against encountering an invalid
  root when walking SPTEs.

* Omit "struct kvm_vcpu_xen" entirely when CONFIG_KVM_XEN=n.

* Use the fast path directly from the timer callback when delivering Xen
  timer events, instead of waiting for the next iteration of the run loop.
  This was not done so far because previously proposed code had races,
  but now care is taken to stop the hrtimer at critical points such as
  restarting the timer or saving the timer information for userspace.

* Follow the lead of upstream Xen and ignore the VCPU_SSHOTTMR_future flag.

* Optimize injection of PMU interrupts that are simultaneous with NMIs.

* Usual handful of fixes for typos and other warts.

x86 - MTRR/PAT fixes and optimizations:

* Clean up code that deals with honoring guest MTRRs when the VM has
  non-coherent DMA and host MTRRs are ignored, i.e. EPT is enabled.

* Zap EPT entries when non-coherent DMA assignment stops/start to prevent
  using stale entries with the wrong memtype.

* Don't ignore guest PAT for CR0.CD=1 && KVM_X86_QUIRK_CD_NW_CLEARED=y.
  This was done as a workaround for virtual machine BIOSes that did not
  bother to clear CR0.CD (because ancient KVM/QEMU did not bother to
  set it, in turn), and there's zero reason to extend the quirk to
  also ignore guest PAT.

x86 - SEV fixes:

* Report KVM_EXIT_SHUTDOWN instead of EINVAL if KVM intercepts SHUTDOWN while
  running an SEV-ES guest.

* Clean up the recognition of emulation failures on SEV guests, when KVM would
  like to "skip" the instruction but it had already been partially emulated.
  This makes it possible to drop a hack that second guessed the (insufficient)
  information provided by the emulator, and just do the right thing.

Documentation:

* Various updates and fixes, mostly for x86

* MTRR and PAT fixes and optimizations:
Merge tag 'kvmarm-6.7' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD

KVM/arm64 updates for 6.7

 - Generalized infrastructure for 'writable' ID registers, effectively
   allowing userspace to opt-out of certain vCPU features for its guest

 - Optimization for vSGI injection, opportunistically compressing MPIDR
   to vCPU mapping into a table

 - Improvements to KVM's PMU emulation, allowing userspace to select
   the number of PMCs available to a VM

 - Guest support for memory operation instructions (FEAT_MOPS)

 - Cleanups to handling feature flags in KVM_ARM_VCPU_INIT, squashing
   bugs and getting rid of useless code

 - Changes to the way the SMCCC filter is constructed, avoiding wasted
   memory allocations when not in use

 - Load the stage-2 MMU context at vcpu_load() for VHE systems, reducing
   the overhead of errata mitigations

 - Miscellaneous kernel and selftest fixes