All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
@ 2016-07-14 20:20 Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 01/14] Introduce TCGOpcode for memory barrier Pranith Kumar
                   ` (16 more replies)
  0 siblings, 17 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  Cc: qemu-devel, alex.bennee, serge.fdrv, rth, pbonzini, peter.maydell

Hello,

The following series adds fence instruction generation support to
TCG. Based on feedback to the last series, I added the four
combinations of orderings modeled after Sparc membar.

This has been tested and confirmed to fix ordering issues on
x86/armv7/aarch64 hosts with MTTCG enabled for an ARMv7 guest using
KVM unit tests. It has also been tested with litmus tests provided by
Alex Bennée.

TODO:

* The acquire/release order is not utilized yet. Currently we generate
  SC barriers even for acquire/release barriers. The idea is to write
  a pass which combines acquire/release barrier with its corresponding
  load/store operation to generate the load acquire/store release
  instruction on hosts which have such instruction(aarch64 for
  now).

v4:

- Update with comments from v3
- Use 'lock orl' instead of mfence on x86. Remove sse2 checks.
- Rebase on qemu/master instead of MTTCG
- Rename acquire barrier to load-acquire and release to store-release
  to avoid confusion with prevailing terminology

v3:

- Create different types of barriers. The barrier tcg opcode now takes
  an argument to generate the appropriate barrier instruction.
- Also add acquire/release/sc ordering flag to argument.

v2:

- Rebase on Richard's patches generating fences for other
  architectures.

v1:

- Initial version: Introduce memory barrier tcg opcode.

Pranith Kumar (14):
  Introduce TCGOpcode for memory barrier
  tcg/i386: Add support for fence
  tcg/aarch64: Add support for fence
  tcg/arm: Add support for fence
  tcg/ia64: Add support for fence
  tcg/mips: Add support for fence
  tcg/ppc: Add support for fence
  tcg/s390: Add support for fence
  tcg/sparc: Add support for fence
  tcg/tci: Add support for fence
  target-arm: Generate fences in ARMv7 frontend
  target-alpha: Generate fence op
  target-aarch64: Generate fences for aarch64
  target-i386: Generate fences for x86

 target-alpha/translate.c     |  4 ++--
 target-arm/translate-a64.c   | 14 +++++++++++++-
 target-arm/translate.c       |  4 ++--
 target-i386/translate.c      |  8 ++++++++
 tcg/README                   | 17 +++++++++++++++++
 tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
 tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
 tcg/i386/tcg-target.inc.c    | 18 ++++++++++++++++++
 tcg/ia64/tcg-target.inc.c    |  5 +++++
 tcg/mips/tcg-target.inc.c    |  6 ++++++
 tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++++++
 tcg/s390/tcg-target.inc.c    | 11 +++++++++++
 tcg/sparc/tcg-target.inc.c   | 25 +++++++++++++++++++++++++
 tcg/tcg-op.c                 | 17 +++++++++++++++++
 tcg/tcg-op.h                 |  2 ++
 tcg/tcg-opc.h                |  2 ++
 tcg/tcg.h                    | 19 +++++++++++++++++++
 tcg/tci/tcg-target.inc.c     |  3 +++
 tci.c                        |  4 ++++
 19 files changed, 220 insertions(+), 5 deletions(-)

-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 01/14] Introduce TCGOpcode for memory barrier
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 02/14] tcg/i386: Add support for fence Pranith Kumar
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

This commit introduces the TCGOpcode for memory barrier instruction.

This opcode takes an argument which is the type of memory barrier
which should be generated.

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 tcg/README    | 17 +++++++++++++++++
 tcg/tcg-op.c  | 17 +++++++++++++++++
 tcg/tcg-op.h  |  2 ++
 tcg/tcg-opc.h |  2 ++
 tcg/tcg.h     | 19 +++++++++++++++++++
 5 files changed, 57 insertions(+)

diff --git a/tcg/README b/tcg/README
index ce8beba..1d48aa9 100644
--- a/tcg/README
+++ b/tcg/README
@@ -402,6 +402,23 @@ double-word product T0.  The later is returned in two single-word outputs.
 
 Similar to mulu2, except the two inputs T1 and T2 are signed.
 
+********* Memory Barrier support
+
+* mb <$arg>
+
+Generate a target memory barrier instruction to ensure memory ordering as being
+enforced by a corresponding guest memory barrier instruction. The ordering
+enforced by the backend may be stricter than the ordering required by the guest.
+It cannot be weaker. This opcode takes a constant argument which is required to
+generate the appropriate barrier instruction. The backend should take care to
+emit the target barrier instruction only when necessary i.e., for SMP guests and
+when MTTCG is enabled.
+
+The guest translators should generate this opcode for all guest instructions
+which have ordering side effects.
+
+Please see docs/atomics.txt for more information on memory barriers.
+
 ********* 64-bit guest on 32-bit host support
 
 The following opcodes are internal to TCG.  Thus they are to be implemented by
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 293b854..149f4a9 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -148,6 +148,23 @@ void tcg_gen_op6(TCGContext *ctx, TCGOpcode opc, TCGArg a1, TCGArg a2,
     tcg_emit_op(ctx, opc, pi);
 }
 
+void tcg_gen_mb(TCGArg mb_type)
+{
+    bool emit_barriers = true;
+
+#ifndef CONFIG_USER_ONLY
+    /* TODO: When MTTCG is available for system mode, we will check
+     * the following condition and enable emit_barriers
+     * (qemu_tcg_mttcg_enabled() && smp_cpus > 1)
+     */
+    emit_barriers = false;
+#endif
+
+    if (emit_barriers) {
+        tcg_gen_op1(&tcg_ctx, INDEX_op_mb, mb_type);
+    }
+}
+
 /* 32 bit ops */
 
 void tcg_gen_addi_i32(TCGv_i32 ret, TCGv_i32 arg1, int32_t arg2)
diff --git a/tcg/tcg-op.h b/tcg/tcg-op.h
index f217e80..41890cc 100644
--- a/tcg/tcg-op.h
+++ b/tcg/tcg-op.h
@@ -261,6 +261,8 @@ static inline void tcg_gen_br(TCGLabel *l)
     tcg_gen_op1(&tcg_ctx, INDEX_op_br, label_arg(l));
 }
 
+void tcg_gen_mb(TCGArg a);
+
 /* Helper calls. */
 
 /* 32 bit ops */
diff --git a/tcg/tcg-opc.h b/tcg/tcg-opc.h
index 6d0410c..45528d2 100644
--- a/tcg/tcg-opc.h
+++ b/tcg/tcg-opc.h
@@ -42,6 +42,8 @@ DEF(br, 0, 0, 1, TCG_OPF_BB_END)
 # define IMPL64  TCG_OPF_64BIT
 #endif
 
+DEF(mb, 0, 0, 1, 0)
+
 DEF(mov_i32, 1, 1, 0, TCG_OPF_NOT_PRESENT)
 DEF(movi_i32, 1, 0, 1, TCG_OPF_NOT_PRESENT)
 DEF(setcond_i32, 1, 2, 1, 0)
diff --git a/tcg/tcg.h b/tcg/tcg.h
index 66ae0c7..639e30c 100644
--- a/tcg/tcg.h
+++ b/tcg/tcg.h
@@ -478,6 +478,25 @@ static inline intptr_t QEMU_ARTIFICIAL GET_TCGV_PTR(TCGv_ptr t)
 #define TCG_CALL_DUMMY_TCGV     MAKE_TCGV_I32(-1)
 #define TCG_CALL_DUMMY_ARG      ((TCGArg)(-1))
 
+/* used to indicate the type of accesses on which ordering is to be
+   ensured. Modeled after SPARC barriers */
+typedef enum {
+    TCG_MO_LD_LD    = 1,
+    TCG_MO_ST_LD    = 2,
+    TCG_MO_LD_ST    = 4,
+    TCG_MO_ST_ST    = 8,
+    TCG_MO_ALL      = 0xF, /* OR of all above */
+} TCGOrder;
+
+/* used to indicate the kind of ordering which is to be ensured by the
+   instruction. These types are derived from x86/aarch64 instructions.
+   It should be noted that these are different from C11 semantics */
+typedef enum {
+    TCG_BAR_LDAQ     = 0x10, /* generated for aarch64 load-acquire inst. */
+    TCG_BAR_STRL     = 0x20, /* generated for aarch64 store-rel inst. */
+    TCG_BAR_SC       = 0x40, /* generated for all other ordering inst. */
+} TCGBar;
+
 /* Conditions.  Note that these are laid out for easy manipulation by
    the functions below:
      bit 0 is used for inverting;
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 02/14] tcg/i386: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 01/14] Introduce TCGOpcode for memory barrier Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 03/14] tcg/aarch64: " Pranith Kumar
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Richard Henderson, open list:i386 target
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Generate a 'lock orl $0,0(%esp)' instruction for ordering instead of
mfence which has similar ordering semantics.

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 tcg/i386/tcg-target.inc.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tcg/i386/tcg-target.inc.c b/tcg/i386/tcg-target.inc.c
index 6f8cdca..a516ec9 100644
--- a/tcg/i386/tcg-target.inc.c
+++ b/tcg/i386/tcg-target.inc.c
@@ -686,6 +686,18 @@ static inline void tcg_out_pushi(TCGContext *s, tcg_target_long val)
     }
 }
 
+static inline void tcg_out_mb(TCGContext *s, TCGArg a0)
+{
+    /* lock orl $0,0(%esp) is used instead of mfence,
+     * sfence/lfence are not generated
+     */
+    if (a0 & TCG_MO_ST_LD) {
+        tcg_out8(s, 0xf0);
+        tcg_out_modrm_offset(s, OPC_ARITH_EvIb, ARITH_OR, TCG_REG_ESP, 0);
+        tcg_out8(s, 0);
+    }
+}
+
 static inline void tcg_out_push(TCGContext *s, int reg)
 {
     tcg_out_opc(s, OPC_PUSH_r32 + LOWREGMASK(reg), 0, reg, 0);
@@ -2130,6 +2142,10 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
         }
         break;
 
+    case INDEX_op_mb:
+        tcg_debug_assert(args[0] != 0);
+        tcg_out_mb(s, args[0]);
+        break;
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
@@ -2195,6 +2211,8 @@ static const TCGTargetOpDef x86_op_defs[] = {
     { INDEX_op_add2_i32, { "r", "r", "0", "1", "ri", "ri" } },
     { INDEX_op_sub2_i32, { "r", "r", "0", "1", "ri", "ri" } },
 
+    { INDEX_op_mb, { } },
+
 #if TCG_TARGET_REG_BITS == 32
     { INDEX_op_brcond2_i32, { "r", "r", "ri", "ri" } },
     { INDEX_op_setcond2_i32, { "r", "r", "r", "ri", "ri" } },
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 03/14] tcg/aarch64: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 01/14] Introduce TCGOpcode for memory barrier Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 02/14] tcg/i386: Add support for fence Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 04/14] tcg/arm: " Pranith Kumar
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Claudio Fontana, Richard Henderson, open list:AArch64 target,
	open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell, Claudio Fontana

Cc: Claudio Fontana <claudio.fontana@gmail.com>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/tcg/aarch64/tcg-target.inc.c b/tcg/aarch64/tcg-target.inc.c
index 08b2d03..1d220b7 100644
--- a/tcg/aarch64/tcg-target.inc.c
+++ b/tcg/aarch64/tcg-target.inc.c
@@ -372,6 +372,11 @@ typedef enum {
     I3510_EOR       = 0x4a000000,
     I3510_EON       = 0x4a200000,
     I3510_ANDS      = 0x6a000000,
+
+    /* System instructions.  */
+    DMB_ISH         = 0xd50338bf,
+    DMB_LD          = 0x00000100,
+    DMB_ST          = 0x00000200,
 } AArch64Insn;
 
 static inline uint32_t tcg_in32(TCGContext *s)
@@ -981,6 +986,22 @@ static inline void tcg_out_addsub2(TCGContext *s, int ext, TCGReg rl,
     tcg_out_mov(s, ext, orig_rl, rl);
 }
 
+static inline void tcg_out_mb(TCGContext *s, TCGArg a0)
+{
+    uint32_t dmb_type = DMB_ISH;
+    if (a0 & (TCG_MO_LD_ST | TCG_MO_ST_LD)) {
+        tcg_out32(s, dmb_type | DMB_LD | DMB_ST);
+        return;
+    }
+    if (a0 & TCG_MO_LD_LD) {
+        dmb_type |= DMB_LD;
+    }
+    if (a0 & TCG_MO_ST_ST) {
+        dmb_type |= DMB_ST;
+    }
+    tcg_out32(s, dmb_type);
+}
+
 #ifdef CONFIG_SOFTMMU
 /* helper signature: helper_ret_ld_mmu(CPUState *env, target_ulong addr,
  *                                     TCGMemOpIdx oi, uintptr_t ra)
@@ -1648,6 +1669,10 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,
         tcg_out_insn(s, 3508, SMULH, TCG_TYPE_I64, a0, a1, a2);
         break;
 
+    case INDEX_op_mb:
+        tcg_out_mb(s, a0);
+        break;
+
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
@@ -1772,6 +1797,7 @@ static const TCGTargetOpDef aarch64_op_defs[] = {
     { INDEX_op_muluh_i64, { "r", "r", "r" } },
     { INDEX_op_mulsh_i64, { "r", "r", "r" } },
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 04/14] tcg/arm: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (2 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 03/14] tcg/aarch64: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 05/14] tcg/ia64: " Pranith Kumar
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Andrzej Zaborowski, Richard Henderson, open list:ARM target,
	open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Cc: Andrzej Zaborowski <balrogg@gmail.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/arm/tcg-target.inc.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tcg/arm/tcg-target.inc.c b/tcg/arm/tcg-target.inc.c
index 172feba..4e66bcd 100644
--- a/tcg/arm/tcg-target.inc.c
+++ b/tcg/arm/tcg-target.inc.c
@@ -313,6 +313,10 @@ typedef enum {
     INSN_LDRD_REG  = 0x000000d0,
     INSN_STRD_IMM  = 0x004000f0,
     INSN_STRD_REG  = 0x000000f0,
+
+    INSN_DMB_ISH   = 0x5bf07ff5,
+    INSN_DMB_MCR   = 0xba0f07ee,
+
 } ARMInsn;
 
 #define SHIFT_IMM_LSL(im)	(((im) << 7) | 0x00)
@@ -1066,6 +1070,15 @@ static inline void tcg_out_goto_label(TCGContext *s, int cond, TCGLabel *l)
     }
 }
 
+static inline void tcg_out_mb(TCGContext *s, TCGArg a0)
+{
+    if (use_armv7_instructions) {
+        tcg_out32(s, INSN_DMB_ISH);
+    } else if (use_armv6_instructions) {
+        tcg_out32(s, INSN_DMB_MCR);
+    }
+}
+
 #ifdef CONFIG_SOFTMMU
 /* helper signature: helper_ret_ld_mmu(CPUState *env, target_ulong addr,
  *                                     int mmu_idx, uintptr_t ra)
@@ -1923,6 +1936,10 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
         tcg_out_udiv(s, COND_AL, args[0], args[1], args[2]);
         break;
 
+    case INDEX_op_mb:
+        tcg_out_mb(s, args[0]);
+        break;
+
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
     case INDEX_op_call:     /* Always emitted via tcg_out_call.  */
@@ -1997,6 +2014,7 @@ static const TCGTargetOpDef arm_op_defs[] = {
     { INDEX_op_div_i32, { "r", "r", "r" } },
     { INDEX_op_divu_i32, { "r", "r", "r" } },
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 05/14] tcg/ia64: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (3 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 04/14] tcg/arm: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 06/14] tcg/mips: " Pranith Kumar
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Aurelien Jarno, Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Cc: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 tcg/ia64/tcg-target.inc.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/tcg/ia64/tcg-target.inc.c b/tcg/ia64/tcg-target.inc.c
index c91f392..26812ee 100644
--- a/tcg/ia64/tcg-target.inc.c
+++ b/tcg/ia64/tcg-target.inc.c
@@ -247,6 +247,7 @@ enum {
     OPC_LD4_M3                = 0x0a080000000ull,
     OPC_LD8_M1                = 0x080c0000000ull,
     OPC_LD8_M3                = 0x0a0c0000000ull,
+    OPC_MF_M24                = 0x00110000000ull,
     OPC_MUX1_I3               = 0x0eca0000000ull,
     OPC_NOP_B9                = 0x04008000000ull,
     OPC_NOP_F16               = 0x00008000000ull,
@@ -2223,6 +2224,9 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
         tcg_out_qemu_st(s, args);
         break;
 
+    case INDEX_op_mb:
+        tcg_out_bundle(s, mmI, OPC_MF_M24, INSN_NOP_M, INSN_NOP_I);
+        break;
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
@@ -2336,6 +2340,7 @@ static const TCGTargetOpDef ia64_op_defs[] = {
     { INDEX_op_qemu_st_i32, { "SZ", "r" } },
     { INDEX_op_qemu_st_i64, { "SZ", "r" } },
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 06/14] tcg/mips: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (4 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 05/14] tcg/ia64: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 07/14] tcg/ppc: " Pranith Kumar
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Aurelien Jarno, Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Signed-off-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 tcg/mips/tcg-target.inc.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tcg/mips/tcg-target.inc.c b/tcg/mips/tcg-target.inc.c
index 2f9be48..1f5adbe 100644
--- a/tcg/mips/tcg-target.inc.c
+++ b/tcg/mips/tcg-target.inc.c
@@ -292,6 +292,7 @@ typedef enum {
     OPC_JALR     = OPC_SPECIAL | 0x09,
     OPC_MOVZ     = OPC_SPECIAL | 0x0A,
     OPC_MOVN     = OPC_SPECIAL | 0x0B,
+    OPC_SYNC     = OPC_SPECIAL | 0x0F,
     OPC_MFHI     = OPC_SPECIAL | 0x10,
     OPC_MFLO     = OPC_SPECIAL | 0x12,
     OPC_MULT     = OPC_SPECIAL | 0x18,
@@ -1646,6 +1647,9 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
                         const_args[4], const_args[5], true);
         break;
 
+    case INDEX_op_mb:
+        tcg_out32(s, OPC_SYNC);
+        break;
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
     case INDEX_op_call:     /* Always emitted via tcg_out_call.  */
@@ -1726,6 +1730,8 @@ static const TCGTargetOpDef mips_op_defs[] = {
     { INDEX_op_qemu_ld_i64, { "L", "L", "lZ", "lZ" } },
     { INDEX_op_qemu_st_i64, { "SZ", "SZ", "SZ", "SZ" } },
 #endif
+
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 07/14] tcg/ppc: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (5 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 06/14] tcg/mips: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 08/14] tcg/s390: " Pranith Kumar
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Vassili Karpov (malc), Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/ppc/tcg-target.inc.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/tcg/ppc/tcg-target.inc.c b/tcg/ppc/tcg-target.inc.c
index eaf1bd9..1547d8f 100644
--- a/tcg/ppc/tcg-target.inc.c
+++ b/tcg/ppc/tcg-target.inc.c
@@ -469,6 +469,10 @@ static int tcg_target_const_match(tcg_target_long val, TCGType type,
 #define STHX   XO31(407)
 #define STWX   XO31(151)
 
+#define EIEIO  XO31(854)
+#define HWSYNC XO31(598)
+#define LWSYNC (HWSYNC | (1u << 21))
+
 #define SPR(a, b) ((((a)<<5)|(b))<<11)
 #define LR     SPR(8, 0)
 #define CTR    SPR(9, 0)
@@ -1243,6 +1247,19 @@ static void tcg_out_brcond2 (TCGContext *s, const TCGArg *args,
     tcg_out_bc(s, BC | BI(7, CR_EQ) | BO_COND_TRUE, arg_label(args[5]));
 }
 
+static void tcg_out_mb(TCGContext *s, TCGArg a0)
+{
+    if (a0 & TCG_MO_LD_LD) {
+        tcg_out32(s, LWSYNC);
+        return;
+    }
+    if (a0 & TCG_MO_ST_ST) {
+        tcg_out32(s, EIEIO);
+        return;
+    }
+    tcg_out32(s, HWSYNC);
+}
+
 #ifdef __powerpc64__
 void ppc_tb_set_jmp_target(uintptr_t jmp_addr, uintptr_t addr)
 {
@@ -2449,6 +2466,10 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
         tcg_out32(s, MULHD | TAB(args[0], args[1], args[2]));
         break;
 
+    case INDEX_op_mb:
+        tcg_out_mb(s, args[0]);
+        break;
+
     case INDEX_op_mov_i32:   /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32:  /* Always emitted via tcg_out_movi.  */
@@ -2596,6 +2617,7 @@ static const TCGTargetOpDef ppc_op_defs[] = {
     { INDEX_op_qemu_st_i64, { "S", "S", "S", "S" } },
 #endif
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 08/14] tcg/s390: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (6 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 07/14] tcg/ppc: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-10-16  8:47   ` Stefan Hajnoczi
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 09/14] tcg/sparc: " Pranith Kumar
                   ` (8 subsequent siblings)
  16 siblings, 1 reply; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Alexander Graf, Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/s390/tcg-target.inc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tcg/s390/tcg-target.inc.c b/tcg/s390/tcg-target.inc.c
index 5a7495b..01aae35 100644
--- a/tcg/s390/tcg-target.inc.c
+++ b/tcg/s390/tcg-target.inc.c
@@ -343,6 +343,7 @@ static tcg_insn_unit *tb_ret_addr;
 #define FACILITY_EXT_IMM	(1ULL << (63 - 21))
 #define FACILITY_GEN_INST_EXT	(1ULL << (63 - 34))
 #define FACILITY_LOAD_ON_COND   (1ULL << (63 - 45))
+#define FACILITY_FAST_BCR_SER   FACILITY_LOAD_ON_COND
 
 static uint64_t facilities;
 
@@ -2172,6 +2173,15 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
         tgen_deposit(s, args[0], args[2], args[3], args[4]);
         break;
 
+    case INDEX_op_mb:
+        /* The host memory model is quite strong, we simply need to
+           serialize the instruction stream.  */
+        if (args[0] == TCG_MO_ALL || args[0] == TCG_MO_ST_LD) {
+            tcg_out_insn(s, RR, BCR,
+                         facilities & FACILITY_FAST_BCR_SER ? 14 : 15, 0);
+        }
+        break;
+
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
@@ -2293,6 +2303,7 @@ static const TCGTargetOpDef s390_op_defs[] = {
     { INDEX_op_movcond_i64, { "r", "r", "rC", "r", "0" } },
     { INDEX_op_deposit_i64, { "r", "0", "r" } },
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 09/14] tcg/sparc: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (7 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 08/14] tcg/s390: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 10/14] tcg/tci: " Pranith Kumar
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell, Blue Swirl

Cc: Blue Swirl <blauwirbel@gmail.com>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/sparc/tcg-target.inc.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/tcg/sparc/tcg-target.inc.c b/tcg/sparc/tcg-target.inc.c
index 8e98172..04a6404 100644
--- a/tcg/sparc/tcg-target.inc.c
+++ b/tcg/sparc/tcg-target.inc.c
@@ -249,6 +249,8 @@ static const int tcg_target_call_oarg_regs[] = {
 #define STWA       (INSN_OP(3) | INSN_OP3(0x14))
 #define STXA       (INSN_OP(3) | INSN_OP3(0x1e))
 
+#define MEMBAR     (INSN_OP(2) | INSN_OP3(0x28) | INSN_RS1(15) | (1 << 13))
+
 #ifndef ASI_PRIMARY_LITTLE
 #define ASI_PRIMARY_LITTLE 0x88
 #endif
@@ -835,6 +837,24 @@ static void tcg_out_call(TCGContext *s, tcg_insn_unit *dest)
     tcg_out_nop(s);
 }
 
+static void tcg_out_mb(TCGContext *s, TCGArg a0)
+{
+    uint8_t bar_opcode = MEMBAR;
+    if (a0 & TCG_MO_LD_LD) {
+        /* #LoadLoad */
+        bar_opcode |= 0x5;
+    }
+    if (a0 & TCG_MO_ST_ST) {
+        /* #StoreStore */
+        bar_opcode |= 0xa;
+    }
+    if (a0 & (TCG_MO_LD_ST | TCG_MO_ST_LD)) {
+        /* #StoreLoad | #LoadStore */
+        bar_opcode |= 0xf;
+    }
+    tcg_out32(s, bar_opcode);
+}
+
 #ifdef CONFIG_SOFTMMU
 static tcg_insn_unit *qemu_ld_trampoline[16];
 static tcg_insn_unit *qemu_st_trampoline[16];
@@ -1460,6 +1480,10 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc,
 	tcg_out_arithc(s, a0, TCG_REG_G0, a1, const_args[1], c);
 	break;
 
+    case INDEX_op_mb:
+        tcg_out_mb(s, a0);
+        break;
+
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
@@ -1561,6 +1585,7 @@ static const TCGTargetOpDef sparc_op_defs[] = {
     { INDEX_op_qemu_st_i32, { "sZ", "A" } },
     { INDEX_op_qemu_st_i64, { "SZ", "A" } },
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 10/14] tcg/tci: Add support for fence
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (8 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 09/14] tcg/sparc: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 11/14] target-arm: Generate fences in ARMv7 frontend Pranith Kumar
                   ` (6 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Stefan Weil, Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Cc: Stefan Weil <sw@weilnetz.de>
Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 tcg/tci/tcg-target.inc.c | 3 +++
 tci.c                    | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/tcg/tci/tcg-target.inc.c b/tcg/tci/tcg-target.inc.c
index 3c47ea7..9dbf4d5 100644
--- a/tcg/tci/tcg-target.inc.c
+++ b/tcg/tci/tcg-target.inc.c
@@ -255,6 +255,7 @@ static const TCGTargetOpDef tcg_target_op_defs[] = {
     { INDEX_op_bswap32_i32, { R, R } },
 #endif
 
+    { INDEX_op_mb, { } },
     { -1 },
 };
 
@@ -800,6 +801,8 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
         }
         tcg_out_i(s, *args++);
         break;
