From patchwork Tue May 24 20:06:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emilio Cota X-Patchwork-Id: 9134235 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6BF576075E for ; Tue, 24 May 2016 20:07:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60E3A28233 for ; Tue, 24 May 2016 20:07:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5216F24B5B; Tue, 24 May 2016 20:07:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0304524B5B for ; Tue, 24 May 2016 20:07:09 +0000 (UTC) Received: from localhost ([::1]:55176 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5Ibc-0004c4-4D for patchwork-qemu-devel@patchwork.kernel.org; Tue, 24 May 2016 16:07:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37781) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5Ib4-0004Z9-22 for qemu-devel@nongnu.org; Tue, 24 May 2016 16:06:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5Iax-0004eu-FT for qemu-devel@nongnu.org; Tue, 24 May 2016 16:06:32 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:48588) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5Iav-0004co-6T for qemu-devel@nongnu.org; Tue, 24 May 2016 16:06:27 -0400 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.nyi.internal (Postfix) with ESMTP id 62280204F8; Tue, 24 May 2016 16:06:16 -0400 (EDT) Received: from frontend1 ([10.202.2.160]) by compute5.internal (MEProxy); Tue, 24 May 2016 16:06:16 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=braap.org; h=cc :date:from:in-reply-to:message-id:references:subject:to :x-sasl-enc:x-sasl-enc; s=mesmtp; bh=cuQGJLCFVVVFC2FLVuU6QJFxu7Y =; b=gVO9wqvjg5D9PBS2bejX8v3yAocT5YoayIY+mtKkoai59OFljrL6HUSCnpp mJRFc9M7F+3Tobpw01m+siRX8t/ev6qwC0G77becw9lu5oJnJHn4CIMWsqxNZfAb g5Td9pXZAkllfBVtc+6PUdYBKZeCMXZtXxqvP9zAuymIJ1+Y= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-sasl-enc:x-sasl-enc; s=smtpout; bh=cuQG JLCFVVVFC2FLVuU6QJFxu7Y=; b=NExGtfpMiddq3nmczpAl2xYJISxXKmQBloj1 2TovHBA3QqQph8rDtkQtMe+oud1v9L8uIfHH/2G7zvfOKUCeYNAYp9Tw2fllUhGe H9elO6iXb2m63hAHbGfdBfxSRlNh4gT0I4ZuVReVpxevDuQf8tUHD3YmAfqZI6v4 A+oiarY= X-Sasl-enc: RSePBXZMtUYiWSb3jW1QGLEOHb2NPd6KhE2yJi0zo26l 1464120376 Received: from localhost (flamenco.cs.columbia.edu [128.59.20.216]) by mail.messagingengine.com (Postfix) with ESMTPA id 0EE45F29FF; Tue, 24 May 2016 16:06:16 -0400 (EDT) From: "Emilio G. Cota" To: QEMU Developers , MTTCG Devel Date: Tue, 24 May 2016 16:06:13 -0400 Message-Id: <1464120374-8950-3-git-send-email-cota@braap.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1464120374-8950-1-git-send-email-cota@braap.org> References: <1464120374-8950-1-git-send-email-cota@braap.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 66.111.4.26 Subject: [Qemu-devel] [PATCH v2 2/3] atomics: emit an smp_read_barrier_depends() barrier only for Sparc and Thread Sanitizer X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Paolo Bonzini , Sergey Fedorov , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP For correctness, smp_read_barrier_depends() is only required to emit a barrier on Sparc hosts. However, we are currently emitting a consume fence unconditionally. Fix it by keeping the consume fence if we're compiling with Thread Sanitizer, since this might help prevent false warnings. Otherwise, only emit the barrier for Sparc hosts. Note that we still guarantee that smp_read_barrier_depends() is a compiler barrier. Signed-off-by: Emilio G. Cota --- include/qemu/atomic.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index 5bc4d6c..4a4f2fb 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -36,7 +36,14 @@ #define smp_wmb() ({ barrier(); __atomic_thread_fence(__ATOMIC_RELEASE); barrier(); }) #define smp_rmb() ({ barrier(); __atomic_thread_fence(__ATOMIC_ACQUIRE); barrier(); }) +#if defined(__SANITIZE_THREAD__) #define smp_read_barrier_depends() ({ barrier(); __atomic_thread_fence(__ATOMIC_CONSUME); barrier(); }) +#elsif defined(__alpha__) +#define smp_read_barrier_depends() asm volatile("mb":::"memory") +#else +#define smp_read_barrier_depends() barrier() +#endif + /* Weak atomic operations prevent the compiler moving other * loads/stores past the atomic operation load/store. However there is