[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 2/2] virtio: refresh registers at reset time
From: |
Greg Kurz |
Subject: |
[Qemu-ppc] [PATCH 2/2] virtio: refresh registers at reset time |
Date: |
Mon, 07 Oct 2013 17:23:44 +0200 |
User-agent: |
StGit/0.16 |
We need to support the guest endianness as soon as a virtio device shows
up. Alex suggested this can achieved by calling cpu_synchronize_state().
To have it working on PowerPC, we need to add LPCR in the sync register
functions.
Signed-off-by: Greg Kurz <address@hidden>
---
hw/virtio/virtio.c | 5 +++++
target-ppc/kvm.c | 4 ++++
2 files changed, 9 insertions(+)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index bc728d8..4a294e1 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -19,6 +19,7 @@
#include "qemu/atomic.h"
#include "hw/virtio/virtio-bus.h"
#include "hw/virtio/virtio-access.h"
+#include "sysemu/kvm.h"
/*
* The alignment to use between consumer and producer parts of vring.
@@ -566,6 +567,10 @@ void virtio_reset(void *opaque)
vdev->vq[i].signalled_used_valid = false;
vdev->vq[i].notification = true;
}
+
+ if (current_cpu) {
+ cpu_synchronize_state(current_cpu);
+ }
}
uint32_t virtio_config_readb(VirtIODevice *vdev, uint32_t addr)
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c
index b77ce5e..69ebe2a 100644
--- a/target-ppc/kvm.c
+++ b/target-ppc/kvm.c
@@ -869,6 +869,8 @@ int kvm_arch_put_registers(CPUState *cs, int level)
DPRINTF("Warning: Unable to set VPA information to KVM\n");
}
}
+
+ kvm_put_one_spr(cs, KVM_REG_PPC_LPCR, SPR_LPCR);
#endif /* TARGET_PPC64 */
}
@@ -1091,6 +1093,8 @@ int kvm_arch_get_registers(CPUState *cs)
DPRINTF("Warning: Unable to get VPA information from KVM\n");
}
}
+
+ kvm_get_one_spr(cs, KVM_REG_PPC_LPCR, SPR_LPCR);
#endif
}