+    case INDEX_op_mb:
+        break;
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:
     case INDEX_op_movi_i32: /* Always emitted via tcg_out_movi.  */
diff --git a/tci.c b/tci.c
index b488c0d..4bdc645 100644
--- a/tci.c
+++ b/tci.c
@@ -1236,6 +1236,10 @@ uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
                 tcg_abort();
             }
             break;
+        case INDEX_op_mb:
+            /* Ensure ordering for all kinds */
+            smp_mb();
+            break;
         default:
             TODO();
             break;
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 11/14] target-arm: Generate fences in ARMv7 frontend
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (9 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 10/14] tcg/tci: " Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 12/14] target-alpha: Generate fence op Pranith Kumar
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Peter Maydell, open list:ARM, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, rth, pbonzini

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 target-arm/translate.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-arm/translate.c b/target-arm/translate.c
index bd5d5cb..693d4bc 100644
--- a/target-arm/translate.c
+++ b/target-arm/translate.c
@@ -8083,7 +8083,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn)
             case 4: /* dsb */
             case 5: /* dmb */
                 ARCH(7);
-                /* We don't emulate caches so these are a no-op.  */
+                tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
                 return;
             case 6: /* isb */
                 /* We need to break the TB after this insn to execute
@@ -10432,7 +10432,7 @@ static int disas_thumb2_insn(CPUARMState *env, DisasContext *s, uint16_t insn_hw
                             break;
                         case 4: /* dsb */
                         case 5: /* dmb */
