Linux 6.0 KVM Brings Intel IPI Virtualization, AMD x2AVIC
On the Intel side for KVM virtualization with Linux 6.0, there is Intel IPI virtualization support after it didn't end up getting pulled into Linux 5.19. Inter-Process Interrupts (IPI) virtualization aims to eliminate VM-exits when issuing IPI (inter-processor interrupts) on a source vCPU. IPI Virtualization was outlined by Intel last year in a programmer reference manual update and shortly thereafter Intel engineers began posting their Linux support patches. IPI Virtualization aims to provide for more efficient inter-process interrupts within VMs. This IPI Virtualization support should eliminate the "much overhead" exhibited with IPI intensive tasks and on the hardware side will be supported with forthcoming Xeon Scalable "Sapphire Rapids" processors.
PEBS virtualization for existing Xeon Ice Lake servers is also introduced with Linux 6.0. The Linux kernel has already supported Precise Event Based Sampling (PEBS) for greater sampling precision and there has been support for years that allows for profiling within KVM guests. The change with Linux 6.0 is needing EPT-friendly PEBS for offering the support on Ice Lake servers.
Meanwhile on the AMD side there is x2AVIC support merged for KVM. Since earlier this year AMD has been preparing x2APIC virtualization support for upping the KVM limit to 511 CPUs from the current limit of 255 vCPUs. This x2AVIC is important for next-generation AMD EPYC processors. Genoa is slated to have up to 96 cores / 192 threads per socket or Bergamo at 128 cores / 256 threads per socket, so with 2P servers, the existing 255 vCPU limitation could be easily hit. The x2AVIC support overcomes this limitation.
RISC-V with KVM for Linux 6.0 meanwhile adds a system instruction emulation framework, a CSR emulation framework, Svpbmt extension support inside guests, and other improvements.
There are also various other improvements like allowing NX huge-page mitigation to be disabled on a per-VM basis, support for getting/setting the speaker port data bit, and other fixes.
See the pull request for the full list of Kernel-based Virtual Machine changes for the Linux 6.0 cycle.