qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 8/9] s390x/kvm: rework KVM synchronize to tracing fo


From: Cornelia Huck
Subject: [Qemu-devel] [PATCH 8/9] s390x/kvm: rework KVM synchronize to tracing for some ONEREGS
Date: Mon, 14 Apr 2014 18:48:29 +0200

From: Christian Borntraeger <address@hidden>

Some ONE_REGS on s390 are not protected by a capability. Older kernels
might not provide those and return an error. Fortunately these registers
are only critical for the migration path. There is no need to error out
on reset and normal runtime. Furthermore, these kernels don't provide
a proper dirty bitmap anyway, so let's use tracing for those errors.

Signed-off-by: Christian Borntraeger <address@hidden>
Reviewed-by: Jason J. Herne <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
 target-s390x/kvm.c |   31 +++++++++++++------------------
 trace-events       |    4 ++++
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index db9777c..ec1ce2f 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 "trace.h"
 
 /* #define DEBUG_KVM */
 
@@ -164,23 +165,20 @@ int kvm_arch_put_registers(CPUState *cs, int level)
 
     reg.id = KVM_REG_S390_CPU_TIMER;
     reg.addr = (__u64)&(env->cputm);
-    ret = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
-    if (ret < 0) {
-        return ret;
+    if (kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_set(reg.id, strerror(errno));
     }
 
     reg.id = KVM_REG_S390_CLOCK_COMP;
     reg.addr = (__u64)&(env->ckc);
-    ret = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
-    if (ret < 0) {
-        return ret;
+    if (kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_set(reg.id, strerror(errno));
     }
 
     reg.id = KVM_REG_S390_TODPR;
     reg.addr = (__u64)&(env->todpr);
-    ret = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
-    if (ret < 0) {
-        return ret;
+    if (kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_set(reg.id, strerror(errno));
     }
 
     if (cap_async_pf) {
@@ -291,23 +289,20 @@ int kvm_arch_get_registers(CPUState *cs)
     /* One Regs */
     reg.id = KVM_REG_S390_CPU_TIMER;
     reg.addr = (__u64)&(env->cputm);
-    r = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
-    if (r < 0) {
-        return r;
+    if (kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_get(reg.id, strerror(errno));
     }
 
     reg.id = KVM_REG_S390_CLOCK_COMP;
     reg.addr = (__u64)&(env->ckc);
-    r = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
-    if (r < 0) {
-        return r;
+    if (kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_get(reg.id, strerror(errno));
     }
 
     reg.id = KVM_REG_S390_TODPR;
     reg.addr = (__u64)&(env->todpr);
-    r = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
-    if (r < 0) {
-        return r;
+    if (kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg)) {
+        trace_kvm_failed_reg_get(reg.id, strerror(errno));
     }
 
     if (cap_async_pf) {
diff --git a/trace-events b/trace-events
index 9303245..47882b4 100644
--- a/trace-events
+++ b/trace-events
@@ -1222,3 +1222,7 @@ xen_pv_mmio_write(uint64_t addr) "WARNING: write to Xen 
PV Device MMIO space (ad
 # hw/pci/pci_host.c
 pci_cfg_read(const char *dev, unsigned devid, unsigned fnid, unsigned offs, 
unsigned val) "%s %02u:%u @0x%x -> 0x%x"
 pci_cfg_write(const char *dev, unsigned devid, unsigned fnid, unsigned offs, 
unsigned val) "%s %02u:%u @0x%x <- 0x%x"
+
+# target-s390/kvm.c
+kvm_failed_reg_get(uint64_t id, const char *msg) "Warning: Unable to retrieve 
ONEREG %" PRIu64 " from KVM: %s"
+kvm_failed_reg_set(uint64_t id, const char *msg) "Warning: Unable to set 
ONEREG %" PRIu64 " to KVM: %s"
-- 
1.7.9.5




reply via email to

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