-                            /* These execute as NOPs.  */
+                            tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
                             break;
                         case 6: /* isb */
                             /* We need to break the TB after this insn
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 12/14] target-alpha: Generate fence op
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (10 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 11/14] target-arm: Generate fences in ARMv7 frontend Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 13/14] target-aarch64: Generate fences for aarch64 Pranith Kumar
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Richard Henderson, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, pbonzini, peter.maydell

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 target-alpha/translate.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-alpha/translate.c b/target-alpha/translate.c
index 0ea0e6e..c27c7b9 100644
--- a/target-alpha/translate.c
+++ b/target-alpha/translate.c
@@ -2338,11 +2338,11 @@ static ExitStatus translate_one(DisasContext *ctx, uint32_t insn)
             break;
         case 0x4000:
             /* MB */
-            /* No-op */
+            tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
             break;
         case 0x4400:
             /* WMB */
-            /* No-op */
+            tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC);
             break;
         case 0x8000:
             /* FETCH */
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 13/14] target-aarch64: Generate fences for aarch64
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (11 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 12/14] target-alpha: Generate fence op Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 14/14] target-i386: Generate fences for x86 Pranith Kumar
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Peter Maydell, open list:ARM, open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, rth, pbonzini

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 target-arm/translate-a64.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c
index f5e29d2..09877bc 100644
--- a/target-arm/translate-a64.c
+++ b/target-arm/translate-a64.c
@@ -1305,7 +1305,7 @@ static void handle_sync(DisasContext *s, uint32_t insn,
         return;
     case 4: /* DSB */
     case 5: /* DMB */
-        /* We don't emulate caches so barriers are no-ops */
+        tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
         return;
     case 6: /* ISB */
         /* We need to break the TB after this insn to execute
@@ -1934,7 +1934,13 @@ static void disas_ldst_excl(DisasContext *s, uint32_t insn)
         if (!is_store) {
             s->is_ldex = true;
             gen_load_exclusive(s, rt, rt2, tcg_addr, size, is_pair);
+            if (is_lasr) {
+                tcg_gen_mb(TCG_MO_ALL | TCG_BAR_LDAQ);
+            }
         } else {
+            if (is_lasr) {
+                tcg_gen_mb(TCG_MO_ALL | TCG_BAR_STRL);
+            }
             gen_store_exclusive(s, rs, rt, rt2, tcg_addr, size, is_pair);
         }
     } else {
@@ -1943,11 +1949,17 @@ static void disas_ldst_excl(DisasContext *s, uint32_t insn)
 
         /* Generate ISS for non-exclusive accesses including LASR.  */
         if (is_store) {
+            if (is_lasr) {
+                tcg_gen_mb(TCG_MO_ALL | TCG_BAR_STRL);
+            }
             do_gpr_st(s, tcg_rt, tcg_addr, size,
                       true, rt, iss_sf, is_lasr);
         } else {
             do_gpr_ld(s, tcg_rt, tcg_addr, size, false, false,
                       true, rt, iss_sf, is_lasr);
+            if (is_lasr) {
+                tcg_gen_mb(TCG_MO_ALL | TCG_BAR_LDAQ);
+            }
         }
     }
 }
