[PATCH 00/17] kvm: drop support for really old kernels

Paolo Bonzini posted 17 patches 1 year, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20231018163728.363879-1-pbonzini@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Cornelia Huck <cohuck@redhat.com>, Halil Pasic <pasic@linux.ibm.com>, Eric Farman <farman@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, Thomas Huth <thuth@redhat.com>, David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>, Peter Xu <peterx@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Marcelo Tosatti <mtosatti@redhat.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>, Weiwei Li <liweiwei@iscas.ac.cn>, Daniel Henrique Barboza <dbarboza@ventanamicro.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
accel/kvm/kvm-all.c            | 239 ++++-----------------------------
accel/stubs/kvm-stub.c         |  14 --
hw/i386/kvm/clock.c            |   4 -
hw/i386/kvm/i8254.c            |  38 ++----
hw/i386/pc.c                   |   6 +-
hw/intc/arm_gicv3_its_common.c |   3 +-
hw/intc/arm_gicv3_its_kvm.c    |   2 +-
hw/misc/pci-testdev.c          |   3 +-
hw/s390x/virtio-ccw.c          |   4 -
hw/virtio/vhost-user.c         |   7 +-
hw/virtio/virtio-mmio.c        |   4 -
hw/virtio/virtio-pci.c         |  23 +---
include/sysemu/kvm.h           |  39 +-----
include/sysemu/kvm_int.h       |   6 -
system/memory.c                |  16 +--
target/arm/kvm.c               |  10 +-
target/i386/kvm/kvm.c          | 225 +++----------------------------
target/i386/kvm/kvm_i386.h     |   2 -
target/riscv/kvm/kvm-cpu.c     |   2 +-
20 files changed, 77 insertions(+), 572 deletions(-)
[PATCH 00/17] kvm: drop support for really old kernels
Posted by Paolo Bonzini 1 year, 1 month ago
This removes checks for KVM capabilities introduced in very old kernels.
I focused mostly (though not exclusively) on caps that are extremely
old or have a lot of supporting code around them.  The new inferior
limit is Linux 4.4 (or RHEL/CentOS 7) for all architectures except ARM,
for which the limit is Linux 4.19 (or RHEL/CentOS 8).

Note that sometimes older capabilities have evolved and have to
be tested anyway, for example in the case of KVM_CAP_ADJUST_CLOCK
it is possible to remove kvm_has_adjust_clock() but not
kvm_has_adjust_clock_stable().

I intentionally didn't include capabilities that map to guest-visible
features, such as KVM_CAP_TSC_DEADLINE_TIMER, instead focusing more
on very old APIs.

Kernel code technically does not require KVM_CAP_IRQFD to be always
available on architectures that support an in-kernel interrupt controller;
however this is currently true for all supported architectures, and
I plan to submit a kernel patch to ensure this equivalence.

Paolo

Paolo Bonzini (17):
  kvm: remove unnecessary stub
  kvm: require KVM_CAP_INTERNAL_ERROR_DATA
  kvm: require KVM_CAP_SIGNAL_MSI
  kvm: require KVM_CAP_IRQFD for kernel irqchip
  kvm: drop reference to KVM_CAP_PCI_2_3
  kvm: assume that many ioeventfds can be created
  kvm: require KVM_CAP_IOEVENTFD and KVM_CAP_IOEVENTFD_ANY_LENGTH
  kvm: unify listeners for PIO address space
  kvm: arm: require KVM_CAP_SET_VCPU_EVENTS
  kvm: i386: move KVM_CAP_IRQ_ROUTING detection to kvm_arch_required_capabilities
  kvm: i386: require KVM_CAP_DEBUGREGS
  kvm: i386: require KVM_CAP_XSAVE
  kvm: i386: require KVM_CAP_SET_VCPU_EVENTS and KVM_CAP_X86_ROBUST_SINGLESTEP
  kvm: i386: require KVM_CAP_MCE
  kvm: i386: require KVM_CAP_ADJUST_CLOCK
  kvm: i386: require KVM_CAP_SET_IDENTITY_MAP_ADDR
  kvm: i8254: require KVM_CAP_PIT2 and KVM_CAP_PIT_STATE2

 accel/kvm/kvm-all.c            | 239 ++++-----------------------------
 accel/stubs/kvm-stub.c         |  14 --
 hw/i386/kvm/clock.c            |   4 -
 hw/i386/kvm/i8254.c            |  38 ++----
 hw/i386/pc.c                   |   6 +-
 hw/intc/arm_gicv3_its_common.c |   3 +-
 hw/intc/arm_gicv3_its_kvm.c    |   2 +-
 hw/misc/pci-testdev.c          |   3 +-
 hw/s390x/virtio-ccw.c          |   4 -
 hw/virtio/vhost-user.c         |   7 +-
 hw/virtio/virtio-mmio.c        |   4 -
 hw/virtio/virtio-pci.c         |  23 +---
 include/sysemu/kvm.h           |  39 +-----
 include/sysemu/kvm_int.h       |   6 -
 system/memory.c                |  16 +--
 target/arm/kvm.c               |  10 +-
 target/i386/kvm/kvm.c          | 225 +++----------------------------
 target/i386/kvm/kvm_i386.h     |   2 -
 target/riscv/kvm/kvm-cpu.c     |   2 +-
 20 files changed, 77 insertions(+), 572 deletions(-)

-- 
2.41.0