[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states |
Date: |
Thu, 13 Jul 2017 14:27:21 +0200 |
On Thu, 13 Jul 2017 12:40:29 +0200
Christian Borntraeger <address@hidden> wrote:
> From: Yi Min Zhao <address@hidden>
>
> During migration we should transfer ais states to the target guest.
> This patch introduces a subsection to kvm_s390_flic_vmstate and new
> vmsd for qemu_flic. The ais states need to be migrated only when
> ais is supported.
>
> Signed-off-by: Yi Min Zhao <address@hidden>
> Signed-off-by: Christian Borntraeger <address@hidden>
> ---
> hw/intc/s390_flic.c | 20 ++++++++++++
> hw/intc/s390_flic_kvm.c | 75
> ++++++++++++++++++++++++++++++++++++++++++++
> include/hw/s390x/s390_flic.h | 1 +
> 3 files changed, 96 insertions(+)
>
> diff --git a/hw/intc/s390_flic_kvm.c b/hw/intc/s390_flic_kvm.c
> index d93503f..4cf73ee 100644
> --- a/hw/intc/s390_flic_kvm.c
> +++ b/hw/intc/s390_flic_kvm.c
> @@ -413,7 +413,78 @@ out:
> return r;
> }
>
> +typedef struct KVMS390FLICStateMigTmp {
> + KVMS390FLICState *parent;
> + uint8_t simm;
> + uint8_t nimm;
> +} KVMS390FLICStateMigTmp;
> +
> +static void kvm_flic_ais_pre_save(void *opaque)
> +{
> + KVMS390FLICStateMigTmp *tmp = opaque;
> + KVMS390FLICState *flic = tmp->parent;
> + struct kvm_s390_ais_all ais;
> + struct kvm_device_attr attr = {
> + .group = KVM_DEV_FLIC_AISM_ALL,
> + .addr = (uint64_t)&ais,
> + .attr = sizeof(ais),
> + };
> +
> + if (ioctl(flic->fd, KVM_GET_DEVICE_ATTR, &attr)) {
> + error_report("Failed to retrieve kvm flic ais states");
There's not much else we can do in that case, is there?
> + return;
> + }
> +
> + tmp->simm = ais.simm;
> + tmp->nimm = ais.nimm;
> +}
> +
> +static int kvm_flic_ais_post_load(void *opaque, int version_id)
> +{
> + KVMS390FLICStateMigTmp *tmp = opaque;
> + KVMS390FLICState *flic = tmp->parent;
> + struct kvm_s390_ais_all ais = {
> + .simm = tmp->simm,
> + .nimm = tmp->nimm,
> + };
> + struct kvm_device_attr attr = {
> + .group = KVM_DEV_FLIC_AISM_ALL,
> + .addr = (uint64_t)&ais,
> + };
> +
> + if (!ais_needed(flic)) {
> + return -ENOSYS;
> + }
I do not understand this... does that mean that
- we should never get here or
- we should not try to change the fields or
- I need coffee?
> +
> + return ioctl(flic->fd, KVM_SET_DEVICE_ATTR, &attr) ? -errno : 0;
> +}
> +
> +static const VMStateDescription kvm_s390_flic_ais_tmp = {
> + .name = "s390-flic-ais-tmp",
> + .pre_save = kvm_flic_ais_pre_save,
> + .post_load = kvm_flic_ais_post_load,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT8(simm, KVMS390FLICStateMigTmp),
> + VMSTATE_UINT8(nimm, KVMS390FLICStateMigTmp),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> +static const VMStateDescription kvm_s390_flic_vmstate_ais = {
> + .name = "s390-flic/ais",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .needed = ais_needed,
> + .fields = (VMStateField[]) {
> + VMSTATE_WITH_TMP(KVMS390FLICState, KVMS390FLICStateMigTmp,
> + kvm_s390_flic_ais_tmp),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> static const VMStateDescription kvm_s390_flic_vmstate = {
> + /* should have been like kvm-s390-flic,
> + * can't change without breaking compat */
:/
> .name = "s390-flic",
> .version_id = FLIC_SAVEVM_VERSION,
> .minimum_version_id = FLIC_SAVEVM_VERSION,
- [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, (continued)
- [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Cornelia Huck, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Cornelia Huck, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Cornelia Huck, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Cornelia Huck, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 2/3] s390x/cpumodel: add zpci, aen and ais facilities, Halil Pasic, 2017/07/13
[Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states,
Cornelia Huck <=
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Cornelia Huck, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Halil Pasic, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Christian Borntraeger, 2017/07/13
- Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Cornelia Huck, 2017/07/13
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Halil Pasic, 2017/07/13
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Dr. David Alan Gilbert, 2017/07/13
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Christian Borntraeger, 2017/07/13
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Dr. David Alan Gilbert, 2017/07/13
Re: [Qemu-devel] [PATCH/s390-next 3/3] s390x/flic: migrate ais states, Halil Pasic, 2017/07/13