-- 
2.9.0

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

* [Qemu-devel] [PATCH v4 14/14] target-i386: Generate fences for x86
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (12 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 13/14] target-aarch64: Generate fences for aarch64 Pranith Kumar
@ 2016-07-14 20:20 ` Pranith Kumar
  2016-07-23 16:08 ` [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-14 20:20 UTC (permalink / raw)
  To: Paolo Bonzini, Richard Henderson, Eduardo Habkost,
	open list:All patches CC here
  Cc: alex.bennee, serge.fdrv, peter.maydell

Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
---
 target-i386/translate.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/target-i386/translate.c b/target-i386/translate.c
index 7dea18b..ebeb6f0 100644
--- a/target-i386/translate.c
+++ b/target-i386/translate.c
@@ -8012,13 +8012,21 @@ static target_ulong disas_insn(CPUX86State *env, DisasContext *s,
                 || (prefixes & PREFIX_LOCK)) {
                 goto illegal_op;
             }
+            tcg_gen_mb(TCG_MO_ST_ST | TCG_BAR_SC);
             break;
         case 0xe8 ... 0xef: /* lfence */
+            if (!(s->cpuid_features & CPUID_SSE)
+                || (prefixes & PREFIX_LOCK)) {
+                goto illegal_op;
+            }
+            tcg_gen_mb(TCG_MO_LD_LD | TCG_BAR_SC);
+            break;
         case 0xf0 ... 0xf7: /* mfence */
             if (!(s->cpuid_features & CPUID_SSE2)
                 || (prefixes & PREFIX_LOCK)) {
                 goto illegal_op;
             }
+            tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC);
             break;
 
         default:
