Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3841608rdg; Wed, 18 Oct 2023 07:35:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGB9arjzni+a4TDnlhjqRjlzezoge+gZtYVmr7PENnHwqxVUW4UVNOeCiBBKZjgjV15Z741 X-Received: by 2002:a05:6a00:2eaa:b0:68f:b5cb:ced0 with SMTP id fd42-20020a056a002eaa00b0068fb5cbced0mr5739940pfb.34.1697639706837; Wed, 18 Oct 2023 07:35:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697639706; cv=none; d=google.com; s=arc-20160816; b=N3kuIX3GDskE+T2SGpQxw2t7xbxJ0o/5akY5Pbsha1gXkEhhXBdNwyACiGE4u/wyBB 1XdRerX4vhZxjN91elV007wz7xj9XW8aJHs5QwnvVqRUNZ84FrO4saHWmaiZFpXYLPiS BzxyqUdxYO08syiPJjArU0GzWk3j5qcbvpoDPWpZLbUqiZSqRx7unWSTD/tX3U+yUdio 1ikpCUPgbQcrD9sCNvyhuyt3O5ESmKQmeGq7DX/ClqZQeLV2+3SWtrSqxD4FXTVAnHPX J0/4qVEYwO03kGFVdX522kZNsWsD1GkkyuTBU3eVOdbGijyVasQ3P+8HVKlYg2fkQI2+ tI5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=VrViw8EcPVAfO6aNLjjt2oTpTxgN2CS759uONYxwgI4=; fh=HAisOIFs4Sj17t+Z5btOrVBeOG6TUSSZlfDUlRJnoFY=; b=gWnXMrERujPKQuDpwDAicgEncsj9Wms0ApGaG3oTFbhXdGrRl0d50h0tk8lmpE+U83 U+efmZpzr2PXQgvZYCv/HKu6szWhImKkiq8LSbYxBIeMODsCs7dUA4Ed3JBvTcO+EuU4 pa+AITBv1ThXXNSZATeKXeOrxIM664qMwDIqOvlHtUC8jNVxfnz4lEMFXWGW+pRBn570 KtolZjSjqWLDxoeTAoZM0fAdIQyq0DDBWMuhZiloAsjuQ1VsCOJbtNUzNG89Ig6iM82O KcwaHczXI5cQpQ9+Z4jE+/zJtjDOTAEaFJEV4LDhZPHMysPMudE6lGGEo/9h6VKigK+y WSXw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b="KILze/ne"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id e66-20020a636945000000b005b33c54df1esi2208795pgc.51.2023.10.18.07.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 07:35:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; dkim=pass header.i=@joelfernandes.org header.s=google header.b="KILze/ne"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 8C1EA8023703; Wed, 18 Oct 2023 07:35:04 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345786AbjJROey (ORCPT + 99 others); Wed, 18 Oct 2023 10:34:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346187AbjJROeY (ORCPT ); Wed, 18 Oct 2023 10:34:24 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D46BE4683 for ; Wed, 18 Oct 2023 07:32:36 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-2c50fbc218bso67071821fa.3 for ; Wed, 18 Oct 2023 07:32:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joelfernandes.org; s=google; t=1697639555; x=1698244355; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=VrViw8EcPVAfO6aNLjjt2oTpTxgN2CS759uONYxwgI4=; b=KILze/neQr3IJu0UagVJuF2dBE/rPc2lx+55r0iNexoLXEG7M4UhYG4TQjR54G6nz/ Vi2aYHdNS8pVDaXUJ+vWVHNP5Yeo0dQ3x+F19S4CJYX7hJMlxI8hM3V92D9oeDU5qvyz HecSl73k+/cdXEnq2ppsmQKAiBsENabDoIXBs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697639555; x=1698244355; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VrViw8EcPVAfO6aNLjjt2oTpTxgN2CS759uONYxwgI4=; b=pL/SSQoMxCk86jN2aWBIfpDGgW5Xo9LBVjNZZIEj5KvUq/nMhJMds62e7Nx7BccwlL VDyVWWFW3wgfIvGAcj8wv6j/LiIw8KbzHbUdOnlA4MH8TYWD0DB6TG15eZ7RwPjKF/do nnM1rVPJ80vfkClNun90MMv6ES2C65eUNjyM/FJSOFf6eY9VRPzy/adoaZkPSJTARdBd e6e8UJHBKRYzigOrQGhJ9rA6LKHizvV41l0WUzujXhh17flIiJ62WAStlF1yUw/kIqZO Tqhaay8ek4pQsqUyOiKCnDNJPYcUeZy3eIzp5KzFMojttvzlA9E8yT+wcbHRAb/tByhY IG6Q== X-Gm-Message-State: AOJu0YxX8DFFptEsLYy11Wk/F3ZvRjhyqfRfGHPqzrrGrVrTHKwqaihl Hthizr8aZVpSjKdETKnEW7UgJMlgNJFjFTMld6tiAQ== X-Received: by 2002:a05:651c:504:b0:2c5:cf0:74e9 with SMTP id o4-20020a05651c050400b002c50cf074e9mr4295422ljp.14.1697639554674; Wed, 18 Oct 2023 07:32:34 -0700 (PDT) MIME-Version: 1.0 References: <20231016173004.14148-1-urezki@gmail.com> In-Reply-To: From: Joel Fernandes Date: Wed, 18 Oct 2023 10:32:22 -0400 Message-ID: Subject: Re: [PATCH v3 1/1] rcu: Reduce synchronize_rcu() waiting time To: Uladzislau Rezki Cc: "Paul E . McKenney" , RCU , Neeraj upadhyay , Boqun Feng , LKML , Oleksiy Avramchenko , Frederic Weisbecker Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Wed, 18 Oct 2023 07:35:04 -0700 (PDT) On Tue, Oct 17, 2023 at 10:06=E2=80=AFAM Uladzislau Rezki wrote: [...] > > > + > > > + /* Finally. */ > > > + complete(&rs->completion); > > > +} > > > + > > > +static void rcu_sr_normal_gp_cleanup_work(struct work_struct *work) > > > +{ > > > + struct llist_node *done, *rcu, *next; > > > + > > > + done =3D llist_del_all(&sr.done); > > > + if (!done) > > > + return; > > > + > > > + llist_for_each_safe(rcu, next, done) > > > + rcu_sr_normal_complete(rcu); > > > +} > > [...] > > > +static void rcu_sr_normal_add_req(struct rcu_synchronize *rs) > > > +{ > > > + atomic_inc(&sr.active); > > > + if (llist_add((struct llist_node *) &rs->head, &sr.curr)) > > > + /* Set the tail. Only first and one user can do that.= */ > > > + WRITE_ONCE(sr.curr_tail, (struct llist_node *) &rs->h= ead); > > > + atomic_dec(&sr.active); > > > > Here there is no memory ordering provided by the atomic ops. Is that re= ally Ok? > > > This needs to be reworked since there is no ordering guaranteed. I think > there is a version of "atomic_inc_something" that guarantees it? Yeah there is atomic_fetch_{inc,dec}{_acquire,_release}() Or: atomic_inc(&sr.active); smp_mb__after_atomic(); smp_mb__before_atomic(); atomic_dec(&sr.active); ? That's probably better because we don't need ordering before the inc or after the dec, AFAICS. I am actually a bit surprised there is no atomic_inc_acquire() yet. :-) Thanks.