Message ID | 1443418711-24106-2-git-send-email-haozhong.zhang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
* Haozhong Zhang (haozhong.zhang@intel.com) wrote: > The newly added subsection 'vmstate_tsc_khz' in this patch results in > vcpu's TSC rate being saved on the source machine and loaded on the > target machine during the migration. > > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> Hi, I'd appreciate it if you could tie this to only do it on newer machine types; that way it won't break back migration. Dave > --- > target-i386/machine.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/target-i386/machine.c b/target-i386/machine.c > index 9fa0563..80108a3 100644 > --- a/target-i386/machine.c > +++ b/target-i386/machine.c > @@ -752,6 +752,25 @@ static const VMStateDescription vmstate_xss = { > } > }; > > +static bool tsc_khz_needed(void *opaque) > +{ > + X86CPU *cpu = opaque; > + CPUX86State *env = &cpu->env; > + > + return env->tsc_khz != 0; > +} > + > +static const VMStateDescription vmstate_tsc_khz = { > + .name = "cpu/tsc_khz", > + .version_id = 1, > + .minimum_version_id = 1, > + .needed = tsc_khz_needed, > + .fields = (VMStateField[]) { > + VMSTATE_INT64(env.tsc_khz, X86CPU), > + VMSTATE_END_OF_LIST() > + } > +}; > + > VMStateDescription vmstate_x86_cpu = { > .name = "cpu", > .version_id = 12, > @@ -871,6 +890,7 @@ VMStateDescription vmstate_x86_cpu = { > &vmstate_msr_hyperv_crash, > &vmstate_avx512, > &vmstate_xss, > + &vmstate_tsc_khz, > NULL > } > }; > -- > 2.4.8 > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Sep 29, 2015 at 08:00:13PM +0100, Dr. David Alan Gilbert wrote: > * Haozhong Zhang (haozhong.zhang@intel.com) wrote: > > The newly added subsection 'vmstate_tsc_khz' in this patch results in > > vcpu's TSC rate being saved on the source machine and loaded on the > > target machine during the migration. > > > > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> > > Hi, > I'd appreciate it if you could tie this to only do it on newer > machine types; that way it won't break back migration. > Does "back migration" mean migrating from QEMU w/ vmstate_tsc_khz subsection to QEMU w/o that subsection? - Haozhong > Dave > > > --- > > target-i386/machine.c | 20 ++++++++++++++++++++ > > 1 file changed, 20 insertions(+) > > > > diff --git a/target-i386/machine.c b/target-i386/machine.c > > index 9fa0563..80108a3 100644 > > --- a/target-i386/machine.c > > +++ b/target-i386/machine.c > > @@ -752,6 +752,25 @@ static const VMStateDescription vmstate_xss = { > > } > > }; > > > > +static bool tsc_khz_needed(void *opaque) > > +{ > > + X86CPU *cpu = opaque; > > + CPUX86State *env = &cpu->env; > > + > > + return env->tsc_khz != 0; > > +} > > + > > +static const VMStateDescription vmstate_tsc_khz = { > > + .name = "cpu/tsc_khz", > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .needed = tsc_khz_needed, > > + .fields = (VMStateField[]) { > > + VMSTATE_INT64(env.tsc_khz, X86CPU), > > + VMSTATE_END_OF_LIST() > > + } > > +}; > > + > > VMStateDescription vmstate_x86_cpu = { > > .name = "cpu", > > .version_id = 12, > > @@ -871,6 +890,7 @@ VMStateDescription vmstate_x86_cpu = { > > &vmstate_msr_hyperv_crash, > > &vmstate_avx512, > > &vmstate_xss, > > + &vmstate_tsc_khz, > > NULL > > } > > }; > > -- > > 2.4.8 > > > > > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
* Haozhong Zhang (haozhong.zhang@intel.com) wrote: > On Tue, Sep 29, 2015 at 08:00:13PM +0100, Dr. David Alan Gilbert wrote: > > * Haozhong Zhang (haozhong.zhang@intel.com) wrote: > > > The newly added subsection 'vmstate_tsc_khz' in this patch results in > > > vcpu's TSC rate being saved on the source machine and loaded on the > > > target machine during the migration. > > > > > > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> > > > > Hi, > > I'd appreciate it if you could tie this to only do it on newer > > machine types; that way it won't break back migration. > > > > Does "back migration" mean migrating from QEMU w/ vmstate_tsc_khz > subsection to QEMU w/o that subsection? Yes; like if we migrate from a newer qemu to an older qemu but with the same machine type. Dave > > - Haozhong > > > Dave > > > > > --- > > > target-i386/machine.c | 20 ++++++++++++++++++++ > > > 1 file changed, 20 insertions(+) > > > > > > diff --git a/target-i386/machine.c b/target-i386/machine.c > > > index 9fa0563..80108a3 100644 > > > --- a/target-i386/machine.c > > > +++ b/target-i386/machine.c > > > @@ -752,6 +752,25 @@ static const VMStateDescription vmstate_xss = { > > > } > > > }; > > > > > > +static bool tsc_khz_needed(void *opaque) > > > +{ > > > + X86CPU *cpu = opaque; > > > + CPUX86State *env = &cpu->env; > > > + > > > + return env->tsc_khz != 0; > > > +} > > > + > > > +static const VMStateDescription vmstate_tsc_khz = { > > > + .name = "cpu/tsc_khz", > > > + .version_id = 1, > > > + .minimum_version_id = 1, > > > + .needed = tsc_khz_needed, > > > + .fields = (VMStateField[]) { > > > + VMSTATE_INT64(env.tsc_khz, X86CPU), > > > + VMSTATE_END_OF_LIST() > > > + } > > > +}; > > > + > > > VMStateDescription vmstate_x86_cpu = { > > > .name = "cpu", > > > .version_id = 12, > > > @@ -871,6 +890,7 @@ VMStateDescription vmstate_x86_cpu = { > > > &vmstate_msr_hyperv_crash, > > > &vmstate_avx512, > > > &vmstate_xss, > > > + &vmstate_tsc_khz, > > > NULL > > > } > > > }; > > > -- > > > 2.4.8 > > > > > > > > -- > > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Sep 30, 2015 at 09:07:08AM +0100, Dr. David Alan Gilbert wrote: > * Haozhong Zhang (haozhong.zhang@intel.com) wrote: > > On Tue, Sep 29, 2015 at 08:00:13PM +0100, Dr. David Alan Gilbert wrote: > > > * Haozhong Zhang (haozhong.zhang@intel.com) wrote: > > > > The newly added subsection 'vmstate_tsc_khz' in this patch results in > > > > vcpu's TSC rate being saved on the source machine and loaded on the > > > > target machine during the migration. > > > > > > > > Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> > > > > > > Hi, > > > I'd appreciate it if you could tie this to only do it on newer > > > machine types; that way it won't break back migration. > > > > > > > Does "back migration" mean migrating from QEMU w/ vmstate_tsc_khz > > subsection to QEMU w/o that subsection? > > Yes; like if we migrate from a newer qemu to an older qemu but with > the same machine type. > This patch does break the back migration. I'll fix this in the next version. - Haozhong > Dave > > > > > - Haozhong > > > > > Dave > > > > > > > --- > > > > target-i386/machine.c | 20 ++++++++++++++++++++ > > > > 1 file changed, 20 insertions(+) > > > > > > > > diff --git a/target-i386/machine.c b/target-i386/machine.c > > > > index 9fa0563..80108a3 100644 > > > > --- a/target-i386/machine.c > > > > +++ b/target-i386/machine.c > > > > @@ -752,6 +752,25 @@ static const VMStateDescription vmstate_xss = { > > > > } > > > > }; > > > > > > > > +static bool tsc_khz_needed(void *opaque) > > > > +{ > > > > + X86CPU *cpu = opaque; > > > > + CPUX86State *env = &cpu->env; > > > > + > > > > + return env->tsc_khz != 0; > > > > +} > > > > + > > > > +static const VMStateDescription vmstate_tsc_khz = { > > > > + .name = "cpu/tsc_khz", > > > > + .version_id = 1, > > > > + .minimum_version_id = 1, > > > > + .needed = tsc_khz_needed, > > > > + .fields = (VMStateField[]) { > > > > + VMSTATE_INT64(env.tsc_khz, X86CPU), > > > > + VMSTATE_END_OF_LIST() > > > > + } > > > > +}; > > > > + > > > > VMStateDescription vmstate_x86_cpu = { > > > > .name = "cpu", > > > > .version_id = 12, > > > > @@ -871,6 +890,7 @@ VMStateDescription vmstate_x86_cpu = { > > > > &vmstate_msr_hyperv_crash, > > > > &vmstate_avx512, > > > > &vmstate_xss, > > > > + &vmstate_tsc_khz, > > > > NULL > > > > } > > > > }; > > > > -- > > > > 2.4.8 > > > > > > > > > > > -- > > > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/target-i386/machine.c b/target-i386/machine.c index 9fa0563..80108a3 100644 --- a/target-i386/machine.c +++ b/target-i386/machine.c @@ -752,6 +752,25 @@ static const VMStateDescription vmstate_xss = { } }; +static bool tsc_khz_needed(void *opaque) +{ + X86CPU *cpu = opaque; + CPUX86State *env = &cpu->env; + + return env->tsc_khz != 0; +} + +static const VMStateDescription vmstate_tsc_khz = { + .name = "cpu/tsc_khz", + .version_id = 1, + .minimum_version_id = 1, + .needed = tsc_khz_needed, + .fields = (VMStateField[]) { + VMSTATE_INT64(env.tsc_khz, X86CPU), + VMSTATE_END_OF_LIST() + } +}; + VMStateDescription vmstate_x86_cpu = { .name = "cpu", .version_id = 12, @@ -871,6 +890,7 @@ VMStateDescription vmstate_x86_cpu = { &vmstate_msr_hyperv_crash, &vmstate_avx512, &vmstate_xss, + &vmstate_tsc_khz, NULL } };
The newly added subsection 'vmstate_tsc_khz' in this patch results in vcpu's TSC rate being saved on the source machine and loaded on the target machine during the migration. Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com> --- target-i386/machine.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)