-- 
2.9.0

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

* Re: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (13 preceding siblings ...)
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 14/14] target-i386: Generate fences for x86 Pranith Kumar
@ 2016-07-23 16:08 ` Pranith Kumar
  2016-07-23 17:34   ` Paolo Bonzini
  2016-08-08 14:05 ` Pranith Kumar
  2016-09-07 17:33 ` Richard Henderson
  16 siblings, 1 reply; 22+ messages in thread
From: Pranith Kumar @ 2016-07-23 16:08 UTC (permalink / raw)
  To: Pranith Kumar
  Cc: qemu-devel, Alex Bennée, Sergey Fedorov, Richard Henderson,
	Paolo Bonzini, Peter Maydell

Ping for review!

On Thu, Jul 14, 2016 at 4:20 PM, Pranith Kumar <bobby.prani@gmail.com> wrote:
> Hello,
>
> The following series adds fence instruction generation support to
> TCG. Based on feedback to the last series, I added the four
> combinations of orderings modeled after Sparc membar.
>
> This has been tested and confirmed to fix ordering issues on
> x86/armv7/aarch64 hosts with MTTCG enabled for an ARMv7 guest using
> KVM unit tests. It has also been tested with litmus tests provided by
> Alex Bennée.
>
> TODO:
>
> * The acquire/release order is not utilized yet. Currently we generate
>   SC barriers even for acquire/release barriers. The idea is to write
>   a pass which combines acquire/release barrier with its corresponding
>   load/store operation to generate the load acquire/store release
>   instruction on hosts which have such instruction(aarch64 for
>   now).
>
> v4:
>
> - Update with comments from v3
> - Use 'lock orl' instead of mfence on x86. Remove sse2 checks.
> - Rebase on qemu/master instead of MTTCG
> - Rename acquire barrier to load-acquire and release to store-release
>   to avoid confusion with prevailing terminology
>
> v3:
>
> - Create different types of barriers. The barrier tcg opcode now takes
>   an argument to generate the appropriate barrier instruction.
> - Also add acquire/release/sc ordering flag to argument.
>
> v2:
>
> - Rebase on Richard's patches generating fences for other
>   architectures.
>
> v1:
>
> - Initial version: Introduce memory barrier tcg opcode.
>
> Pranith Kumar (14):
>   Introduce TCGOpcode for memory barrier
>   tcg/i386: Add support for fence
>   tcg/aarch64: Add support for fence
>   tcg/arm: Add support for fence
>   tcg/ia64: Add support for fence
>   tcg/mips: Add support for fence
>   tcg/ppc: Add support for fence
>   tcg/s390: Add support for fence
>   tcg/sparc: Add support for fence
>   tcg/tci: Add support for fence
>   target-arm: Generate fences in ARMv7 frontend
>   target-alpha: Generate fence op
>   target-aarch64: Generate fences for aarch64
>   target-i386: Generate fences for x86
>
>  target-alpha/translate.c     |  4 ++--
>  target-arm/translate-a64.c   | 14 +++++++++++++-
>  target-arm/translate.c       |  4 ++--
>  target-i386/translate.c      |  8 ++++++++
>  tcg/README                   | 17 +++++++++++++++++
>  tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
>  tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
>  tcg/i386/tcg-target.inc.c    | 18 ++++++++++++++++++
>  tcg/ia64/tcg-target.inc.c    |  5 +++++
>  tcg/mips/tcg-target.inc.c    |  6 ++++++
>  tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++++++
>  tcg/s390/tcg-target.inc.c    | 11 +++++++++++
>  tcg/sparc/tcg-target.inc.c   | 25 +++++++++++++++++++++++++
>  tcg/tcg-op.c                 | 17 +++++++++++++++++
>  tcg/tcg-op.h                 |  2 ++
>  tcg/tcg-opc.h                |  2 ++
>  tcg/tcg.h                    | 19 +++++++++++++++++++
>  tcg/tci/tcg-target.inc.c     |  3 +++
>  tci.c                        |  4 ++++
>  19 files changed, 220 insertions(+), 5 deletions(-)
>
> --
> 2.9.0
>



