i386: Save EFER for 32-bit targets
i386 (32 bit) emulation uses EFER in wrmsr and in MMU fault processing. But it does not included in VMState, because "efer" field is disabled with This patch adds a section for 32-bit targets which saves EFER when it's value is non-zero. Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> Message-Id: <155913371654.8429.1659082639780315242.stgit@pasha-Precision-3630-Tower> Reviewed-by: Peter Xu <peterx@redhat.com> [ehabkost: indentation fix] Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
This commit is contained in:
parent
506174bf82
commit
89a44a1033
@ -964,6 +964,27 @@ static const VMStateDescription vmstate_svm_npt = {
|
||||
}
|
||||
};
|
||||
|
||||
#ifndef TARGET_X86_64
|
||||
static bool intel_efer32_needed(void *opaque)
|
||||
{
|
||||
X86CPU *cpu = opaque;
|
||||
CPUX86State *env = &cpu->env;
|
||||
|
||||
return env->efer != 0;
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_efer32 = {
|
||||
.name = "cpu/efer32",
|
||||
.version_id = 1,
|
||||
.minimum_version_id = 1,
|
||||
.needed = intel_efer32_needed,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT64(env.efer, X86CPU),
|
||||
VMSTATE_END_OF_LIST()
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
VMStateDescription vmstate_x86_cpu = {
|
||||
.name = "cpu",
|
||||
.version_id = 12,
|
||||
@ -1089,6 +1110,9 @@ VMStateDescription vmstate_x86_cpu = {
|
||||
&vmstate_msr_intel_pt,
|
||||
&vmstate_msr_virt_ssbd,
|
||||
&vmstate_svm_npt,
|
||||
#ifndef TARGET_X86_64
|
||||
&vmstate_efer32,
|
||||
#endif
|
||||
NULL
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user