Message ID | 20200226122038.61481-6-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: Protected Virtualization support | expand |
On 26.02.20 13:20, Janosch Frank wrote: > Migration is not yet supported. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > --- > hw/s390x/s390-virtio-ccw.c | 28 ++++++++++++++++++++++------ > 1 file changed, 22 insertions(+), 6 deletions(-) > > diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c > index e506dd65ed..79f472c309 100644 > --- a/hw/s390x/s390-virtio-ccw.c > +++ b/hw/s390x/s390-virtio-ccw.c > @@ -42,6 +42,9 @@ > #include "hw/s390x/tod.h" > #include "sysemu/sysemu.h" > #include "hw/s390x/pv.h" > +#include "migration/blocker.h" > + > +static Error *pv_mig_blocker; > > S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) > { > @@ -325,18 +328,30 @@ static void s390_machine_unprotect(S390CcwMachineState *ms) > { > CPUState *t; > > - s390_pv_vm_disable(); > - CPU_FOREACH(t) { > - S390_CPU(t)->env.pv = false; > + if (ms->pv) { > + s390_pv_vm_disable(); > + CPU_FOREACH(t) { > + S390_CPU(t)->env.pv = false; > + } > + ms->pv = false; > } > - ms->pv = false; > } Shouldnt that hunk go into the previous patch?
On 2/26/20 3:05 PM, Christian Borntraeger wrote: > > > On 26.02.20 13:20, Janosch Frank wrote: >> Migration is not yet supported. >> >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> >> --- >> hw/s390x/s390-virtio-ccw.c | 28 ++++++++++++++++++++++------ >> 1 file changed, 22 insertions(+), 6 deletions(-) >> >> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c >> index e506dd65ed..79f472c309 100644 >> --- a/hw/s390x/s390-virtio-ccw.c >> +++ b/hw/s390x/s390-virtio-ccw.c >> @@ -42,6 +42,9 @@ >> #include "hw/s390x/tod.h" >> #include "sysemu/sysemu.h" >> #include "hw/s390x/pv.h" >> +#include "migration/blocker.h" >> + >> +static Error *pv_mig_blocker; >> >> S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) >> { >> @@ -325,18 +328,30 @@ static void s390_machine_unprotect(S390CcwMachineState *ms) >> { >> CPUState *t; >> >> - s390_pv_vm_disable(); >> - CPU_FOREACH(t) { >> - S390_CPU(t)->env.pv = false; >> + if (ms->pv) { >> + s390_pv_vm_disable(); >> + CPU_FOREACH(t) { >> + S390_CPU(t)->env.pv = false; >> + } >> + ms->pv = false; >> } >> - ms->pv = false; >> } > > Shouldnt that hunk go into the previous patch? > > Yes, something went wrong
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index e506dd65ed..79f472c309 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -42,6 +42,9 @@ #include "hw/s390x/tod.h" #include "sysemu/sysemu.h" #include "hw/s390x/pv.h" +#include "migration/blocker.h" + +static Error *pv_mig_blocker; S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) { @@ -325,18 +328,30 @@ static void s390_machine_unprotect(S390CcwMachineState *ms) { CPUState *t; - s390_pv_vm_disable(); - CPU_FOREACH(t) { - S390_CPU(t)->env.pv = false; + if (ms->pv) { + s390_pv_vm_disable(); + CPU_FOREACH(t) { + S390_CPU(t)->env.pv = false; + } + ms->pv = false; } - ms->pv = false; } static int s390_machine_protect(S390CcwMachineState *ms) { + static Error *local_err; CPUState *t; int rc; + if (!pv_mig_blocker) { + error_setg(&pv_mig_blocker, + "protected VMs are currently not migrateable."); + } + migrate_add_blocker(pv_mig_blocker, &local_err); + if (local_err) { + goto out_err; + } + /* Create SE VM */ rc = s390_pv_vm_enable(); if (rc) { @@ -438,11 +453,12 @@ static void s390_machine_reset(MachineState *machine) if (s390_machine_protect(ms)) { s390_machine_inject_pv_error(cs); - s390_cpu_set_state(S390_CPU_STATE_OPERATING, cpu); - return; + goto pv_err; } run_on_cpu(cs, s390_do_cpu_load_normal, RUN_ON_CPU_NULL); +pv_err: + s390_cpu_set_state(S390_CPU_STATE_OPERATING, cpu); break; default: g_assert_not_reached();
Migration is not yet supported. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- hw/s390x/s390-virtio-ccw.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-)