qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 00/11] tcg: Make direct jump patching thread-safe
@ 2016-04-22 16:08 Sergey Fedorov
  2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 01/11] include/qemu/osdep.h: Add a macro to check for alignment Sergey Fedorov
                   ` (11 more replies)
  0 siblings, 12 replies; 19+ messages in thread
From: Sergey Fedorov @ 2016-04-22 16:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Alex Bennée, Sergey Fedorov, Paolo Bonzini,
	Peter Crosthwaite, Richard Henderson

From: Sergey Fedorov <serge.fdrv@gmail.com>

When patching translated code for direct block chaining/unchaining,
modification of concurrently executing code can happen in multi-threaded
execution.  Currently only user-mode is affected. To make direct block patching
safe, some care must be taken to make sure that the code modification is made
atomically and concurrently executed code is guaranteed to be consistent.

This patch series fixes all supported TCG targets which use direct patching and
documents the requirement for direct jump patching be atomic and thread-safe.

The series' tree can be found in a public git repository [1].

[1] https://github.com/sergefdrv/qemu/tree/atomic-tb-patching-2

Summary of changes in v2:
 * Take out mistakingly pulled patches [PATCH 01/11] and [PATCH 02/11]
 * Two new patches to add some handy macros for alignment
   [PATCH v2 01/11] and [PATCH v2 02/11]
 * Use new alignment macros instead of open-coding
 * Use i386 tcg_out_nopn() implementation suggested by Richard Henderson;
   rework alignment checking and gap calculation in [PATCH v2 05/11]
 * Clean up reloc_pc24_atomic() in [PATCH v2 07/11]
 * Use tcg_debug_assert() instead of assert()
 * Use deposit32() in [PATCH v2 09/11]
 * s/atomic_write/atomic_set/ in [PATCH v2 10/11]
 * Minor rewording in [PATCH v2 11/11]

Sergey Fedorov (11):
  include/qemu/osdep.h: Add a macro to check for alignment
  include/qemu/osdep.h: Add macros for pointer alignment
  tci: Make direct jump patching thread-safe
  tcg/ppc: Make direct jump patching thread-safe
  tcg/i386: Make direct jump patching thread-safe
  tcg/s390: Make direct jump patching thread-safe
  tcg/arm: Make direct jump patching thread-safe
  tcg/aarch64: Make direct jump patching thread-safe
  tcg/sparc: Make direct jump patching thread-safe
  tcg/mips: Make direct jump patching thread-safe
  tcg: Note requirement on atomic direct jump patching

 include/exec/exec-all.h      | 32 ++++++--------------------------
 include/qemu/osdep.h         | 14 ++++++++++++++
 tcg/aarch64/tcg-target.inc.c | 14 +++++++++++++-
 tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
 tcg/i386/tcg-target.inc.c    | 23 +++++++++++++++++++++++
 tcg/mips/tcg-target.inc.c    |  3 ++-
 tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++----
 tcg/s390/tcg-target.inc.c    |  8 ++++++++
 tcg/sparc/tcg-target.inc.c   |  2 +-
 tcg/tci/tcg-target.inc.c     |  2 ++
 tci.c                        |  5 ++++-
 translate-all.c              |  2 ++
 12 files changed, 111 insertions(+), 34 deletions(-)

-- 
2.8.1

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

end of thread, other threads:[~2016-04-25  9:44 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-22 16:08 [Qemu-devel] [PATCH v2 00/11] tcg: Make direct jump patching thread-safe Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 01/11] include/qemu/osdep.h: Add a macro to check for alignment Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 02/11] include/qemu/osdep.h: Add macros for pointer alignment Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 03/11] tci: Make direct jump patching thread-safe Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 04/11] tcg/ppc: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 05/11] tcg/i386: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 06/11] tcg/s390: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 07/11] tcg/arm: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 08/11] tcg/aarch64: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 09/11] tcg/sparc: " Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 10/11] tcg/mips: " Sergey Fedorov
2016-04-22 16:47   ` Aurelien Jarno
2016-04-22 16:51     ` Aurelien Jarno
2016-04-22 17:00       ` Sergey Fedorov
2016-04-22 18:27         ` Aurelien Jarno
2016-04-22 16:56     ` Sergey Fedorov
2016-04-22 16:08 ` [Qemu-devel] [PATCH v2 11/11] tcg: Note requirement on atomic direct jump patching Sergey Fedorov
2016-04-24 21:36 ` [Qemu-devel] [PATCH v2 00/11] tcg: Make direct jump patching thread-safe Richard Henderson
2016-04-25  9:44   ` Sergey Fedorov

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).