xemu/target/i386
Roman Bolshakov 5009ef22c6 i386: hvf: Don't duplicate register reset
hvf_reset_vcpu() duplicates actions performed by x86_cpu_reset(). The
difference is that hvf_reset_vcpu() stores initial values directly to
VMCS while x86_cpu_reset() stores it in CPUX86State and then
cpu_synchronize_all_post_init() or cpu_synchronize_all_post_reset()
flushes CPUX86State into VMCS. That makes hvf_reset_vcpu() a kind of
no-op.

Here's the trace of CPU state modifications during VM start:
  hvf_reset_vcpu (resets VMCS)
  cpu_synchronize_all_post_init (overwrites VMCS fields written by
                                 hvf_reset_vcpu())
  cpu_synchronize_all_states
  hvf_reset_vcpu (resets VMCS)
  cpu_synchronize_all_post_reset (overwrites VMCS fields written by
                                  hvf_reset_vcpu())

General purpose registers, system registers, segment descriptors, flags
and IP are set by hvf_put_segments() in post-init and post-reset,
therefore it's safe to remove them from hvf_reset_vcpu().

PDPTE initialization can be dropped because Intel SDM (26.3.1.6 Checks
on Guest Page-Directory-Pointer-Table Entries) doesn't require PDPTE to
be clear unless PAE is used: "A VM entry to a guest that does not use
PAE paging does not check the validity of any PDPTEs."
And if PAE is used, PDPTE's are initialized from CR3 in macvm_set_cr0().

Cc: Cameron Esfahani <dirty@apple.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Message-Id: <20200630102824.77604-8-r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-07-10 18:02:19 -04:00
..
hvf i386: hvf: Don't duplicate register reset 2020-07-10 18:02:19 -04:00
arch_dump.c
arch_memory_mapping.c
bpt_helper.c
cc_helper_template.h
cc_helper.c
cpu-param.h
cpu-qom.h cpu: Use DeviceClass reset instead of a special CPUClass reset 2020-03-17 19:48:10 -04:00
cpu.c i386: hvf: Don't duplicate register reset 2020-07-10 18:02:19 -04:00
cpu.h KVM: add support for AMD nested live migration 2020-07-10 18:02:17 -04:00
excp_helper.c tcg/svm: use host cr4 during NPT page table walk 2020-07-10 18:02:14 -04:00
fpu_helper.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
gdbstub.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
hax-all.c hax: Dynamic allocate vcpu state structure 2020-06-10 12:09:59 -04:00
hax-i386.h i386: Remove unused define's from hax and hvf 2020-06-10 12:10:47 -04:00
hax-interface.h
hax-mem.c
hax-posix.c i386: Fix GCC warning with snprintf when HAX is enabled 2020-03-16 23:02:24 +01:00
hax-posix.h
hax-windows.c hax: Windows doesn't like posix device names 2020-04-14 10:37:42 -04:00
hax-windows.h
helper.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
helper.h target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
hyperv-proto.h i386/kvm: add NoNonArchitecturalCoreSharing Hyper-V enlightenment 2019-10-22 09:38:42 +02:00
hyperv-stub.c
hyperv.c
hyperv.h
int_helper.c
kvm_i386.h target/i386: kvm: initialize feature MSRs very early 2020-01-24 20:59:09 +01:00
kvm-stub.c
kvm.c KVM: add support for AMD nested live migration 2020-07-10 18:02:17 -04:00
machine.c KVM: add support for AMD nested live migration 2020-07-10 18:02:17 -04:00
Makefile.objs target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
mem_helper.c tcg: Search includes from the project root source directory 2020-01-15 15:13:10 -10:00
misc_helper.c target/i386: Fix OUTL debug output 2020-06-10 12:09:35 -04:00
monitor.c hw: replace hw/i386/pc.h with a header just for the i8259 2019-12-17 19:33:49 +01:00
mpx_helper.c
ops_sse_header.h
ops_sse.h target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
seg_helper.c target/i386: Use cpu_*_mmuidx_ra instead of templates 2020-01-15 15:13:10 -10:00
sev_i386.h target/i386: sev: Move local structure definitions into .c file 2020-06-12 11:20:13 -04:00
sev-stub.c
sev.c target/i386: sev: Use ram_block_discard_disable() 2020-07-02 05:54:59 -04:00
shift_helper_template.h
smm_helper.c
svm_helper.c tcg/svm: use host cr4 during NPT page table walk 2020-07-10 18:02:14 -04:00
svm.h tcg/svm: use host cr4 during NPT page table walk 2020-07-10 18:02:14 -04:00
tcg-stub.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
trace-events
translate.c target/i386: fix IEEE SSE floating-point exception raising 2020-07-10 18:02:17 -04:00
whp-dispatch.h WHPX: TSC get and set should be dependent on VM state 2020-03-16 23:02:21 +01:00
whpx-all.c WHPX: Use proper synchronization primitives while processing 2020-03-16 23:02:24 +01:00
xsave_helper.c