From patchwork Mon Oct 24 13:46:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 685846 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3t2dCd0fq0z9sfH for ; Tue, 25 Oct 2016 00:58:05 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=zSCvkWaa; dkim-atps=neutral Received: from localhost ([::1]:46910 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1byflJ-0004Ej-Sd for incoming@patchwork.ozlabs.org; Mon, 24 Oct 2016 09:58:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46451) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1byfbU-0003xh-28 for qemu-devel@nongnu.org; Mon, 24 Oct 2016 09:47:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1byfbR-0006Hc-0t for qemu-devel@nongnu.org; Mon, 24 Oct 2016 09:47:52 -0400 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:33108) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1byfbQ-0006H7-R5 for qemu-devel@nongnu.org; Mon, 24 Oct 2016 09:47:48 -0400 Received: by mail-wm0-x241.google.com with SMTP id d128so9934781wmf.0 for ; Mon, 24 Oct 2016 06:47:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=4999B/fRVFw/GhSDOh1nQAu3uTbOFQI/jQP1NDwj9yk=; b=zSCvkWaa1W9iCh5wBCKzcRQVWHIfnrKBDNtj8n6UhV2eMeszdJ6y7qfSBTgXsF7o4q YLVfykpat7FMEHlFR/ixuJp95Eim6SPWL9h5mWx04J4DOa3Ysqw3fb6vDTT6Hzl/F90m xPHqaX04/TRVGsd11ILhQ71gRbzDecRcrKHkg+tOoHm56jaOK0ynwtbCAhNxbUCjWIpi XA2B/9DKPY0hxIBFcQdHoGOfsODdW6IeJlYvMijEZn3J0FY0W5SHLQF8aUz373Hb0fLa KlBUDMg9t4mo2z0wtBamJdBLBDokt+hHxlbqRSUVjhUJBlGZOUkayFxld9J7donjonDz yFbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=4999B/fRVFw/GhSDOh1nQAu3uTbOFQI/jQP1NDwj9yk=; b=M2DKF+LJmg0BAGuTTwNocC/SPoQftnolJFihyfgr8RkBUOzbFEoX4lTEKOMmw52Uvr EedFqcI7DhsxSmODt/MeY3O6ZCdyKcl8WvewoJEtS6rgotjAqODASB6i9CJdUACDIm8J ufLdx52WQGU1cibmU83OXKmN42CdZSvBoPc3qziuN66HcTgzubMSGoDpuL5TkjPneu5T lujcBNoV2j2Dq44j/z80urPqwzgBMNd5bSZBoSw5s9jPyXrcClNnQqxQ1aaZnblQMALg VuQt9nfKWNIFV3xquOhbQSXGaGZtdTTXK7uCBp2vqi09P1QfrZK+tIqfP4U3MNwtvLNK F22Q== X-Gm-Message-State: ABUngvdEKcoJa/zrFacSYbVpx06mxaClC2sp3ya5qMsjd0AVmpN7FfPfYUuZ/2l7EWDtgw== X-Received: by 10.194.153.199 with SMTP id vi7mr11879938wjb.137.1477316867442; Mon, 24 Oct 2016 06:47:47 -0700 (PDT) Received: from 640k.lan (dynamic-adsl-78-12-246-178.clienti.tiscali.it. [78.12.246.178]) by smtp.gmail.com with ESMTPSA id us3sm19434867wjb.32.2016.10.24.06.47.46 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Oct 2016 06:47:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Mon, 24 Oct 2016 15:46:53 +0200 Message-Id: <1477316855-42218-9-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1477316855-42218-1-git-send-email-pbonzini@redhat.com> References: <1477316855-42218-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 08/50] rcu: simplify memory barriers 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: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Thanks to the acquire semantics of qemu_event_reset and qemu_event_wait, some memory barriers can be removed. Signed-off-by: Paolo Bonzini --- util/rcu.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/util/rcu.c b/util/rcu.c index bceb3e4..9adc5e4 100644 --- a/util/rcu.c +++ b/util/rcu.c @@ -82,14 +82,16 @@ static void wait_for_readers(void) /* Instead of using atomic_mb_set for index->waiting, and * atomic_mb_read for index->ctr, memory barriers are placed * manually since writes to different threads are independent. - * atomic_mb_set has a smp_wmb before... + * qemu_event_reset has acquire semantics, so no memory barrier + * is needed here. */ - smp_wmb(); QLIST_FOREACH(index, ®istry, node) { atomic_set(&index->waiting, true); } - /* ... and a smp_mb after. */ + /* Here, order the stores to index->waiting before the + * loads of index->ctr. + */ smp_mb(); QLIST_FOREACH_SAFE(index, ®istry, node, tmp) { @@ -104,9 +106,6 @@ static void wait_for_readers(void) } } - /* atomic_mb_read has smp_rmb after. */ - smp_rmb(); - if (QLIST_EMPTY(®istry)) { break; }