On 03/08/2017 02:50 AM, Alex Bennée wrote:
From: Paolo Bonzini <[email protected]>

Paths through the softmmu code during code generation now need to be audited
to check for double locking of tb_lock.  In particular, VMEXIT can take tb_lock
through cpu_vmexit -> cpu_x86_update_cr4 -> tlb_flush.

To avoid this, split VMEXIT delivery in two parts, similar to what is done with
exceptions.  cpu_vmexit only records the VMEXIT exit code and information, and
cc->do_interrupt can then deliver it when it is safe to take the lock.

Reported-by: Alexander Boettcher <[email protected]>
Suggested-by: Richard Henderson <[email protected]>
Tested-by: Alexander Boettcher <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
---
 target/i386/cpu.h        |  2 ++
 target/i386/seg_helper.c | 20 +++++++++++---------
 target/i386/svm_helper.c | 22 +++++++++++++---------
 3 files changed, 26 insertions(+), 18 deletions(-)

Reviewed-by: Richard Henderson <[email protected]>


r~

Reply via email to