aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/virt/kvm/Kconfig
diff options
context:
space:
mode:
authorMarc Zyngier <maz@kernel.org>2022-09-26 15:51:16 +0100
committerMarc Zyngier <maz@kernel.org>2022-09-29 10:23:08 +0100
commit17601bfed909fa080fcfd227b57da2bd4dc2d2a6 (patch)
tree79e7babcef9a32617591bd2147206b00dab25714 /virt/kvm/Kconfig
parentKVM: Use acquire/release semantics when accessing dirty ring GFN state (diff)
downloadwireguard-linux-17601bfed909fa080fcfd227b57da2bd4dc2d2a6.tar.xz
wireguard-linux-17601bfed909fa080fcfd227b57da2bd4dc2d2a6.zip
KVM: Add KVM_CAP_DIRTY_LOG_RING_ACQ_REL capability and config option
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
Diffstat (limited to 'virt/kvm/Kconfig')
-rw-r--r--virt/kvm/Kconfig14
1 files changed, 14 insertions, 0 deletions
diff --git a/virt/kvm/Kconfig b/virt/kvm/Kconfig
index a8c5c9f06b3c..800f9470e36b 100644
--- a/virt/kvm/Kconfig
+++ b/virt/kvm/Kconfig
@@ -19,6 +19,20 @@ config HAVE_KVM_IRQ_ROUTING
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