-- 
Pranith

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

* Re: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
  2016-07-23 16:08 ` [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
@ 2016-07-23 17:34   ` Paolo Bonzini
  2016-07-23 18:00     ` Pranith Kumar
  0 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2016-07-23 17:34 UTC (permalink / raw)
  To: Pranith Kumar
  Cc: qemu-devel, Alex Bennée, Sergey Fedorov, Richard Henderson,
	Peter Maydell

> Ping for review!

Hi,

we're on hard freeze so it's normal that maintainers focus on bugfixes
at this time.

Paolo

> On Thu, Jul 14, 2016 at 4:20 PM, Pranith Kumar <bobby.prani@gmail.com> wrote:
> > Hello,
> >
> > The following series adds fence instruction generation support to
> > TCG. Based on feedback to the last series, I added the four
> > combinations of orderings modeled after Sparc membar.
> >
> > This has been tested and confirmed to fix ordering issues on
> > x86/armv7/aarch64 hosts with MTTCG enabled for an ARMv7 guest using
> > KVM unit tests. It has also been tested with litmus tests provided by
> > Alex Bennée.
> >
> > TODO:
> >
> > * The acquire/release order is not utilized yet. Currently we generate
> >   SC barriers even for acquire/release barriers. The idea is to write
> >   a pass which combines acquire/release barrier with its corresponding
> >   load/store operation to generate the load acquire/store release
> >   instruction on hosts which have such instruction(aarch64 for
> >   now).
> >
> > v4:
> >
> > - Update with comments from v3
> > - Use 'lock orl' instead of mfence on x86. Remove sse2 checks.
> > - Rebase on qemu/master instead of MTTCG
> > - Rename acquire barrier to load-acquire and release to store-release
> >   to avoid confusion with prevailing terminology
> >
> > v3:
> >
> > - Create different types of barriers. The barrier tcg opcode now takes
> >   an argument to generate the appropriate barrier instruction.
> > - Also add acquire/release/sc ordering flag to argument.
> >
> > v2:
> >
> > - Rebase on Richard's patches generating fences for other
> >   architectures.
> >
> > v1:
> >
> > - Initial version: Introduce memory barrier tcg opcode.
> >
> > Pranith Kumar (14):
> >   Introduce TCGOpcode for memory barrier
> >   tcg/i386: Add support for fence
> >   tcg/aarch64: Add support for fence
> >   tcg/arm: Add support for fence
> >   tcg/ia64: Add support for fence
> >   tcg/mips: Add support for fence
> >   tcg/ppc: Add support for fence
> >   tcg/s390: Add support for fence
> >   tcg/sparc: Add support for fence
> >   tcg/tci: Add support for fence
> >   target-arm: Generate fences in ARMv7 frontend
> >   target-alpha: Generate fence op
> >   target-aarch64: Generate fences for aarch64
> >   target-i386: Generate fences for x86
> >
> >  target-alpha/translate.c     |  4 ++--
> >  target-arm/translate-a64.c   | 14 +++++++++++++-
> >  target-arm/translate.c       |  4 ++--
> >  target-i386/translate.c      |  8 ++++++++
> >  tcg/README                   | 17 +++++++++++++++++
> >  tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
> >  tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
> >  tcg/i386/tcg-target.inc.c    | 18 ++++++++++++++++++
> >  tcg/ia64/tcg-target.inc.c    |  5 +++++
> >  tcg/mips/tcg-target.inc.c    |  6 ++++++
> >  tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++++++
> >  tcg/s390/tcg-target.inc.c    | 11 +++++++++++
> >  tcg/sparc/tcg-target.inc.c   | 25 +++++++++++++++++++++++++
> >  tcg/tcg-op.c                 | 17 +++++++++++++++++
> >  tcg/tcg-op.h                 |  2 ++
> >  tcg/tcg-opc.h                |  2 ++
> >  tcg/tcg.h                    | 19 +++++++++++++++++++
> >  tcg/tci/tcg-target.inc.c     |  3 +++
> >  tci.c                        |  4 ++++
> >  19 files changed, 220 insertions(+), 5 deletions(-)
> >
> > --
> > 2.9.0
> >
> 
> 
> 
> --
> Pranith
> 

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

* Re: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
  2016-07-23 17:34   ` Paolo Bonzini
