From nobody Wed Nov 5 18:40:05 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1535995380033933.823286415348; Mon, 3 Sep 2018 10:23:00 -0700 (PDT) Received: from localhost ([::1]:46227 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fwsZ0-0008Rf-TM for importer@patchew.org; Mon, 03 Sep 2018 13:22:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34245) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fwsUp-00059P-GK for qemu-devel@nongnu.org; Mon, 03 Sep 2018 13:18:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fwsUm-000775-OI for qemu-devel@nongnu.org; Mon, 03 Sep 2018 13:18:39 -0400 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:40535) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fwsUm-00075g-Hi for qemu-devel@nongnu.org; Mon, 03 Sep 2018 13:18:36 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 8FE1721BD5; Mon, 3 Sep 2018 13:18:34 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 03 Sep 2018 13:18:34 -0400 Received: from localhost (flamenco.cs.columbia.edu [128.59.20.216]) by mail.messagingengine.com (Postfix) with ESMTPA id D41D41029D; Mon, 3 Sep 2018 13:18:33 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=braap.org; h=cc :date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=mesmtp; bh=yCeriMbQNkEblo rKpejcnT2SlK7cV+JvOBK6/URqSJ8=; b=QKavqaVjnqv+f7vUUp9+AzcyHANS4e ETZhUCql9ykmucPY40peXqcRp6ofOmxa1+9Zf6ZZEl3s+nvLy0PxHH5rs2/bPZta 1WS/V/jiVMdwIZbMrcNUDHfSrkxSCHLPHQXKX45zoThDZhSnBVLVOkFJzh5P/AsI hdFRmOqb94S+A= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm3; bh=yCeriMbQNkEblorKpejcnT2SlK7cV+JvOBK6/URqSJ8=; b=B92fJqA/ xlonI9KCbFg2Jg1S9lruCmVwnBGai5ffJZShVai+d0OGf8+5HnkjNd/97wrdrgCd VYR0x7+xHMlsxDbnVspfKMsIuN6IOqlTWWU7qyjRL5P2Nki+qN04dlocTgTF1efZ Oeheb3f4dvIif6IjaD9c9aaC++USc606EYLvxIc9YCiCtvUmXaaY0gSF31/Xtl41 zTVif1c0mfBZNId5YJIEHxprokoqMnsipkRHhKz9jVacvBQGHwDhzHkVq4Z4UoXt 9ZaaNllq27fozl+LPM0Qh8POCnT9+/0OrW3mQVLqnRL210Wf2PQ+PICW5aKtuubx i35mZYH1wbQJNQ== X-ME-Proxy: X-ME-Sender: From: "Emilio G. Cota" To: qemu-devel@nongnu.org Date: Mon, 3 Sep 2018 13:18:26 -0400 Message-Id: <20180903171831.15446-2-cota@braap.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180903171831.15446-1-cota@braap.org> References: <20180903171831.15446-1-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.25 Subject: [Qemu-devel] [PATCH 1/6] qsp: drop atomics when using the seqlock 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 , Richard Henderson , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Eduardo Habkost , Peter Crosthwaite Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Using atomics here is a mistake since they're not guaranteed to compile. Signed-off-by: Emilio G. Cota --- util/qsp.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/util/qsp.c b/util/qsp.c index b0c2575d10..a1ee03b84b 100644 --- a/util/qsp.c +++ b/util/qsp.c @@ -351,6 +351,7 @@ static QSPEntry *qsp_entry_get(const void *obj, const c= har *file, int line, static void qsp_entry_aggregate(QSPEntry *to, const QSPEntry *from) { #ifdef CONFIG_ATOMIC64 + /* use __nocheck because sizeof(void *) might be < sizeof(u64) */ to->ns +=3D atomic_read__nocheck(&from->ns); to->n_acqs +=3D atomic_read__nocheck(&from->n_acqs); #else @@ -359,8 +360,8 @@ static void qsp_entry_aggregate(QSPEntry *to, const QSP= Entry *from) =20 do { version =3D seqlock_read_begin(&from->sequence); - ns =3D atomic_read__nocheck(&from->ns); - n_acqs =3D atomic_read__nocheck(&from->n_acqs); + ns =3D from->ns; + n_acqs =3D from->n_acqs; } while (seqlock_read_retry(&from->sequence, version)); =20 to->ns +=3D ns; @@ -375,14 +376,17 @@ static void qsp_entry_aggregate(QSPEntry *to, const Q= SPEntry *from) */ static inline void do_qsp_entry_record(QSPEntry *e, int64_t delta, bool ac= q) { -#ifndef CONFIG_ATOMIC64 - seqlock_write_begin(&e->sequence); -#endif +#ifdef CONFIG_ATOMIC64 atomic_set__nocheck(&e->ns, e->ns + delta); if (acq) { atomic_set__nocheck(&e->n_acqs, e->n_acqs + 1); } -#ifndef CONFIG_ATOMIC64 +#else + seqlock_write_begin(&e->sequence); + e->ns +=3D delta; + if (acq) { + e->n_acqs++; + } seqlock_write_end(&e->sequence); #endif } --=20 2.17.1