qemu/include/sysemu
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
..
accel.h sysemu/accel: Restrict machine methods to system-mode 2020-06-12 11:12:44 -04:00
arch_init.h Add rx-softmmu 2020-03-19 17:58:05 +01:00
balloon.h virtio-balloon: Rip out qemu_balloon_inhibit() 2020-07-02 05:54:59 -04:00
block-backend.h block: Add blk_make_empty() 2020-05-18 19:05:25 +02:00
blockdev.h blockdev: Deprecate -drive with bogus interface type 2020-06-23 16:07:07 +02:00
cpus.h tcg: convert "-accel threads" to a QOM property 2019-12-17 19:32:27 +01:00
cryptodev-vhost-user.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
cryptodev-vhost.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
cryptodev.h misc: Replace zero-length arrays with flexible array member (automatic) 2020-03-16 22:07:42 +01:00
device_tree.h device_tree: Constify compat in qemu_fdt_node_path() 2020-04-30 15:35:41 +01:00
dma.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
dump-arch.h dump: allow target to set the physical base 2016-01-15 14:40:25 +00:00
dump.h qapi: Split dump.json off misc.json 2019-07-02 13:37:00 +02:00
hax.h Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
hostmem.h hostmem: fix strict bind policy 2020-02-19 16:50:02 +00:00
hvf.h i386: hvf: Don't duplicate register reset 2020-07-10 18:02:19 -04:00
hw_accel.h i386: hvf: Add hvf_cpu_synchronize_pre_loadvm() 2020-07-10 18:02:18 -04:00
iothread.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
kvm.h KVM: Kick resamplefd for split kernel irqchip 2020-06-10 12:10:33 -04:00
kvm_int.h KVM: Move hwpoison page related functions into kvm-all.c 2020-05-14 15:03:09 +01:00
memory_mapping.h Clean up inclusion of exec/cpu-common.h 2019-08-16 13:31:52 +02:00
numa.h initialize MachineState::ram in NUMA case 2020-02-19 16:49:53 +00:00
os-posix.h util: drop old utimensat() compat code 2017-05-25 10:30:14 +02:00
os-win32.h glib: use portable g_setenv() 2019-12-17 09:05:23 +01:00
qtest.h qtest: add in-process incoming command handler 2020-02-22 08:26:48 +00:00
replay.h replay: record and replay random number sources 2020-01-07 12:08:39 +01:00
reset.h hw: move reset handlers from vl.c to hw/core 2017-01-16 17:52:35 +01:00
rng-random.h rng-random: rename RndRandom to RngRandom 2016-05-23 12:18:43 +05:30
rng.h virtio-rng: change default backend to rng-builtin 2019-09-04 06:32:51 -04:00
runstate.h pvpanic: implement crashloaded event handling 2020-01-24 20:59:07 +01:00
seccomp.h sandbox: disable -sandbox if CONFIG_SECCOMP undefined 2018-06-01 13:44:15 +02:00
sev.h kvm: introduce memory encryption APIs 2018-03-13 12:04:03 +01:00
sysemu.h qom/object: Move Object typedef to 'qemu/typedefs.h' 2020-06-10 12:09:36 -04:00
tcg.h sysemu/tcg: Only declare tcg_allowed when TCG is available 2020-06-12 11:12:44 -04:00
tpm.h arm/acpi: TPM2 ACPI table support 2020-06-09 12:46:45 -04:00
tpm_backend.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
tpm_util.h hw/tpm: Make 'tpm_util.h' publicly accessible as "sysemu/tpm_util.h" 2020-06-19 07:25:48 -04:00
vhost-user-backend.h Add vhost-user-backend 2019-05-10 12:48:35 +02:00
watchdog.h Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
whpx.h WHPX: TSC get and set should be dependent on VM state 2020-03-16 23:02:21 +01:00
xen-mapcache.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
xen.h accel: Move Xen accelerator code under accel/xen/ 2020-06-10 12:09:56 -04:00