diff options
author | Ashok Raj <ashok.raj@intel.com> | 2016-06-22 14:56:21 +0800 |
---|---|---|
committer | Eduardo Habkost <ehabkost@redhat.com> | 2016-07-07 15:25:16 -0300 |
commit | 87f8b626041ceaea9adcfdbd549359f0ca7b871d (patch) | |
tree | fb58c95574a63176221118f6e710a75ae5c6f1d5 /target-i386/machine.c | |
parent | c35bd19a5c9140bce8b913cc5cefe6f071135bdb (diff) | |
download | qemu-87f8b626041ceaea9adcfdbd549359f0ca7b871d.zip qemu-87f8b626041ceaea9adcfdbd549359f0ca7b871d.tar.gz qemu-87f8b626041ceaea9adcfdbd549359f0ca7b871d.tar.bz2 |
target-i386: kvm: Add basic Intel LMCE support
This patch adds the support to inject SRAR and SRAO as LMCE, i.e. they
are injected to only one VCPU rather than broadcast to all VCPUs. As KVM
reports LMCE support on Intel platforms, this features is only available
on Intel platforms.
LMCE is disabled by default and can be enabled/disabled by cpu option
'lmce=on/off'.
Signed-off-by: Ashok Raj <ashok.raj@intel.com>
[Haozhong: Enable LMCE only on Intel platforms
Disable LMCE by default and add a cpu option 'lmce'
Handle the error if LMCE is enabled w/o host support
Remove MCG_LMCE_P from MCE_CAP_DEF
Add migration support for LMCE
Minor code style changes]
Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'target-i386/machine.c')
-rw-r--r-- | target-i386/machine.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/target-i386/machine.c b/target-i386/machine.c index cb9adf2..71c0e4d 100644 --- a/target-i386/machine.c +++ b/target-i386/machine.c @@ -896,6 +896,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 +1040,7 @@ VMStateDescription vmstate_x86_cpu = { #ifdef TARGET_X86_64 &vmstate_pkru, #endif + &vmstate_mcg_ext_ctl, NULL } }; |