ARM64:

* Enable the per-vcpu dirty-ring tracking mechanism, together with an
  option to keep the good old dirty log around for pages that are
  dirtied by something other than a vcpu.

* Switch to the relaxed parallel fault handling, using RCU to delay
  page table reclaim and giving better performance under load.

* Relax the MTE ABI, allowing a VMM to use the MAP_SHARED mapping option,
  which multi-process VMMs such as crosvm rely on (see merge commit 382b5b87a97d:
  "Fix a number of issues with MTE, such as races on the tags being
  initialised vs the PG_mte_tagged flag as well as the lack of support
  for VM_SHARED when KVM is involved.  Patches from Catalin Marinas and
  Peter Collingbourne").

* Merge the pKVM shadow vcpu state tracking that allows the hypervisor
  to have its own view of a vcpu, keeping that state private.

* Add support for the PMUv3p5 architecture revision, bringing support
  for 64bit counters on systems that support it, and fix the
  no-quite-compliant CHAIN-ed counter support for the machines that
  actually exist out there.

* Fix a handful of minor issues around 52bit VA/PA support (64kB pages
  only) as a prefix of the oncoming support for 4kB and 16kB pages.

* Pick a small set of documentation and spelling fixes, because no
  good merge window would be complete without those.

s390:

* Second batch of the lazy destroy patches

* First batch of KVM changes for kernel virtual != physical address support

* Removal of a unused function

x86:

* Allow compiling out SMM support

* Cleanup and documentation of SMM state save area format

* Preserve interrupt shadow in SMM state save area

* Respond to generic signals during slow page faults

* Fixes and optimizations for the non-executable huge page errata fix.

* Reprogram all performance counters on PMU filter change

* Cleanups to Hyper-V emulation and tests

* Process Hyper-V TLB flushes from a nested guest (i.e. from a L2 guest
  running on top of a L1 Hyper-V hypervisor)

* Advertise several new Intel features

* x86 Xen-for-KVM:

** Allow the Xen runstate information to cross a page boundary

** Allow XEN_RUNSTATE_UPDATE flag behaviour to be configured

** Add support for 32-bit guests in SCHEDOP_poll

* Notable x86 fixes and cleanups:

** One-off fixes for various emulation flows (SGX, VMXON, NRIPS=0).

** Reinstate IBPB on emulated VM-Exit that was incorrectly dropped a few
   years back when eliminating unnecessary barriers when switching between
   vmcs01 and vmcs02.

** Clean up vmread_error_trampoline() to make it more obvious that params
   must be passed on the stack, even for x86-64.

** Let userspace set all supported bits in MSR_IA32_FEAT_CTL irrespective
   of the current guest CPUID.

** Fudge around a race with TSC refinement that results in KVM incorrectly
   thinking a guest needs TSC scaling when running on a CPU with a
   constant TSC, but no hardware-enumerated TSC frequency.

** Advertise (on AMD) that the SMM_CTL MSR is not supported

** Remove unnecessary exports

Generic:

* Support for responding to signals during page faults; introduces
  new FOLL_INTERRUPTIBLE flag that was reviewed by mm folks

Selftests:

* Fix an inverted check in the access tracking perf test, and restore
  support for asserting that there aren't too many idle pages when
  running on bare metal.

* Fix build errors that occur in certain setups (unsure exactly what is
  unique about the problematic setup) due to glibc overriding
  static_assert() to a variant that requires a custom message.

* Introduce actual atomics for clear/set_bit() in selftests

* Add support for pinning vCPUs in dirty_log_perf_test.

* Rename the so called "perf_util" framework to "memstress".

* Add a lightweight psuedo RNG for guest use, and use it to randomize
  the access pattern and write vs. read percentage in the memstress tests.

* Add a common ucall implementation; code dedup and pre-work for running
  SEV (and beyond) guests in selftests.

* Provide a common constructor and arch hook, which will eventually be
  used by x86 to automatically select the right hypercall (AMD vs. Intel).

* A bunch of added/enabled/fixed selftests for ARM64, covering memslots,
  breakpoints, stage-2 faults and access tracking.

* x86-specific selftest changes:

** Clean up x86's page table management.

** Clean up and enhance the "smaller maxphyaddr" test, and add a related
   test to cover generic emulation failure.

** Clean up the nEPT support checks.

** Add X86_PROPERTY_* framework to retrieve multi-bit CPUID values.

** Fix an ordering issue in the AMX test introduced by recent conversions
   to use kvm_cpu_has(), and harden the code to guard against similar bugs
   in the future.  Anything that tiggers caching of KVM's supported CPUID,
   kvm_cpu_has() in this case, effectively hides opt-in XSAVE features if
   the caching occurs before the test opts in via prctl().

Documentation:

* Remove deleted ioctls from documentation

* Clean up the docs for the x86 MSR filter.

* Various fixes
KVM: x86: Add proper ReST tables for userspace MSR exits/flags

Add ReST formatting to the set of userspace MSR exits/flags so that the
resulting HTML docs generate a table instead of malformed gunk.  This
also fixes a warning that was introduced by a recent cleanup of the
relevant documentation (yay copy+paste).

 >> Documentation/virt/kvm/api.rst:7287: WARNING: Block quote ends
    without a blank line; unexpected unindent.

Fixes: 1ae099540e8c ("KVM: x86: Allow deflecting unknown MSR accesses to user space")
Fixes: 1f158147181b ("KVM: x86: Clean up KVM_CAP_X86_USER_SPACE_MSR documentation")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221207000959.2035098-1-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 file changed