@ 2016-07-23 18:00     ` Pranith Kumar
  0 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-07-23 18:00 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: qemu-devel, Alex Bennée, Sergey Fedorov, Richard Henderson,
	Peter Maydell

On Sat, Jul 23, 2016 at 1:34 PM, Paolo Bonzini <pbonzini@redhat.com> wrote:
>> Ping for review!
>
> Hi,
>
> we're on hard freeze so it's normal that maintainers focus on bugfixes
> at this time.
>

OK. I will wait for 2 weeks and then ping to remind.

Thanks!
-- 
Pranith

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

* Re: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (14 preceding siblings ...)
  2016-07-23 16:08 ` [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
@ 2016-08-08 14:05 ` Pranith Kumar
  2016-09-07 17:33 ` Richard Henderson
  16 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-08-08 14:05 UTC (permalink / raw)
  To: Pranith Kumar
  Cc: qemu-devel, Alex Bennée, Sergey Fedorov, Richard Henderson,
	Paolo Bonzini, Peter Maydell

ping for review!


On Thu, Jul 14, 2016 at 4:20 PM, Pranith Kumar <bobby.prani@gmail.com> wrote:
> Hello,
>
> The following series adds fence instruction generation support to
> TCG. Based on feedback to the last series, I added the four
> combinations of orderings modeled after Sparc membar.
>
> This has been tested and confirmed to fix ordering issues on
> x86/armv7/aarch64 hosts with MTTCG enabled for an ARMv7 guest using
> KVM unit tests. It has also been tested with litmus tests provided by
> Alex Bennée.
>
> TODO:
>
> * The acquire/release order is not utilized yet. Currently we generate
>   SC barriers even for acquire/release barriers. The idea is to write
>   a pass which combines acquire/release barrier with its corresponding
>   load/store operation to generate the load acquire/store release
>   instruction on hosts which have such instruction(aarch64 for
>   now).
>
> v4:
>
> - Update with comments from v3
> - Use 'lock orl' instead of mfence on x86. Remove sse2 checks.
> - Rebase on qemu/master instead of MTTCG
> - Rename acquire barrier to load-acquire and release to store-release
>   to avoid confusion with prevailing terminology
>
> v3:
>
> - Create different types of barriers. The barrier tcg opcode now takes
>   an argument to generate the appropriate barrier instruction.
> - Also add acquire/release/sc ordering flag to argument.
>
> v2:
>
> - Rebase on Richard's patches generating fences for other
>   architectures.
>
> v1:
>
> - Initial version: Introduce memory barrier tcg opcode.
>
> Pranith Kumar (14):
>   Introduce TCGOpcode for memory barrier
>   tcg/i386: Add support for fence
>   tcg/aarch64: Add support for fence
>   tcg/arm: Add support for fence
>   tcg/ia64: Add support for fence
>   tcg/mips: Add support for fence
>   tcg/ppc: Add support for fence
>   tcg/s390: Add support for fence
>   tcg/sparc: Add support for fence
>   tcg/tci: Add support for fence
>   target-arm: Generate fences in ARMv7 frontend
>   target-alpha: Generate fence op
>   target-aarch64: Generate fences for aarch64
>   target-i386: Generate fences for x86
>
>  target-alpha/translate.c     |  4 ++--
>  target-arm/translate-a64.c   | 14 +++++++++++++-
>  target-arm/translate.c       |  4 ++--
>  target-i386/translate.c      |  8 ++++++++
>  tcg/README                   | 17 +++++++++++++++++
>  tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
>  tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
>  tcg/i386/tcg-target.inc.c    | 18 ++++++++++++++++++
>  tcg/ia64/tcg-target.inc.c    |  5 +++++
>  tcg/mips/tcg-target.inc.c    |  6 ++++++
>  tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++++++
>  tcg/s390/tcg-target.inc.c    | 11 +++++++++++
>  tcg/sparc/tcg-target.inc.c   | 25 +++++++++++++++++++++++++
>  tcg/tcg-op.c                 | 17 +++++++++++++++++
>  tcg/tcg-op.h                 |  2 ++
>  tcg/tcg-opc.h                |  2 ++
>  tcg/tcg.h                    | 19 +++++++++++++++++++
>  tcg/tci/tcg-target.inc.c     |  3 +++
>  tci.c                        |  4 ++++
>  19 files changed, 220 insertions(+), 5 deletions(-)
>
> --
> 2.9.0
>



-- 
Pranith

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

* Re: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation
  2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
                   ` (15 preceding siblings ...)
  2016-08-08 14:05 ` Pranith Kumar
@ 2016-09-07 17:33 ` Richard Henderson
  16 siblings, 0 replies; 22+ messages in thread
From: Richard Henderson @ 2016-09-07 17:33 UTC (permalink / raw)
  To: Pranith Kumar
  Cc: peter.maydell, qemu-devel, pbonzini, serge.fdrv, alex.bennee

On 07/14/2016 01:20 PM, Pranith Kumar wrote:
> Pranith Kumar (14):
>   Introduce TCGOpcode for memory barrier
>   tcg/i386: Add support for fence
>   tcg/aarch64: Add support for fence
>   tcg/arm: Add support for fence
>   tcg/ia64: Add support for fence
>   tcg/mips: Add support for fence
>   tcg/ppc: Add support for fence
>   tcg/s390: Add support for fence
>   tcg/sparc: Add support for fence
>   tcg/tci: Add support for fence
>   target-arm: Generate fences in ARMv7 frontend
>   target-alpha: Generate fence op
>   target-aarch64: Generate fences for aarch64
>   target-i386: Generate fences for x86
>
>  target-alpha/translate.c     |  4 ++--
>  target-arm/translate-a64.c   | 14 +++++++++++++-
>  target-arm/translate.c       |  4 ++--
>  target-i386/translate.c      |  8 ++++++++
>  tcg/README                   | 17 +++++++++++++++++
>  tcg/aarch64/tcg-target.inc.c | 26 ++++++++++++++++++++++++++
>  tcg/arm/tcg-target.inc.c     | 18 ++++++++++++++++++
>  tcg/i386/tcg-target.inc.c    | 18 ++++++++++++++++++
>  tcg/ia64/tcg-target.inc.c    |  5 +++++
>  tcg/mips/tcg-target.inc.c    |  6 ++++++
>  tcg/ppc/tcg-target.inc.c     | 22 ++++++++++++++++++++++
>  tcg/s390/tcg-target.inc.c    | 11 +++++++++++
>  tcg/sparc/tcg-target.inc.c   | 25 +++++++++++++++++++++++++
>  tcg/tcg-op.c                 | 17 +++++++++++++++++
>  tcg/tcg-op.h                 |  2 ++
>  tcg/tcg-opc.h                |  2 ++
>  tcg/tcg.h                    | 19 +++++++++++++++++++
>  tcg/tci/tcg-target.inc.c     |  3 +++
>  tci.c                        |  4 ++++
>  19 files changed, 220 insertions(+), 5 deletions(-)

Queued.


r~

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

* Re: [Qemu-devel] [PATCH v4 08/14] tcg/s390: Add support for fence
  2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 08/14] tcg/s390: " Pranith Kumar
@ 2016-10-16  8:47   ` Stefan Hajnoczi
  2016-10-16 16:17     ` Pranith Kumar
  0 siblings, 1 reply; 22+ messages in thread
From: Stefan Hajnoczi @ 2016-10-16  8:47 UTC (permalink / raw)
  To: Pranith Kumar
  Cc: Alexander Graf, Richard Henderson, open list:All patches CC here,
	peter.maydell, serge.fdrv, alex.bennee, pbonzini

[-- Attachment #1: Type: text/plain, Size: 1633 bytes --]

On Thu, Jul 14, 2016 at 04:20:20PM -0400, Pranith Kumar wrote:
> Cc: Alexander Graf <agraf@suse.de>
> Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
>  tcg/s390/tcg-target.inc.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/tcg/s390/tcg-target.inc.c b/tcg/s390/tcg-target.inc.c
> index 5a7495b..01aae35 100644
> --- a/tcg/s390/tcg-target.inc.c
> +++ b/tcg/s390/tcg-target.inc.c
> @@ -343,6 +343,7 @@ static tcg_insn_unit *tb_ret_addr;
>  #define FACILITY_EXT_IMM	(1ULL << (63 - 21))
>  #define FACILITY_GEN_INST_EXT	(1ULL << (63 - 34))
>  #define FACILITY_LOAD_ON_COND   (1ULL << (63 - 45))
> +#define FACILITY_FAST_BCR_SER   FACILITY_LOAD_ON_COND
>  
>  static uint64_t facilities;
>  
> @@ -2172,6 +2173,15 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
>          tgen_deposit(s, args[0], args[2], args[3], args[4]);
>          break;
>  
> +    case INDEX_op_mb:
> +        /* The host memory model is quite strong, we simply need to
> +           serialize the instruction stream.  */
> +        if (args[0] == TCG_MO_ALL || args[0] == TCG_MO_ST_LD) {
> +            tcg_out_insn(s, RR, BCR,
> +                         facilities & FACILITY_FAST_BCR_SER ? 14 : 15, 0);
> +        }

args[0] == TCG_MO_ALL is always false since frontends bitwise-OR
TCG_BAR_SC.

Did you mean:

switch (args[0] & TCG_MO_ALL) {
case TCG_MO_ALL: /* fall-through */
case TCG_MO_ST_LD:
    tcg_out_insn(s, RR, BCR,
                 facilities & FACILITY_FAST_BCR_SER ? 14 : 15, 0);
    break;
}

?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

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

* Re: [Qemu-devel] [PATCH v4 08/14] tcg/s390: Add support for fence
  2016-10-16  8:47   ` Stefan Hajnoczi
@ 2016-10-16 16:17     ` Pranith Kumar
  0 siblings, 0 replies; 22+ messages in thread
From: Pranith Kumar @ 2016-10-16 16:17 UTC (permalink / raw)
  To: Stefan Hajnoczi
  Cc: Alexander Graf, Richard Henderson, open list:All patches CC here,
	Peter Maydell, Sergey Fedorov, Alex Bennée, Paolo Bonzini

On Sun, Oct 16, 2016 at 4:47 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Thu, Jul 14, 2016 at 04:20:20PM -0400, Pranith Kumar wrote:
>> Cc: Alexander Graf <agraf@suse.de>
>> Signed-off-by: Pranith Kumar <bobby.prani@gmail.com>
>> Signed-off-by: Richard Henderson <rth@twiddle.net>
>> ---
>>  tcg/s390/tcg-target.inc.c | 11 +++++++++++
>>  1 file changed, 11 insertions(+)
>>
>> diff --git a/tcg/s390/tcg-target.inc.c b/tcg/s390/tcg-target.inc.c
>> index 5a7495b..01aae35 100644
>> --- a/tcg/s390/tcg-target.inc.c
>> +++ b/tcg/s390/tcg-target.inc.c
>> @@ -343,6 +343,7 @@ static tcg_insn_unit *tb_ret_addr;
>>  #define FACILITY_EXT_IMM     (1ULL << (63 - 21))
>>  #define FACILITY_GEN_INST_EXT        (1ULL << (63 - 34))
>>  #define FACILITY_LOAD_ON_COND   (1ULL << (63 - 45))
>> +#define FACILITY_FAST_BCR_SER   FACILITY_LOAD_ON_COND
>>
>>  static uint64_t facilities;
>>
>> @@ -2172,6 +2173,15 @@ static inline void tcg_out_op(TCGContext *s, TCGOpcode opc,
>>          tgen_deposit(s, args[0], args[2], args[3], args[4]);
>>          break;
>>
>> +    case INDEX_op_mb:
>> +        /* The host memory model is quite strong, we simply need to
>> +           serialize the instruction stream.  */
>> +        if (args[0] == TCG_MO_ALL || args[0] == TCG_MO_ST_LD) {
>> +            tcg_out_insn(s, RR, BCR,
>> +                         facilities & FACILITY_FAST_BCR_SER ? 14 : 15, 0);
>> +        }
>
> args[0] == TCG_MO_ALL is always false since frontends bitwise-OR
> TCG_BAR_SC.
>
> Did you mean:
>
> switch (args[0] & TCG_MO_ALL) {
> case TCG_MO_ALL: /* fall-through */
> case TCG_MO_ST_LD:
>     tcg_out_insn(s, RR, BCR,
>                  facilities & FACILITY_FAST_BCR_SER ? 14 : 15, 0);
>     break;
> }

Yup, that is what is intended. It looks like this patch was fixed by
rth when he merged it to do the correct thing. phew :)

-- 
Pranith

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

end of thread, other threads:[~2016-10-16 16:18 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-14 20:20 [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 01/14] Introduce TCGOpcode for memory barrier Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 02/14] tcg/i386: Add support for fence Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 03/14] tcg/aarch64: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 04/14] tcg/arm: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 05/14] tcg/ia64: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 06/14] tcg/mips: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 07/14] tcg/ppc: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 08/14] tcg/s390: " Pranith Kumar
2016-10-16  8:47   ` Stefan Hajnoczi
2016-10-16 16:17     ` Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 09/14] tcg/sparc: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 10/14] tcg/tci: " Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 11/14] target-arm: Generate fences in ARMv7 frontend Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 12/14] target-alpha: Generate fence op Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 13/14] target-aarch64: Generate fences for aarch64 Pranith Kumar
2016-07-14 20:20 ` [Qemu-devel] [PATCH v4 14/14] target-i386: Generate fences for x86 Pranith Kumar
2016-07-23 16:08 ` [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation Pranith Kumar
2016-07-23 17:34   ` Paolo Bonzini
2016-07-23 18:00     ` Pranith Kumar
2016-08-08 14:05 ` Pranith Kumar
2016-09-07 17:33 ` Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.