qemu-patch-raspberry4/target-i386
Bill Paul 2188cc52cb Correctly re-init EFER state during INIT IPI
When doing a re-initialization of a CPU core, the default state is to _not_
have 64-bit long mode enabled. This means the LME (long mode enable) and LMA
(long mode active) bits in the EFER model-specific register should be cleared.

However, the EFER state is part of the CPU environment which is
preserved by do_cpu_init(), so if EFER.LME and EFER.LMA were set at the
time an INIT IPI was received, they will remain set after the init completes.

This is contrary to what the Intel architecture manual describes and what
happens on real hardware, and it leaves the CPU in a weird state that the
guest can't clear.

To fix this, the 'efer' member of the CPUX86State structure has been moved
to an area outside the region preserved by do_cpu_init(), so that it can
be properly re-initialized by x86_cpu_reset().

Signed-off-by: Bill Paul <wpaul@windriver.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Richard Henderson <rth@twiddle.net>
CC: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
2015-10-02 16:22:02 -03:00
..
arch_dump.c x86: Fuse g_malloc(); memset() into g_malloc0() 2014-12-15 12:21:02 +01:00
arch_memory_mapping.c Switch non-CPU callers from ld/st*_phys to address_space_ld/st* 2015-04-26 16:49:24 +01:00
bpt_helper.c target-i386: Make check_hw_breakpoints static 2015-10-02 16:22:01 -03:00
cc_helper.c target-i386: exception handling for other helper functions 2015-09-15 12:31:59 -07:00
cc_helper_template.h target-i386: Implement BLSR, BLSMSK, BLSI 2013-02-18 15:52:05 -08:00
cpu-qom.h i386/kvm: Hyper-v crash msrs set/get'ers and migration 2015-09-16 17:33:32 +02:00
cpu.c target-i386: add ABM to Haswell* and Broadwell* CPU models 2015-10-02 16:22:01 -03:00
cpu.h Correctly re-init EFER state during INIT IPI 2015-10-02 16:22:02 -03:00
excp_helper.c target-i386: introduce new raise_exception functions 2015-09-15 12:28:16 -07:00
fpu_helper.c target-i386: exception handling for FPU instructions 2015-09-15 12:28:16 -07:00
gdbstub.c target-i386: update fp status fix 2014-09-18 17:06:12 +02:00
helper.c target-i386: Move breakpoint related functions to new file 2015-10-02 16:22:01 -03:00
helper.h target-i386: exception handling for seg_helper functions 2015-09-15 12:31:59 -07:00
int_helper.c target-i386: exception handling for div instructions 2015-09-15 12:28:16 -07:00
kvm-stub.c pc: add SMM property 2015-07-06 18:39:59 +02:00
kvm.c target-i386: get/put MSR_TSC_AUX across reset and migration 2015-10-02 16:22:01 -03:00
kvm_i386.h pc: add SMM property 2015-07-06 18:39:59 +02:00
machine.c i386/kvm: Hyper-v crash msrs set/get'ers and migration 2015-09-16 17:33:32 +02:00
Makefile.objs target-i386: Move breakpoint related functions to new file 2015-10-02 16:22:01 -03:00
mem_helper.c target-i386: exception handling for memory helpers 2015-09-15 12:31:49 -07:00
misc_helper.c target-i386: Move breakpoint related functions to new file 2015-10-02 16:22:01 -03:00
monitor.c hmp: implemented io apic dump state for TCG 2015-09-25 12:04:42 +02:00
ops_sse.h target-i386: exception handling for other helper functions 2015-09-15 12:31:59 -07:00
ops_sse_header.h target-i386: add AES-NI instructions 2013-04-13 13:51:57 +02:00
seg_helper.c i386: interrupt poll processing 2015-09-25 12:04:44 +02:00
shift_helper_template.h target-i386: compute eflags outside rcl/rcr helper 2013-02-18 15:03:56 -08:00
smm_helper.c target-i386: use memory API to implement SMRAM 2015-06-05 17:36:39 +02:00
svm.h Use new macro QEMU_PACKED for packed structures 2011-09-03 10:45:59 +00:00
svm_helper.c target-i386: Use correct memory attributes for memory accesses 2015-06-05 17:10:00 +02:00
TODO target-i386: fix {min,max}{pd,ps,sd,ss} SSE2 instructions 2012-01-11 09:55:28 +01:00
translate.c target-i386: exception handling for seg_helper functions 2015-09-15 12:31:59 -07:00