diff options
author | Jens Freimann | 2015-03-02 17:44:24 +0100 |
---|---|---|
committer | Cornelia Huck | 2015-05-08 10:36:19 +0200 |
commit | 3cda44f7bae5c9feddc11630ba6eecb2e3bed425 (patch) | |
tree | a335b5fcfd32f32d675e98fae220a934cca26f02 /target-s390x/machine.c | |
parent | s390x: move fpu regs into a subsection of the vmstate (diff) | |
download | qemu-3cda44f7bae5c9feddc11630ba6eecb2e3bed425.tar.gz qemu-3cda44f7bae5c9feddc11630ba6eecb2e3bed425.tar.xz qemu-3cda44f7bae5c9feddc11630ba6eecb2e3bed425.zip |
s390x/kvm: migrate vcpu interrupt state
This patch adds support to migrate vcpu interrupts.
We use ioctl KVM_S390_GET_IRQ_STATE and _SET_IRQ_STATE
to get/set the complete interrupt state for a vcpu.
Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'target-s390x/machine.c')
-rw-r--r-- | target-s390x/machine.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/target-s390x/machine.c b/target-s390x/machine.c index a034423447..7853e3c989 100644 --- a/target-s390x/machine.c +++ b/target-s390x/machine.c @@ -28,10 +28,19 @@ static int cpu_post_load(void *opaque, int version_id) */ if (kvm_enabled()) { kvm_s390_set_cpu_state(cpu, cpu->env.cpu_state); + return kvm_s390_vcpu_interrupt_post_load(cpu); } return 0; } +static void cpu_pre_save(void *opaque) +{ + S390CPU *cpu = opaque; + + if (kvm_enabled()) { + kvm_s390_vcpu_interrupt_pre_save(cpu); + } +} const VMStateDescription vmstate_fpu = { .name = "cpu/fpu", @@ -67,7 +76,8 @@ static inline bool fpu_needed(void *opaque) const VMStateDescription vmstate_s390_cpu = { .name = "cpu", .post_load = cpu_post_load, - .version_id = 3, + .pre_save = cpu_pre_save, + .version_id = 4, .minimum_version_id = 3, .fields = (VMStateField[]) { VMSTATE_UINT64_ARRAY(env.regs, S390CPU, 16), @@ -86,6 +96,9 @@ const VMStateDescription vmstate_s390_cpu = { VMSTATE_UINT64_ARRAY(env.cregs, S390CPU, 16), VMSTATE_UINT8(env.cpu_state, S390CPU), VMSTATE_UINT8(env.sigp_order, S390CPU), + VMSTATE_UINT32_V(irqstate_saved_size, S390CPU, 4), + VMSTATE_VBUFFER_UINT32(irqstate, S390CPU, 4, NULL, 0, + irqstate_saved_size), VMSTATE_END_OF_LIST() }, .subsections = (VMStateSubsection[]) { |