From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47817) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNn7o-0008Rv-Vd for qemu-devel@nongnu.org; Thu, 14 Jul 2016 16:20:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bNn7l-0001Yd-MT for qemu-devel@nongnu.org; Thu, 14 Jul 2016 16:20:48 -0400 Received: from mail-yw0-x22c.google.com ([2607:f8b0:4002:c05::22c]:33088) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bNn7l-0001YQ-Hl for qemu-devel@nongnu.org; Thu, 14 Jul 2016 16:20:45 -0400 Received: by mail-yw0-x22c.google.com with SMTP id v186so21897260ywd.0 for ; Thu, 14 Jul 2016 13:20:45 -0700 (PDT) From: Pranith Kumar Date: Thu, 14 Jul 2016 16:20:12 -0400 Message-Id: <20160714202026.9727-1-bobby.prani@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [PATCH v4 00/14] tcg: Add support for fence generation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, alex.bennee@linaro.org, serge.fdrv@gmail.com, rth@twiddle.net, pbonzini@redhat.com, peter.maydell@linaro.org 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