Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp2172248rdb; Thu, 7 Dec 2023 23:30:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IHFSN97O5KDbzU1GoCsTw7kjVn1NRulPIlO2j/e6rQCVROXKaOynGTzSm12jbSPdhtXjDCQ X-Received: by 2002:a17:902:b207:b0:1d0:a2b2:6b0d with SMTP id t7-20020a170902b20700b001d0a2b26b0dmr3201855plr.4.1702020618462; Thu, 07 Dec 2023 23:30:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702020618; cv=none; d=google.com; s=arc-20160816; b=fYjo58kl8nez5uK2dFXBnGcyczJt7R600WAxBfjrHiRkISrEN2HBLghLQbuAMBpEYx BEQg6cMG9JPbnUnFhqYWhCyXuaQ7+h9YTW21RCxqvaOai6krOY1C04bDq9cOrzAUZYDl Sl/YyQ5OB9fZDyPgqS7tLKdFfG7jGGnIuoIdWvGhW732M6FBpnh/s6FUnDxFRzJNbiUL /Ylmw/v7bI1aj1mo14rinAQEq2YzIKMR+YIxIomXn3jmaMldUKYseBklCT/9ujQ823UH w/qKgUtV+UO1Na0nKYhwLAlazOGN3q43rTZsAh/tKVO5t/KclR4HwnJoYqRsuq+QTEI7 SMOg== 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=jrV5ggink9t0wvGsS5EUrsFBN636nAxmFkZLs8Lkbqw=; fh=Y/j3Xy31fqx3qjVbSbUd1KzYacOvx5EVPbyqrkdLByU=; b=JXgvXP9qT+o0X6xEvt3SCC+yM5D/zzMjXIbKOQ1f9aM3EbmGpIgQfRpgt7y8G9WrNV zFpjufuc7S6TzWjdNajGIYYhAKK7ajd2cEHTBJGSU++A4/idIq/qsKOByocVsAJXd5JT ewdgl5xWZL1yRKIvcA/2GWy3pXcOgpjvqhXzn9/1HdVzJc76ETQgNt5shXHufUZvExS5 LrJzPVGh3OjpraFkhF3H1gHUbpo/1j+77p9HJ+JKVMzdiSqU0mL+d/gwTupAZ66TyH5s BcPcOnSvm+GfbRPXe/N9IuWNPRtUZoM8+vqXdkYgbM3pwJH4mHcHa1wwtlaqbHo+nM6V rPuQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=mwCRo1kV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id e8-20020a170902744800b001d086133cdbsi1140000plt.491.2023.12.07.23.30.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Dec 2023 23:30:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=mwCRo1kV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 7F5D6807C740; Thu, 7 Dec 2023 23:30:09 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233424AbjLHH33 (ORCPT + 99 others); Fri, 8 Dec 2023 02:29:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45512 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232216AbjLHH32 (ORCPT ); Fri, 8 Dec 2023 02:29:28 -0500 Received: from mail-vk1-xa35.google.com (mail-vk1-xa35.google.com [IPv6:2607:f8b0:4864:20::a35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB4CA171F for ; Thu, 7 Dec 2023 23:29:34 -0800 (PST) Received: by mail-vk1-xa35.google.com with SMTP id 71dfb90a1353d-4affeacaff9so452529e0c.3 for ; Thu, 07 Dec 2023 23:29:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702020574; x=1702625374; 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=jrV5ggink9t0wvGsS5EUrsFBN636nAxmFkZLs8Lkbqw=; b=mwCRo1kVGpUiTou2WkjYI25NTjJaOu259JK+Wvxyr2LzgcwLjtOxMN969TefWOi5Tq O0sIVVc5oo5aLjcq6OBjvNiyeEAxislsII93DaZGO73OUn0lkQhlhlJijjfR3x1mw7ts 3Hf8y34o13NJxAxDO0I9WdfhAyDiqDTeiD5DeAwwW7hfBtIuMTaogW3kBfkPRaV4Sngx k/DqGbv+iEYwoAah4dpZzQvt07tqU2k2Uv+n2RCaySZqKLU5b/KE8bETuPGetC0/7Arl E4HH0xyhyb4Vlx4EPtzG80LmJ4+aXGa0U4/uZz90JsTXjVz2wt6Bs0VyZQVfqOEml0qk H+wQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702020574; x=1702625374; 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=jrV5ggink9t0wvGsS5EUrsFBN636nAxmFkZLs8Lkbqw=; b=Y87QgLpzXaDnw0nfLg9MOleDK6bnHZ3ItpC1vBfSVFXVarirE1s9WujfD3zhNwzQ4v E+UaNVVC3qmYfbdsuz5G99Nf2dBMERRy9DIr+fjL8Y5uY8D2b0JKp64AzKIfRDhIJglY upo2oXcoyIHwzJ54VQdx56SfZTvNwEDSiOiRsRAZ63xGROkkjvX8XneroMOAnprWyjtx c+TiN1IfQ5CqRdQfk/Af6DzBdg8LutgzS3vp9IZW6GN724rGXI9mKTTInNn4mFE71wQ3 vACcHXCvu8EetUxhudXbcx70g0ykJ7SqtxifpVx516ScgNeNmrccLxcT1gT5qLDVStzq DP6Q== X-Gm-Message-State: AOJu0YyHmqvh8UN5ztjq+n8lzct46xi6/HKfl1ba6jAp84SS3NSLxNM2 leTl9aDfPWbgPVHfT78JtoRsjmq+G9SxIwvPWiPVcQ== X-Received: by 2002:a1f:c8c1:0:b0:4b2:c554:e9b0 with SMTP id y184-20020a1fc8c1000000b004b2c554e9b0mr3891594vkf.18.1702020573823; Thu, 07 Dec 2023 23:29:33 -0800 (PST) MIME-Version: 1.0 References: <20231206-rb-new-condvar-methods-v1-0-33a4cab7fdaa@google.com> <20231206-rb-new-condvar-methods-v1-1-33a4cab7fdaa@google.com> In-Reply-To: From: Alice Ryhl Date: Fri, 8 Dec 2023 08:29:22 +0100 Message-ID: Subject: Re: [PATCH 1/2] rust: sync: add `CondVar::notify_sync` To: Benno Lossin Cc: Miguel Ojeda , Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Peter Zijlstra , Ingo Molnar , Will Deacon , Waiman Long , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.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 (agentk.vger.email [0.0.0.0]); Thu, 07 Dec 2023 23:30:09 -0800 (PST) On Thu, Dec 7, 2023 at 9:22=E2=80=AFPM Benno Lossin wrote: > > On 12/6/23 11:09, Alice Ryhl wrote: > > Wake up another thread synchronously. > > > > This method behaves like `notify_one`, except that it hints to the > > scheduler that the current thread is about to go to sleep, so it should > > schedule the target thread on the same CPU. > > > > This is used by Rust Binder as a performance optimization. When sending > > a transaction to a different process, we usually know which thread will > > handle it, so we can schedule that thread for execution next on this > > CPU for better cache locality. > > > > Signed-off-by: Alice Ryhl > > --- > > rust/kernel/sync/condvar.rs | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/rust/kernel/sync/condvar.rs b/rust/kernel/sync/condvar.rs > > index b679b6f6dbeb..9861c6749ad0 100644 > > --- a/rust/kernel/sync/condvar.rs > > +++ b/rust/kernel/sync/condvar.rs > > @@ -155,6 +155,12 @@ fn notify(&self, count: i32, flags: u32) { > > }; > > } > > > > + /// Calls the kernel function to notify one thread synchronously. > > + pub fn notify_sync(&self) { > > + // SAFETY: `wait_list` points to valid memory. > > + unsafe { bindings::__wake_up_sync(self.wait_list.get(), bindin= gs::TASK_NORMAL) }; > > I took a look at the C function (i.e. __wake_up_common) and there I > found this: > > lockdep_assert_held(&wq_head->lock); > > So I think this function requires that the lock is held, how are you > ensuring this? No, we don't need to hold a lock. The call stack is: 1. __wake_up_sync 2. __wake_up_sync_key 3. __wake_up_common_lock 4. __wake_up_common And __wake_up_common_lock will lock wq_head->lock before calling __wake_up_common. Alice