qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC/RFT PATCH 0/7] cpu-exec: simplify cpu_exec and remove some icount special cases
@ 2017-01-29 21:09 Paolo Bonzini
  2017-01-29 21:09 ` [Qemu-devel] [PATCH 1/7] cpu-exec: fix jmp_first out-of-bounds access with icount Paolo Bonzini
                   ` (9 more replies)
  0 siblings, 10 replies; 16+ messages in thread
From: Paolo Bonzini @ 2017-01-29 21:09 UTC (permalink / raw)
  To: qemu-devel; +Cc: serge.fdrv, peter.maydell, pavel.dovgaluk

The series includes three parts:

1-2: fix two bugs, the first one pretty bad, the second seems
to be theoretical only.

3-5: simplify cpu_exec.  This builds on Sergey's conversion
of cpu_exec to a simple top-down logic, making the phases
clearer and saving on the cost of siglongjmp in the meanwhile.

6-7: these are intended to be a base for Pavel's record/replay
fixes.  The main thing I noticed while reviewing is that icount
is redoing (with u16.high) a lot of things that tcg_exit_req is
doing too.  This is because, at the time icount was introduced,
tcg_exit_req didn't exist and QEMU instead unwound chained TBs
through POSIX signals.  But now we have essentially two ways to
do the same thing with subtly different invariants or downright
bugs (such as the one fixed by patch 1).  Patch 6 therefore
unifies tcg_exit_req and the icount interrupt flag.  It saves a
handful of instructions per TB in icount mode and generally
makes icount mode "less special", which is a good thing since
no one seems to understand it well.  Patch 7 then removes another
EXCP_INTERRUPT/cpu_loop_exit pair; by exiting to main loop simply
through cpu->exit_request, hopefully it fixes one of the issues that
Pavel was seeing.

For now I've tested this only on an aarch64 Linux image (with
and without -icount).  Thanks,

Paolo

Paolo Bonzini (7):
  cpu-exec: fix jmp_first out-of-bounds access with icount
  cpu-exec: tighten barrier on TCG_EXIT_REQUESTED
  cpu-exec: avoid cpu_loop_exit in cpu_handle_interrupt
  cpu-exec: avoid repeated sigsetjmp on interrupts
  cpu-exec: remove outermost infinite loop
  cpu-exec: unify icount_decr and tcg_exit_req
  cpu-exec: centralize exiting to the main loop

 cpu-exec.c                | 153 +++++++++++++++++++++-------------------------
 include/exec/exec-all.h   |   1 +
 include/exec/gen-icount.h |  53 ++++++++--------
 include/qom/cpu.h         |  15 +++--
 qom/cpu.c                 |   2 +-
 tcg/tcg.h                 |   1 -
 translate-all.c           |   2 +-
 translate-common.c        |  13 ++--
 8 files changed, 109 insertions(+), 131 deletions(-)

-- 
2.9.3

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2017-02-15 12:57 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-29 21:09 [Qemu-devel] [RFC/RFT PATCH 0/7] cpu-exec: simplify cpu_exec and remove some icount special cases Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 1/7] cpu-exec: fix jmp_first out-of-bounds access with icount Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 2/7] cpu-exec: tighten barrier on TCG_EXIT_REQUESTED Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 3/7] cpu-exec: avoid cpu_loop_exit in cpu_handle_interrupt Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 4/7] cpu-exec: avoid repeated sigsetjmp on interrupts Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 5/7] cpu-exec: remove outermost infinite loop Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 6/7] cpu-exec: unify icount_decr and tcg_exit_req Paolo Bonzini
2017-01-29 21:09 ` [Qemu-devel] [PATCH 7/7] cpu-exec: centralize exiting to the main loop Paolo Bonzini
2017-01-29 21:18 ` [Qemu-devel] [RFC/RFT PATCH 0/7] cpu-exec: simplify cpu_exec and remove some icount special cases no-reply
2017-01-31  9:05 ` Pavel Dovgalyuk
2017-02-01 20:54   ` Paolo Bonzini
2017-02-03  7:07     ` Pavel Dovgalyuk
2017-02-03 15:07       ` Paolo Bonzini
2017-02-15 12:42 ` Paolo Bonzini
2017-02-15 12:45   ` Pavel Dovgalyuk
2017-02-15 12:57     ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).