From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3FFE4C02181 for ; Fri, 24 Jan 2025 12:56:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEEA06B00A4; Fri, 24 Jan 2025 07:56:40 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A9E24280053; Fri, 24 Jan 2025 07:56:40 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 967646B012A; Fri, 24 Jan 2025 07:56:40 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 774CD6B00A4 for ; Fri, 24 Jan 2025 07:56:40 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 2E1ED81295 for ; Fri, 24 Jan 2025 12:56:40 +0000 (UTC) X-FDA: 83042344560.26.3D80538 Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) by imf11.hostedemail.com (Postfix) with ESMTP id 2406E4000B for ; Fri, 24 Jan 2025 12:56:37 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ywfnzkum; spf=pass (imf11.hostedemail.com: domain of urezki@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=urezki@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737723398; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ffiUIbby5SM+vRlIpszlMWepbHRFMbgQXIPuWvddjHY=; b=uqkyWsMxdqwge+gQVARpLk3Yi5oLd4vm2qMVPvPGnWgpg8QjlfYzlpvUqKcJ9w9l9g4XQY Ts1zyBMwjrZafLiKaZgdDPzjJ6viUwjwCVK+bTRvGSyzrEE8RaVWPEPXEZIT2lpJL9yt5G qV+BPi7AuAsJxaf/+0kllJx2LjH26Nk= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ywfnzkum; spf=pass (imf11.hostedemail.com: domain of urezki@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=urezki@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737723398; a=rsa-sha256; cv=none; b=ndV+10WYEjtzKFRpL7Z6XO7NsuV/fgT5lCeJU5Qa8pVCUayT3tmORq8n05cyp0O7IB81UV cZ5iM5rNF2nYqpe3Z6Kjtsbi1Gu+IPLPq3yRJjHBAUWMy6KtCuJa/6LdtnRxIkJcPINuGG bhVGpH+RH8Utu6oMzFXl7sVRHSWiSzI= Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-30761be8fcfso21413081fa.0 for ; Fri, 24 Jan 2025 04:56:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737723396; x=1738328196; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=ffiUIbby5SM+vRlIpszlMWepbHRFMbgQXIPuWvddjHY=; b=YwfnzkumRxhkOp6yCIWuzdoreBf5r9wyxf169iId+WKDXFibpIIX0855QaPX00L5Be 8tOfyZ03d5ZiYhk0Njoe4APN/XDeBsdoy6dGjYp2OqNxuYqQtBdtdQx+7VGy95vwNQoo bbaBL0vwW7TZtUnSgG0zya61IizkJVWv6jemDtUhcII9TgO1lq4q5QualEaEYK5Ni5hw FmKxOvzNqZ6HDVNeV43TYvnvnuZPMO53FaN8OLAFzHXGFbS12LxjEevWoVcSZMLssbPk yNtTi8skvsx4TpszgA9Sh5aoDYqXUNLQcAN2/Bm+M56n91XOfeyHPzw8jEsoxe+9VVl8 QGlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737723396; x=1738328196; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ffiUIbby5SM+vRlIpszlMWepbHRFMbgQXIPuWvddjHY=; b=HIdy9i9cFzCVwxEP3A9PKZgHHVgQHz0oC+WbwKpU2yJdKDrE7t4TuaXvWeM23CDiRY JA9NaXVIaWKKkH5bgRdJSDVE8Eg0u6tNSKqkNSIAQjTqwo1SUA7gfKcOtQZsPw0HFNuk gAEHiXBAwdG74vK3J7eWhEnoXTRtmTx5j7DMKnNEeCIaCNlBkzC4qJDhuQG1XRTSWhM4 Oz5W225mUfxKyWvIQzkObrwCCHssHtlklthIsepDjdqf8oepGITtNnyUl/O6gpXKYytm RaGMzPk0dHEm1Gh9hoO+fYV4O4Lt45Q3PtdEoawUkpjVI/XFOKLI9v6G/5jqsSS+CQbf GmOA== X-Forwarded-Encrypted: i=1; AJvYcCWL1F0fFS6AtSJ5/rWsIrL/KviRfrMKA5drF6gkB5DHMdzdwjpn0+hYXvatQWJk+B80hOiNSRAQjQ==@kvack.org X-Gm-Message-State: AOJu0YzTWDe4ztjGb0fUUiEDl0WB0hnZ7xMuHKMbj5zznqRChUdSB43M MTGMItWxRXY/6W8B6Q2spTGX79l7vZTbbHqRfrKHDKCq0yci9O4Z X-Gm-Gg: ASbGncs+2I6DGl/8jKHDvoY3LJOwunG+fwJlfXxrJlzoivPZ2LBg+5aRiuZJr2vjLgH EbEnj9soQiN544jBkO+yT1TvXZwSiUPZDPvTH9uNvmnrC0Rs0hkweyH60BZaVXs2Y1agMSjrf89 GRmhzPq2dzh0dXx0SzpWIWbIBbyxLoh0ooWX5g3IOW3IL00NBlejJIyM1e/2Cr8exy7mpRHbfLq KY7QM6EvTmXi7vUb7ZD1xoEGK7UNYlrjxysvwmUV2hr9+Z52pcu5t1HHdd94h4jnUuptCDmexlt HounxwWQCHaI1dsaiTmcUioFcqgIXGUHFXY= X-Google-Smtp-Source: AGHT+IGg3T9NUCkzvWLFDsluO50pZAd6aryGE3Fy33x8NtfqXUFatNTFFo8JZTz95JS7+Y9lLJh8pg== X-Received: by 2002:a05:651c:1141:b0:300:1f2c:e3d1 with SMTP id 38308e7fff4ca-3072cb66741mr123966891fa.23.1737723395985; Fri, 24 Jan 2025 04:56:35 -0800 (PST) Received: from pc636 (host-217-213-93-172.mobileonline.telia.com. [217.213.93.172]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-3076bc18cdcsm3620871fa.83.2025.01.24.04.56.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 04:56:35 -0800 (PST) From: Uladzislau Rezki X-Google-Original-From: Uladzislau Rezki Date: Fri, 24 Jan 2025 13:56:32 +0100 To: Vlastimil Babka Cc: Christoph Lameter , David Rientjes , "Paul E. McKenney" , Joel Fernandes , Josh Triplett , Boqun Feng , Uladzislau Rezki , Andrew Morton , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , Zqiang , rcu@vger.kernel.org Subject: Re: [PATCH RFC 1/4] slab, rcu: move TINY_RCU variant of kvfree_rcu() to SLAB Message-ID: References: <20250123-slub-tiny-kfree_rcu-v1-0-0e386ef1541a@suse.cz> <20250123-slub-tiny-kfree_rcu-v1-1-0e386ef1541a@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250123-slub-tiny-kfree_rcu-v1-1-0e386ef1541a@suse.cz> X-Rspamd-Queue-Id: 2406E4000B X-Stat-Signature: rbjg4srpt9naqjxi7gzdcebegtroi5q3 X-Rspamd-Server: rspam08 X-Rspam-User: X-HE-Tag: 1737723397-598689 X-HE-Meta: U2FsdGVkX18YAgmYv8NdgqYjWiwwwH8ItmWRg5EpU3z3o1+ZvGgdFSJ9WvNpnNBEUaNPvf+uv2TpfDMxUnibaAMOqwolutvpF72K2GDlCAax9BsimwdKOOT5Rz1RML9gps+12cF4vhUI4jK9YevR4kHwI/QxrVPEFatO4Zt7wtb0priiwl5cBKNOHposLQyQ0Er5TV78t6f1bo6qlAcblaWOW6j0l2IvTcjSGHAZqd56Bx8FCCs7uNH38LVXPOWv9rJsrG08jRnJbSlCK1fQfBPWzLELcEsurEUqG65G098u63+1Zw/MQTBXhk7yaOY04fXUNQszA6A61sYFHdG00BgviNj8g6KtiTeHwl5xVXLL4IBMQvtp6v15lrQXsWCr90fHBgxW82bXJn1hM+OZ94w886nYD8wmVKekTQXO6xoGFe31UFh3Smfs1a/iIXKyp1uPHHTQELyfG63Er02AJkcPnoOYExhbhLsvjjXx1b+yPDJUbDhd1q1g1ZYH6apFpiTKjKTgTbayxH+Rlls6QQDWAl37lh46WjvbZrPv7jwdxkParpa7wtjnFE1+aoL8GvS6rRsu/N4KQKuPn3AZd0nU8X4CqcsDMdUNJBPZ/MpdYGiC65zGNumbBg/Tk73032mxvMh1y11qhXF5k1MryT0iGDIkUcNj3SowScLwqAbqRopFo0iiI9jcnhLRTsEbflKtXgq5XIArgoj2/rmNAt98qrt82mwP1o/fmY/N7npmhuBpLYELDu8m5wqyUghgr3RPMZGeaQfW8PiruYGBI8xufWgIxCeJ7D0PMKM2ex9ID1GWFB1o9w37Q7ZOFuWyCRxR/4EZoqF3x/oksTRtXu4/By5dCbqDEkbDtAPL5TDhOLRH+T3+lBzJhRyvY3217BqieRokVeyHiP5kRDPcSYdyc1cQ1xGH2IjIWIvMwQWAJ62aobhTvrwp1P2ji7PqssRCbv3jQcqb4Fi0iXe g1JJs/JU u32PQUqzdluhaLOMey1nAl+f8DTHqPEJUNAVnigwUI7HxuAJmQHhz//7Kk3H+6pXD8TCo/CxnoAlkcT3HLSPaQAileO0T/8IH5oWGDII03qO5Yy4ngW34hyu+ckamTwkPOYb1k+2hxuPD9nX+bzBXrkVb8xGYoIQA25GKIcAwoNnPXI7zC+2tIuXTFKAPk/v47PLUPa1y4UX469TlRJ7rLU3Ve/ZGW9BdbhwwtiHtW63BlSwpYXaXsCF1xtSfLRSuZmhSUHZDZnJV2MfxKBl2wzXbpjAX1D3M46goWIsmKYdN9Lxbc95PJSJZ6htUq1JJZ9YC1Z+pMiLoub0bQYO0/CvDwcc+0+7Og2prBzW5ennotfpMtv1+m65YbQPLlALbIRR+V+y8Fy8Hl7GxngzZbKKORTleYHcIXmugUDnnQjYw6zoVPxC2vZdFF9+KbnJSwXYGaBxkChXov7Lwf/XfO2qggbwH7oE0RWLrCp5Et1fx0mml/vuZeB5CFJUusEL/sPMW1AhZUMVu4pURxgr1snF78axGGQGqyFHdoUF02Jm/1HfUbuuo0vYVAAu0NNCtY82k X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Jan 23, 2025 at 11:37:18AM +0100, Vlastimil Babka wrote: > Following the move of TREE_RCU implementation, let's move also the > TINY_RCU one for consistency and subsequent refactoring. > > For simplicity, remove the separate inline __kvfree_call_rcu() as > TINY_RCU is not meant for high-performance hardware anyway. > > Declare kvfree_call_rcu() in rcupdate.h to avoid header dependency > issues. > > Also move the kvfree_rcu_barrier() declaration to slab.h > > Signed-off-by: Vlastimil Babka > --- > include/linux/rcupdate.h | 5 +++++ > include/linux/rcutiny.h | 36 ------------------------------------ > include/linux/rcutree.h | 3 --- > include/linux/slab.h | 14 ++++++++++++++ > kernel/rcu/tiny.c | 11 ----------- > mm/slab_common.c | 20 ++++++++++++++++++-- > 6 files changed, 37 insertions(+), 52 deletions(-) > > diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h > index 48e5c03df1dd83c246a61d0fcc8aa638adcd7654..3f70d1c8144426f40553c8c589f07097ece8a706 100644 > --- a/include/linux/rcupdate.h > +++ b/include/linux/rcupdate.h > @@ -1082,6 +1082,11 @@ static inline notrace void rcu_read_unlock_sched_notrace(void) > #define kfree_rcu_mightsleep(ptr) kvfree_rcu_arg_1(ptr) > #define kvfree_rcu_mightsleep(ptr) kvfree_rcu_arg_1(ptr) > > +/* > + * In mm/slab_common.c, no suitable header to include here. > + */ > +void kvfree_call_rcu(struct rcu_head *head, void *ptr); > + > #define kvfree_rcu_arg_2(ptr, rhf) \ > do { \ > typeof (ptr) ___p = (ptr); \ > diff --git a/include/linux/rcutiny.h b/include/linux/rcutiny.h > index fe42315f667fc5be7f2ed8eae6ea0c7193030846..f519cd6802286710bdd56588b5ff3d07bcd30b92 100644 > --- a/include/linux/rcutiny.h > +++ b/include/linux/rcutiny.h > @@ -90,41 +90,6 @@ static inline void synchronize_rcu_expedited(void) > synchronize_rcu(); > } > > -/* > - * Add one more declaration of kvfree() here. It is > - * not so straight forward to just include > - * where it is defined due to getting many compile > - * errors caused by that include. > - */ > -extern void kvfree(const void *addr); > - > -static inline void __kvfree_call_rcu(struct rcu_head *head, void *ptr) > -{ > - if (head) { > - call_rcu(head, (rcu_callback_t) ((void *) head - ptr)); > - return; > - } > - > - // kvfree_rcu(one_arg) call. > - might_sleep(); > - synchronize_rcu(); > - kvfree(ptr); > -} > - > -static inline void kvfree_rcu_barrier(void) > -{ > - rcu_barrier(); > -} > - > -#ifdef CONFIG_KASAN_GENERIC > -void kvfree_call_rcu(struct rcu_head *head, void *ptr); > -#else > -static inline void kvfree_call_rcu(struct rcu_head *head, void *ptr) > -{ > - __kvfree_call_rcu(head, ptr); > -} > -#endif > - > void rcu_qs(void); > > static inline void rcu_softirq_qs(void) > @@ -164,7 +129,6 @@ static inline void rcu_end_inkernel_boot(void) { } > static inline bool rcu_inkernel_boot_has_ended(void) { return true; } > static inline bool rcu_is_watching(void) { return true; } > static inline void rcu_momentary_eqs(void) { } > -static inline void kfree_rcu_scheduler_running(void) { } > > /* Avoid RCU read-side critical sections leaking across. */ > static inline void rcu_all_qs(void) { barrier(); } > diff --git a/include/linux/rcutree.h b/include/linux/rcutree.h > index 27d86d9127817e50f8d4dd79e1990d70a02435bb..dbe77b5fe06ec89a393b5444d6c479ced346a37b 100644 > --- a/include/linux/rcutree.h > +++ b/include/linux/rcutree.h > @@ -34,12 +34,9 @@ static inline void rcu_virt_note_context_switch(void) > } > > void synchronize_rcu_expedited(void); > -void kvfree_call_rcu(struct rcu_head *head, void *ptr); > -void kvfree_rcu_barrier(void); > > void rcu_barrier(void); > void rcu_momentary_eqs(void); > -void kfree_rcu_scheduler_running(void); > > struct rcu_gp_oldstate { > unsigned long rgos_norm; > diff --git a/include/linux/slab.h b/include/linux/slab.h > index 09eedaecf1205672bb2e7c8cd57ae8fccebc2737..bcc62e5656c35c6a3f4caf26fb33d7447dead39a 100644 > --- a/include/linux/slab.h > +++ b/include/linux/slab.h > @@ -16,6 +16,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -1082,6 +1083,19 @@ extern void kvfree_sensitive(const void *addr, size_t len); > > unsigned int kmem_cache_size(struct kmem_cache *s); > > +#ifdef CONFIG_TINY_RCU > +static inline void kvfree_rcu_barrier(void) > +{ > + rcu_barrier(); > +} > + > +static inline void kfree_rcu_scheduler_running(void) { } > +#else > +void kvfree_rcu_barrier(void); > + > +void kfree_rcu_scheduler_running(void); > +#endif > + > /** > * kmalloc_size_roundup - Report allocation bucket size for the given size > * > diff --git a/kernel/rcu/tiny.c b/kernel/rcu/tiny.c > index b3b3ce34df6310f7bddba40b2be1bdf6c9f00232..0ec27093d0e14a4b1060ea08932c4ac13f9b0f26 100644 > --- a/kernel/rcu/tiny.c > +++ b/kernel/rcu/tiny.c > @@ -246,17 +246,6 @@ bool poll_state_synchronize_rcu(unsigned long oldstate) > } > EXPORT_SYMBOL_GPL(poll_state_synchronize_rcu); > > -#ifdef CONFIG_KASAN_GENERIC > -void kvfree_call_rcu(struct rcu_head *head, void *ptr) > -{ > - if (head) > - kasan_record_aux_stack_noalloc(ptr); > - > - __kvfree_call_rcu(head, ptr); > -} > -EXPORT_SYMBOL_GPL(kvfree_call_rcu); > -#endif > - > void __init rcu_init(void) > { > open_softirq(RCU_SOFTIRQ, rcu_process_callbacks); > diff --git a/mm/slab_common.c b/mm/slab_common.c > index 69f2d19010dedaa3e5b303ab9803c8cdd40152fa..330cdd8ebc5380090ee784c58e8ca1d1a52b3758 100644 > --- a/mm/slab_common.c > +++ b/mm/slab_common.c > @@ -1861,7 +1861,23 @@ add_ptr_to_bulk_krc_lock(struct kfree_rcu_cpu **krcp, > return true; > } > > -#if !defined(CONFIG_TINY_RCU) > +#ifdef CONFIG_TINY_RCU > + > +void kvfree_call_rcu(struct rcu_head *head, void *ptr) > +{ > + if (head) { > + kasan_record_aux_stack_noalloc(ptr); > + call_rcu(head, (rcu_callback_t) ((void *) head - ptr)); > + return; > + } > + > + // kvfree_rcu(one_arg) call. > + might_sleep(); > + synchronize_rcu(); > + kvfree(ptr); > +} > + > +#else /* !CONFIG_TINY_RCU */ > > static enum hrtimer_restart > schedule_page_work_fn(struct hrtimer *t) > @@ -2071,7 +2087,7 @@ void kvfree_rcu_barrier(void) > } > EXPORT_SYMBOL_GPL(kvfree_rcu_barrier); > > -#endif /* #if !defined(CONFIG_TINY_RCU) */ > +#endif /* !CONFIG_TINY_RCU */ > > static unsigned long > kfree_rcu_shrink_count(struct shrinker *shrink, struct shrink_control *sc) > > -- > 2.48.1 > Reviewed-by: Uladzislau Rezki (Sony) -- Uladzislau Rezki