qemu-irix/target-i386
Paolo Bonzini 823fb688eb target-i386: correctly propagate retaddr into SVM helpers
Commit 2afbdf8 ("target-i386: exception handling for memory helpers",
2015-09-15) changed tlb_fill's cpu_restore_state+raise_exception_err
to raise_exception_err_ra.  After this change, the cpu_restore_state
and raise_exception_err's cpu_loop_exit are merged into
raise_exception_err_ra's cpu_loop_exit_restore.

This actually fixed some bugs, but when SVM is enabled there is a
second path from raise_exception_err_ra to cpu_loop_exit.  This is
the VMEXIT path, and now cpu_vmexit is called without a
cpu_restore_state before.

The fix is to pass the retaddr to cpu_vmexit (via
cpu_svm_check_intercept_param).  All helpers can now use GETPC() to pass
the correct retaddr, too.

Cc: qemu-stable@nongnu.org
Fixes: 2afbdf8480
Reported-by: Alexander Boettcher <alexander.boettcher@genode-labs.com>
Tested-by: Alexander Boettcher <alexander.boettcher@genode-labs.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
(cherry picked from commit 65c9d60a3a)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-03-16 12:10:41 -05:00
..
Makefile.objs
TODO
arch_dump.c
arch_memory_mapping.c
bpt_helper.c
cc_helper.c
cc_helper_template.h
cpu-qom.h exec: call cpu_exec_exit() from a CPU unrealize common function 2016-10-24 17:29:16 -02:00
cpu.c target-i386: Remove unused local_err variable 2016-11-25 15:12:23 -02:00
cpu.h target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
excp_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
fpu_helper.c target-i386: Use struct X86XSaveArea in fpu_helper.c 2016-09-19 15:34:35 -03:00
gdbstub.c
helper.c *_run_on_cpu: introduce run_on_cpu_data type 2016-10-31 15:00:25 +01:00
helper.h target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
hyperv.c
hyperv.h
int_helper.c
kvm-stub.c intel_iommu: reject broken EIM 2016-10-17 15:44:49 -02:00
kvm.c target-i386: fix typo 2016-11-09 14:08:17 +01:00
kvm_i386.h pc: kvm_apic: Pass APIC ID depending on xAPIC/x2APIC mode 2016-10-24 17:29:15 -02:00
machine.c target-i386/machine: fix migrate faile because of Hyper-V HV_X64_MSR_VP_RUNTIME 2016-11-10 16:01:06 +01:00
mem_helper.c target-i386: remove helper_lock() 2016-10-26 08:29:01 -07:00
misc_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
monitor.c hmp: fix qemu crash due to ioapic state dump w/ split irqchip 2016-10-04 17:16:15 +01:00
mpx_helper.c
ops_sse.h
ops_sse_header.h
seg_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
shift_helper_template.h
smm_helper.c
svm.h
svm_helper.c target-i386: correctly propagate retaddr into SVM helpers 2017-03-16 12:10:41 -05:00
trace-events
translate.c log: Add locking to large logging blocks 2016-11-01 10:29:03 -06:00