qemu with hax to log dma reads & writes jcs.org/2018/11/12/vfio

i386: hvf: Add hvf_cpu_synchronize_pre_loadvm()

hvf lacks an implementation of cpu_synchronize_pre_loadvm().

Cc: Cameron Esfahani <dirty@apple.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Message-Id: <20200630102824.77604-4-r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by

Roman Bolshakov and committed by
Paolo Bonzini
5536c98e 4bb19f98

+15
+1
include/sysemu/hvf.h
··· 28 28 void hvf_cpu_synchronize_state(CPUState *); 29 29 void hvf_cpu_synchronize_post_reset(CPUState *); 30 30 void hvf_cpu_synchronize_post_init(CPUState *); 31 + void hvf_cpu_synchronize_pre_loadvm(CPUState *); 31 32 void hvf_vcpu_destroy(CPUState *); 32 33 void hvf_reset_vcpu(CPUState *); 33 34
+3
include/sysemu/hw_accel.h
··· 73 73 if (hax_enabled()) { 74 74 hax_cpu_synchronize_pre_loadvm(cpu); 75 75 } 76 + if (hvf_enabled()) { 77 + hvf_cpu_synchronize_pre_loadvm(cpu); 78 + } 76 79 if (whpx_enabled()) { 77 80 whpx_cpu_synchronize_pre_loadvm(cpu); 78 81 }
+11
target/i386/hvf/hvf.c
··· 325 325 run_on_cpu(cpu_state, do_hvf_cpu_synchronize_post_init, RUN_ON_CPU_NULL); 326 326 } 327 327 328 + static void do_hvf_cpu_synchronize_pre_loadvm(CPUState *cpu, 329 + run_on_cpu_data arg) 330 + { 331 + cpu->vcpu_dirty = true; 332 + } 333 + 334 + void hvf_cpu_synchronize_pre_loadvm(CPUState *cpu) 335 + { 336 + run_on_cpu(cpu, do_hvf_cpu_synchronize_pre_loadvm, RUN_ON_CPU_NULL); 337 + } 338 + 328 339 static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual) 329 340 { 330 341 int read, write;