qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] Enable async page faults


From: Dominik Dingel
Subject: [Qemu-devel] [PATCH] Enable async page faults
Date: Tue, 9 Jul 2013 17:47:46 +0200

S390 can also use async page faults, to enhance guest scheduling.
But in the case of live migration we want to disable the feature and know
if there are still notifications in flight.

Signed-off-by: Dominik Dingel <address@hidden>
---
 target-s390x/kvm.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index 42f758f..61df7d4 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -36,6 +36,7 @@
 #include "sysemu/device_tree.h"
 #include "qapi/qmp/qjson.h"
 #include "monitor/monitor.h"
+#include "migration/migration.h"
 
 /* #define DEBUG_KVM */
 
@@ -92,9 +93,50 @@ const KVMCapabilityInfo kvm_arch_required_capabilities[] = {
 
 static int cap_sync_regs;
 
+static int apf_disable(QEMUFile *f, void *opaque)
+{
+    kvm_vm_ioctl(opaque, KVM_S390_APF_DISABLE);
+    return 0;
+}
+
+static void apf_enable(void *opaque)
+{
+    kvm_vm_ioctl(opaque, KVM_S390_APF_ENABLE);
+}
+
+static int apf_finish(QEMUFile *f, void *opaque, int version_id)
+{
+    apf_enable(opaque);
+    return 0;
+}
+
+static uint64_t apf_status(QEMUFile *f, void *opaque, uint64_t max_size)
+{
+    uint64_t rc = 0;
+
+    if (kvm_vm_ioctl(opaque, KVM_S390_APF_STATUS) !=
+        KVM_S390_APF_DISABLED_NON_PENDING) {
+        rc = 0xff0000;
+    }
+    return rc;
+}
+
+SaveVMHandlers savevm_apf_handlers = {
+    .save_live_setup = apf_disable,
+    .save_live_iterate = NULL,
+    .save_live_complete = NULL,
+    .save_live_pending = apf_status,
+    .load_state = apf_finish,
+    .cancel = apf_enable,
+};
+
 int kvm_arch_init(KVMState *s)
 {
     cap_sync_regs = kvm_check_extension(s, KVM_CAP_SYNC_REGS);
+    if (kvm_check_extension(s, KVM_CAP_ASYNC_PF)) {
+        register_savevm_live(NULL, "apf", -1, 1, &savevm_apf_handlers, s);
+        kvm_vm_ioctl(s, KVM_S390_APF_ENABLE);
+    }
     return 0;
 }
 
-- 
1.8.2.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]