In order to differenciate between architectures that require no extra synchronisation when accessing the dirty ring and those who do, add a new capability (KVM_CAP_DIRTY_LOG_RING_ACQ_REL) that identify the latter sort. TSO architectures can obviously advertise both, while relaxed architectures must only advertise the ACQ_REL version. This requires some configuration symbol rejigging, with HAVE_KVM_DIRTY_RING being only indirectly selected by two top-level config symbols: - HAVE_KVM_DIRTY_RING_TSO for strongly ordered architectures (x86) - HAVE_KVM_DIRTY_RING_ACQ_REL for weakly ordered architectures (arm64) Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Reviewed-by: Gavin Shan <gshan@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Link: https://lore.kernel.org/r/20220926145120.27974-3-maz@kernel.org
1.6 KiB
SPDX-License-Identifier: GPL-2.0
KVM common configuration items and defaults
config HAVE_KVM bool
config HAVE_KVM_PFNCACHE bool
config HAVE_KVM_IRQCHIP bool
config HAVE_KVM_IRQFD bool
config HAVE_KVM_IRQ_ROUTING bool
config HAVE_KVM_DIRTY_RING bool
Only strongly ordered architectures can select this, as it doesn't
put any explicit constraint on userspace ordering. They can also
select the _ACQ_REL version.
config HAVE_KVM_DIRTY_RING_TSO bool select HAVE_KVM_DIRTY_RING depends on X86
Weakly ordered architectures can only select this, advertising
to userspace the additional ordering requirements.
config HAVE_KVM_DIRTY_RING_ACQ_REL bool select HAVE_KVM_DIRTY_RING
config HAVE_KVM_EVENTFD bool select EVENTFD
config KVM_MMIO bool
config KVM_ASYNC_PF bool
Toggle to switch between direct notification and batch job
config KVM_ASYNC_PF_SYNC bool
config HAVE_KVM_MSI bool
config HAVE_KVM_CPU_RELAX_INTERCEPT bool
config KVM_VFIO bool
config HAVE_KVM_ARCH_TLB_FLUSH_ALL bool
config HAVE_KVM_INVALID_WAKEUPS bool
config KVM_GENERIC_DIRTYLOG_READ_PROTECT bool
config KVM_COMPAT def_bool y depends on KVM && COMPAT && !(S390 || ARM64 || RISCV)
config HAVE_KVM_IRQ_BYPASS bool
config HAVE_KVM_VCPU_ASYNC_IOCTL bool
config HAVE_KVM_VCPU_RUN_PID_CHANGE bool
config HAVE_KVM_NO_POLL bool
config KVM_XFER_TO_GUEST_WORK bool
config HAVE_KVM_PM_NOTIFIER bool