From: Eduardo Habkost <ehabkost@redhat.com>
To: Haozhong Zhang <haozhong.zhang@intel.com>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
Marcelo Tosatti <mtosatti@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
kvm@vger.kernel.org, Boris Petkov <bp@suse.de>,
Tony Luck <tony.luck@intel.com>,
Andi Kleen <andi.kleen@intel.com>,
Ashok Raj <ashok.raj@intel.com>
Subject: Re: [PATCH v3 2/2] target-i386: add migration support for Intel LMCE
Date: Tue, 7 Jun 2016 17:18:28 -0300 [thread overview]
Message-ID: <20160607201828.GD18662@thinpad.lan.raisama.net> (raw)
In-Reply-To: <20160603060944.17373-3-haozhong.zhang@intel.com>
On Fri, Jun 03, 2016 at 02:09:44PM +0800, Haozhong Zhang wrote:
> LMCE is disabled by default, but a cpu option 'lmce=on/off' is provided
> to enable/disable it. Migration is only allowed between VCPUs with the
> same lmce option.
>
> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> ---
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: Boris Petkov <bp@suse.de>
> Cc: Tony Luck <tony.luck@intel.com>
> Cc: Andi Kleen <andi.kleen@intel.com>
> Cc: Ashok Raj <ashok.raj@intel.com>
> ---
> include/hw/i386/pc.h | 7 ++++++-
> target-i386/cpu.c | 1 +
> target-i386/cpu.h | 5 +++++
> target-i386/machine.c | 24 ++++++++++++++++++++++++
> 4 files changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index ca23609..058eef9 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -357,7 +357,12 @@ int e820_get_num_entries(void);
> bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>
> #define PC_COMPAT_2_6 \
> - HW_COMPAT_2_6
> + HW_COMPAT_2_6 \
> + {\
> + .driver = TYPE_X86_CPU,\
> + .property = "lmce",\
> + .value = "off",\
> + },
You don't need this if lmce is disabled by default.
>
> #define PC_COMPAT_2_5 \
> PC_COMPAT_2_6 \
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 9b4dbab..c69cc17 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -3232,6 +3232,7 @@ static Property x86_cpu_properties[] = {
> DEFINE_PROP_UINT32("xlevel", X86CPU, env.cpuid_xlevel, 0),
> DEFINE_PROP_UINT32("xlevel2", X86CPU, env.cpuid_xlevel2, 0),
> DEFINE_PROP_STRING("hv-vendor-id", X86CPU, hyperv_vendor_id),
> + DEFINE_PROP_BOOL("lmce", X86CPU, enable_lmce, false),
Maybe this belong to patch 1/2?
> DEFINE_PROP_END_OF_LIST()
> };
>
> diff --git a/target-i386/cpu.h b/target-i386/cpu.h
> index 2d411ba..b512fd6 100644
> --- a/target-i386/cpu.h
> +++ b/target-i386/cpu.h
> @@ -1182,6 +1182,11 @@ struct X86CPU {
> */
> bool enable_pmu;
>
> + /* Enable LMCE support which is set via cpu option 'lmce=on/off'. LMCE is
> + * disabled by default to avoid breaking the migration between QEMU with
> + * different LMCE support. Only migrating between QEMU with the same LMCE
> + * support is allowed.
> + */
> bool enable_lmce;
>
> /* in order to simplify APIC support, we leave this pointer to the
> diff --git a/target-i386/machine.c b/target-i386/machine.c
> index cb9adf2..b55d376 100644
> --- a/target-i386/machine.c
> +++ b/target-i386/machine.c
> @@ -347,6 +347,11 @@ static int cpu_post_load(void *opaque, int version_id)
> return -EINVAL;
> }
>
> + if (!cpu->enable_lmce && (env->mcg_cap & MCG_LMCE_P)) {
> + error_report("LMCE not enabled");
> + return -EINVAL;
> + }
Nice. But the error message could be clearer, to indicate that it
is about command-line configuration not being the same on both
sides. What about something like:
config mismatch: VCPU has LMCE is enabled, but "lmce" option is disabled
> +
> /*
> * Real mode guest segments register DPL should be zero.
> * Older KVM version were setting it wrongly.
> @@ -896,6 +901,24 @@ static const VMStateDescription vmstate_tsc_khz = {
> }
> };
>
> +static bool mcg_ext_ctl_needed(void *opaque)
> +{
> + X86CPU *cpu = opaque;
> + CPUX86State *env = &cpu->env;
> + return cpu->enable_lmce && env->mcg_ext_ctl;
> +}
> +
> +static const VMStateDescription vmstate_mcg_ext_ctl = {
> + .name = "cpu/mcg_ext_ctl",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .needed = mcg_ext_ctl_needed,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT64(env.mcg_ext_ctl, X86CPU),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> VMStateDescription vmstate_x86_cpu = {
> .name = "cpu",
> .version_id = 12,
> @@ -1022,6 +1045,7 @@ VMStateDescription vmstate_x86_cpu = {
> #ifdef TARGET_X86_64
> &vmstate_pkru,
> #endif
> + &vmstate_mcg_ext_ctl,
> NULL
> }
> };
> --
> 2.8.3
>
--
Eduardo
WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Habkost <ehabkost@redhat.com>
To: Haozhong Zhang <haozhong.zhang@intel.com>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
Marcelo Tosatti <mtosatti@redhat.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
kvm@vger.kernel.org, Boris Petkov <bp@suse.de>,
Tony Luck <tony.luck@intel.com>,
Andi Kleen <andi.kleen@intel.com>,
Ashok Raj <ashok.raj@intel.com>
Subject: Re: [Qemu-devel] [PATCH v3 2/2] target-i386: add migration support for Intel LMCE
Date: Tue, 7 Jun 2016 17:18:28 -0300 [thread overview]
Message-ID: <20160607201828.GD18662@thinpad.lan.raisama.net> (raw)
In-Reply-To: <20160603060944.17373-3-haozhong.zhang@intel.com>
On Fri, Jun 03, 2016 at 02:09:44PM +0800, Haozhong Zhang wrote:
> LMCE is disabled by default, but a cpu option 'lmce=on/off' is provided
> to enable/disable it. Migration is only allowed between VCPUs with the
> same lmce option.
>
> Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
> ---
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: Boris Petkov <bp@suse.de>
> Cc: Tony Luck <tony.luck@intel.com>
> Cc: Andi Kleen <andi.kleen@intel.com>
> Cc: Ashok Raj <ashok.raj@intel.com>
> ---
> include/hw/i386/pc.h | 7 ++++++-
> target-i386/cpu.c | 1 +
> target-i386/cpu.h | 5 +++++
> target-i386/machine.c | 24 ++++++++++++++++++++++++
> 4 files changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index ca23609..058eef9 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -357,7 +357,12 @@ int e820_get_num_entries(void);
> bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>
> #define PC_COMPAT_2_6 \
> - HW_COMPAT_2_6
> + HW_COMPAT_2_6 \
> + {\
> + .driver = TYPE_X86_CPU,\
> + .property = "lmce",\
> + .value = "off",\
> + },
You don't need this if lmce is disabled by default.
>
> #define PC_COMPAT_2_5 \
> PC_COMPAT_2_6 \
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 9b4dbab..c69cc17 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -3232,6 +3232,7 @@ static Property x86_cpu_properties[] = {
> DEFINE_PROP_UINT32("xlevel", X86CPU, env.cpuid_xlevel, 0),
> DEFINE_PROP_UINT32("xlevel2", X86CPU, env.cpuid_xlevel2, 0),
> DEFINE_PROP_STRING("hv-vendor-id", X86CPU, hyperv_vendor_id),
> + DEFINE_PROP_BOOL("lmce", X86CPU, enable_lmce, false),
Maybe this belong to patch 1/2?
> DEFINE_PROP_END_OF_LIST()
> };
>
> diff --git a/target-i386/cpu.h b/target-i386/cpu.h
> index 2d411ba..b512fd6 100644
> --- a/target-i386/cpu.h
> +++ b/target-i386/cpu.h
> @@ -1182,6 +1182,11 @@ struct X86CPU {
> */
> bool enable_pmu;
>
> + /* Enable LMCE support which is set via cpu option 'lmce=on/off'. LMCE is
> + * disabled by default to avoid breaking the migration between QEMU with
> + * different LMCE support. Only migrating between QEMU with the same LMCE
> + * support is allowed.
> + */
> bool enable_lmce;
>
> /* in order to simplify APIC support, we leave this pointer to the
> diff --git a/target-i386/machine.c b/target-i386/machine.c
> index cb9adf2..b55d376 100644
> --- a/target-i386/machine.c
> +++ b/target-i386/machine.c
> @@ -347,6 +347,11 @@ static int cpu_post_load(void *opaque, int version_id)
> return -EINVAL;
> }
>
> + if (!cpu->enable_lmce && (env->mcg_cap & MCG_LMCE_P)) {
> + error_report("LMCE not enabled");
> + return -EINVAL;
> + }
Nice. But the error message could be clearer, to indicate that it
is about command-line configuration not being the same on both
sides. What about something like:
config mismatch: VCPU has LMCE is enabled, but "lmce" option is disabled
> +
> /*
> * Real mode guest segments register DPL should be zero.
> * Older KVM version were setting it wrongly.
> @@ -896,6 +901,24 @@ static const VMStateDescription vmstate_tsc_khz = {
> }
> };
>
> +static bool mcg_ext_ctl_needed(void *opaque)
> +{
> + X86CPU *cpu = opaque;
> + CPUX86State *env = &cpu->env;
> + return cpu->enable_lmce && env->mcg_ext_ctl;
> +}
> +
> +static const VMStateDescription vmstate_mcg_ext_ctl = {
> + .name = "cpu/mcg_ext_ctl",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .needed = mcg_ext_ctl_needed,
> + .fields = (VMStateField[]) {
> + VMSTATE_UINT64(env.mcg_ext_ctl, X86CPU),
> + VMSTATE_END_OF_LIST()
> + }
> +};
> +
> VMStateDescription vmstate_x86_cpu = {
> .name = "cpu",
> .version_id = 12,
> @@ -1022,6 +1045,7 @@ VMStateDescription vmstate_x86_cpu = {
> #ifdef TARGET_X86_64
> &vmstate_pkru,
> #endif
> + &vmstate_mcg_ext_ctl,
> NULL
> }
> };
> --
> 2.8.3
>
--
Eduardo
next prev parent reply other threads:[~2016-06-07 20:18 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 6:09 [PATCH v3 0/2] Add QEMU support for Intel local MCE Haozhong Zhang
2016-06-03 6:09 ` [Qemu-devel] " Haozhong Zhang
2016-06-03 6:09 ` [PATCH v3 1/2] target-i386: KVM: add basic Intel LMCE support Haozhong Zhang
2016-06-03 6:09 ` [Qemu-devel] " Haozhong Zhang
2016-06-03 15:57 ` Radim Krčmář
2016-06-03 15:57 ` [Qemu-devel] " Radim Krčmář
2016-06-05 15:32 ` Haozhong Zhang
2016-06-05 15:32 ` [Qemu-devel] " Haozhong Zhang
2016-06-08 11:32 ` Paolo Bonzini
2016-06-08 11:32 ` [Qemu-devel] " Paolo Bonzini
2016-06-13 7:55 ` Haozhong Zhang
2016-06-13 7:55 ` [Qemu-devel] " Haozhong Zhang
2016-06-13 8:33 ` Paolo Bonzini
2016-06-13 8:33 ` [Qemu-devel] " Paolo Bonzini
2016-06-13 10:01 ` Haozhong Zhang
2016-06-13 10:01 ` [Qemu-devel] " Haozhong Zhang
2016-06-13 10:07 ` Paolo Bonzini
2016-06-13 10:07 ` [Qemu-devel] " Paolo Bonzini
2016-06-13 10:09 ` Haozhong Zhang
2016-06-13 10:09 ` [Qemu-devel] " Haozhong Zhang
2016-06-04 10:15 ` Boris Petkov
2016-06-04 10:15 ` [Qemu-devel] " Boris Petkov
2016-06-05 15:35 ` Haozhong Zhang
2016-06-05 15:35 ` [Qemu-devel] " Haozhong Zhang
2016-06-04 10:34 ` Boris Petkov
2016-06-04 10:34 ` [Qemu-devel] " Boris Petkov
2016-06-04 21:03 ` Eduardo Habkost
2016-06-04 21:03 ` [Qemu-devel] " Eduardo Habkost
2016-06-07 9:41 ` Haozhong Zhang
2016-06-07 9:41 ` [Qemu-devel] " Haozhong Zhang
2016-06-07 11:47 ` Haozhong Zhang
2016-06-07 11:47 ` [Qemu-devel] " Haozhong Zhang
2016-06-05 15:41 ` Haozhong Zhang
2016-06-05 15:41 ` [Qemu-devel] " Haozhong Zhang
2016-06-08 11:34 ` Paolo Bonzini
2016-06-08 11:34 ` [Qemu-devel] " Paolo Bonzini
2016-06-09 6:52 ` Haozhong Zhang
2016-06-09 6:52 ` [Qemu-devel] " Haozhong Zhang
2016-06-07 20:10 ` Eduardo Habkost
2016-06-07 20:10 ` [Qemu-devel] " Eduardo Habkost
2016-06-08 1:43 ` Haozhong Zhang
2016-06-08 1:43 ` [Qemu-devel] " Haozhong Zhang
2016-06-03 6:09 ` [PATCH v3 2/2] target-i386: add migration support for Intel LMCE Haozhong Zhang
2016-06-03 6:09 ` [Qemu-devel] " Haozhong Zhang
2016-06-07 20:18 ` Eduardo Habkost [this message]
2016-06-07 20:18 ` Eduardo Habkost
2016-06-08 1:56 ` Haozhong Zhang
2016-06-08 1:56 ` [Qemu-devel] " Haozhong Zhang
2016-06-08 11:36 ` Paolo Bonzini
2016-06-08 11:36 ` [Qemu-devel] " Paolo Bonzini
2016-06-09 7:16 ` Haozhong Zhang
2016-06-09 7:16 ` [Qemu-devel] " Haozhong Zhang
2016-06-09 8:23 ` Paolo Bonzini
2016-06-09 8:23 ` [Qemu-devel] " Paolo Bonzini
2016-06-03 6:38 ` [PATCH v3 0/2] Add QEMU support for Intel local MCE Haozhong Zhang
2016-06-03 6:38 ` [Qemu-devel] " Haozhong Zhang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160607201828.GD18662@thinpad.lan.raisama.net \
--to=ehabkost@redhat.com \
--cc=andi.kleen@intel.com \
--cc=ashok.raj@intel.com \
--cc=bp@suse.de \
--cc=haozhong.zhang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=tony.luck@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.