All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar
@ 2025-03-17  2:52 Kunwu Chan
  2025-03-17 10:23 ` Benno Lossin
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Kunwu Chan @ 2025-03-17  2:52 UTC (permalink / raw)
  To: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
	a.hindborg, aliceryhl, tmgross, dakr, nathan,
	nick.desaulniers+lkml, morbo, justinstitt
  Cc: rust-for-linux, linux-kernel, llvm, Kunwu Chan, Grace Deng

From: Kunwu Chan <kunwu.chan@hotmail.com>

When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
with ARCH=arm64, the following symbols are generated:

$nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
... T <kernel::sync::poll::PollCondVar>::new::{closure#0}::{closure#0}::panic_cold_explicit
... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
... T <kernel::sync::poll::PollCondVar as core::ops::drop::Drop>::drop

This Rust symbol
(<kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop)
is trivial wrappers around the C functions __wake_up_pollfree
and synchronize_rcu. It doesn't make sense to go through a trivial
wrapper for its functions,so mark it inline.

Link: https://github.com/Rust-for-Linux/linux/issues/1145
Suggested-by: Alice Ryhl <aliceryhl@google.com>
Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>

---
Changes in v2:
 - Add link and Suggested-by
 - Reword commit msg
---
 rust/kernel/sync/poll.rs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/rust/kernel/sync/poll.rs b/rust/kernel/sync/poll.rs
index d5f17153b424..a4f92c545fec 100644
--- a/rust/kernel/sync/poll.rs
+++ b/rust/kernel/sync/poll.rs
@@ -107,6 +107,7 @@ fn deref(&self) -> &CondVar {
 
 #[pinned_drop]
 impl PinnedDrop for PollCondVar {
+    #[inline]
     fn drop(self: Pin<&mut Self>) {
         // Clear anything registered using `register_wait`.
         //
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar
  2025-03-17  2:52 [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar Kunwu Chan
@ 2025-03-17 10:23 ` Benno Lossin
  2025-03-20  8:42 ` Alice Ryhl
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Benno Lossin @ 2025-03-17 10:23 UTC (permalink / raw)
  To: Kunwu Chan, ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh,
	a.hindborg, aliceryhl, tmgross, dakr, nathan,
	nick.desaulniers+lkml, morbo, justinstitt
  Cc: rust-for-linux, linux-kernel, llvm, Kunwu Chan, Grace Deng

On Mon Mar 17, 2025 at 3:52 AM CET, Kunwu Chan wrote:
> From: Kunwu Chan <kunwu.chan@hotmail.com>
>
> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
> with ARCH=arm64, the following symbols are generated:
>
> $nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
> ... T <kernel::sync::poll::PollCondVar>::new::{closure#0}::{closure#0}::panic_cold_explicit
> ... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
> ... T <kernel::sync::poll::PollCondVar as core::ops::drop::Drop>::drop
>
> This Rust symbol
> (<kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop)
> is trivial wrappers around the C functions __wake_up_pollfree
> and synchronize_rcu. It doesn't make sense to go through a trivial
> wrapper for its functions,so mark it inline.
>
> Link: https://github.com/Rust-for-Linux/linux/issues/1145
> Suggested-by: Alice Ryhl <aliceryhl@google.com>
> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>

Reviewed-by: Benno Lossin <benno.lossin@proton.me>

---
Cheers,
Benno

> ---
> Changes in v2:
>  - Add link and Suggested-by
>  - Reword commit msg
> ---
>  rust/kernel/sync/poll.rs | 1 +
>  1 file changed, 1 insertion(+)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar
  2025-03-17  2:52 [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar Kunwu Chan
  2025-03-17 10:23 ` Benno Lossin
@ 2025-03-20  8:42 ` Alice Ryhl
  2025-03-23 17:49 ` Boqun Feng
  2025-07-03  8:36 ` [tip: sched/core] rust: sync: Mark PollCondVar::drop() inline tip-bot2 for Kunwu Chan
  3 siblings, 0 replies; 6+ messages in thread
From: Alice Ryhl @ 2025-03-20  8:42 UTC (permalink / raw)
  To: Kunwu Chan
  Cc: ojeda, alex.gaynor, boqun.feng, gary, bjorn3_gh, benno.lossin,
	a.hindborg, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
	Grace Deng

On Mon, Mar 17, 2025 at 10:52:05AM +0800, Kunwu Chan wrote:
> From: Kunwu Chan <kunwu.chan@hotmail.com>
> 
> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
> with ARCH=arm64, the following symbols are generated:
> 
> $nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
> ... T <kernel::sync::poll::PollCondVar>::new::{closure#0}::{closure#0}::panic_cold_explicit
> ... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
> ... T <kernel::sync::poll::PollCondVar as core::ops::drop::Drop>::drop
> 
> This Rust symbol
> (<kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop)
> is trivial wrappers around the C functions __wake_up_pollfree
> and synchronize_rcu. It doesn't make sense to go through a trivial
> wrapper for its functions,so mark it inline.
> 
> Link: https://github.com/Rust-for-Linux/linux/issues/1145
> Suggested-by: Alice Ryhl <aliceryhl@google.com>
> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>

Reviewed-by: Alice Ryhl <aliceryhl@google.com>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar
  2025-03-17  2:52 [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar Kunwu Chan
  2025-03-17 10:23 ` Benno Lossin
  2025-03-20  8:42 ` Alice Ryhl
@ 2025-03-23 17:49 ` Boqun Feng
  2025-03-24  2:13   ` Kunwu Chan
  2025-07-03  8:36 ` [tip: sched/core] rust: sync: Mark PollCondVar::drop() inline tip-bot2 for Kunwu Chan
  3 siblings, 1 reply; 6+ messages in thread
From: Boqun Feng @ 2025-03-23 17:49 UTC (permalink / raw)
  To: Kunwu Chan
  Cc: ojeda, alex.gaynor, gary, bjorn3_gh, benno.lossin, a.hindborg,
	aliceryhl, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
	Grace Deng

On Mon, Mar 17, 2025 at 10:52:05AM +0800, Kunwu Chan wrote:
> From: Kunwu Chan <kunwu.chan@hotmail.com>
> 
> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
> with ARCH=arm64, the following symbols are generated:
> 
> $nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
> ... T <kernel::sync::poll::PollCondVar>::new::{closure#0}::{closure#0}::panic_cold_explicit
> ... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
> ... T <kernel::sync::poll::PollCondVar as core::ops::drop::Drop>::drop
> 
> This Rust symbol
> (<kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop)
> is trivial wrappers around the C functions __wake_up_pollfree
> and synchronize_rcu. It doesn't make sense to go through a trivial
> wrapper for its functions,so mark it inline.
> 
> Link: https://github.com/Rust-for-Linux/linux/issues/1145
> Suggested-by: Alice Ryhl <aliceryhl@google.com>
> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
> 

Queued for future tests and reviews. Thanks!

Regards,
Boqun

> ---
> Changes in v2:
>  - Add link and Suggested-by
>  - Reword commit msg
> ---
>  rust/kernel/sync/poll.rs | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/rust/kernel/sync/poll.rs b/rust/kernel/sync/poll.rs
> index d5f17153b424..a4f92c545fec 100644
> --- a/rust/kernel/sync/poll.rs
> +++ b/rust/kernel/sync/poll.rs
> @@ -107,6 +107,7 @@ fn deref(&self) -> &CondVar {
>  
>  #[pinned_drop]
>  impl PinnedDrop for PollCondVar {
> +    #[inline]
>      fn drop(self: Pin<&mut Self>) {
>          // Clear anything registered using `register_wait`.
>          //
> -- 
> 2.43.0
> 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar
  2025-03-23 17:49 ` Boqun Feng
@ 2025-03-24  2:13   ` Kunwu Chan
  0 siblings, 0 replies; 6+ messages in thread
From: Kunwu Chan @ 2025-03-24  2:13 UTC (permalink / raw)
  To: Boqun Feng
  Cc: ojeda, alex.gaynor, gary, bjorn3_gh, benno.lossin, a.hindborg,
	aliceryhl, tmgross, dakr, nathan, nick.desaulniers+lkml, morbo,
	justinstitt, rust-for-linux, linux-kernel, llvm, Kunwu Chan,
	Grace Deng

On 2025/3/24 01:49, Boqun Feng wrote:
> On Mon, Mar 17, 2025 at 10:52:05AM +0800, Kunwu Chan wrote:
>> From: Kunwu Chan <kunwu.chan@hotmail.com>
>>
>> When build the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
>> with ARCH=arm64, the following symbols are generated:
>>
>> $nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
>> ... T <kernel::sync::poll::PollCondVar>::new::{closure#0}::{closure#0}::panic_cold_explicit
>> ... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
>> ... T <kernel::sync::poll::PollCondVar as core::ops::drop::Drop>::drop
>>
>> This Rust symbol
>> (<kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop)
>> is trivial wrappers around the C functions __wake_up_pollfree
>> and synchronize_rcu. It doesn't make sense to go through a trivial
>> wrapper for its functions,so mark it inline.
>>
>> Link: https://github.com/Rust-for-Linux/linux/issues/1145
>> Suggested-by: Alice Ryhl <aliceryhl@google.com>
>> Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
>> Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
>> Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
>>
> Queued for future tests and reviews. Thanks!
Ok, if need do testing-related work, feel free to contact me
>
> Regards,
> Boqun
>
>> ---
>> Changes in v2:
>>   - Add link and Suggested-by
>>   - Reword commit msg
>> ---
>>   rust/kernel/sync/poll.rs | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/rust/kernel/sync/poll.rs b/rust/kernel/sync/poll.rs
>> index d5f17153b424..a4f92c545fec 100644
>> --- a/rust/kernel/sync/poll.rs
>> +++ b/rust/kernel/sync/poll.rs
>> @@ -107,6 +107,7 @@ fn deref(&self) -> &CondVar {
>>   
>>   #[pinned_drop]
>>   impl PinnedDrop for PollCondVar {
>> +    #[inline]
>>       fn drop(self: Pin<&mut Self>) {
>>           // Clear anything registered using `register_wait`.
>>           //
>> -- 
>> 2.43.0
>>
-- 
Thanks,
   Kunwu.Chan(Tao.Chan)


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip: sched/core] rust: sync: Mark PollCondVar::drop() inline
  2025-03-17  2:52 [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar Kunwu Chan
                   ` (2 preceding siblings ...)
  2025-03-23 17:49 ` Boqun Feng
@ 2025-07-03  8:36 ` tip-bot2 for Kunwu Chan
  3 siblings, 0 replies; 6+ messages in thread
From: tip-bot2 for Kunwu Chan @ 2025-07-03  8:36 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Alice Ryhl, Grace Deng, Kunwu Chan, Benno Lossin, Boqun Feng, x86,
	linux-kernel

The following commit has been merged into the sched/core branch of tip:

Commit-ID:     11867144ff81ab98f4b11c99716c3e8b714b8755
Gitweb:        https://git.kernel.org/tip/11867144ff81ab98f4b11c99716c3e8b714b8755
Author:        Kunwu Chan <kunwu.chan@hotmail.com>
AuthorDate:    Mon, 17 Mar 2025 10:52:05 +08:00
Committer:     Boqun Feng <boqun.feng@gmail.com>
CommitterDate: Tue, 24 Jun 2025 10:23:48 -07:00

rust: sync: Mark PollCondVar::drop() inline

When building the kernel using the llvm-18.1.3-rust-1.85.0-x86_64
with ARCH=arm64, the following symbols are generated:

$nm vmlinux | grep ' _R'.*PollCondVar  | rustfilt
... T <kernel::sync::poll::PollCondVar as kernel::init::PinnedDrop>::drop
...

This Rust symbol is trivial wrappers around the C functions
__wake_up_pollfree() and synchronize_rcu(). It doesn't make sense to go
through a trivial wrapper for its functions, so mark it inline.

[boqun: Reword the commit title and re-format the commit log per tip
tree's requirement, remove unnecessary information from "nm vmlinux"
result.]

Link: https://github.com/Rust-for-Linux/linux/issues/1145
Suggested-by: Alice Ryhl <aliceryhl@google.com>
Co-developed-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Grace Deng <Grace.Deng006@Gmail.com>
Signed-off-by: Kunwu Chan <kunwu.chan@hotmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Benno Lossin <benno.lossin@proton.me>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://lore.kernel.org/r/20250317025205.2366518-1-kunwu.chan@linux.dev
---
 rust/kernel/sync/poll.rs | 1 +
 1 file changed, 1 insertion(+)

diff --git a/rust/kernel/sync/poll.rs b/rust/kernel/sync/poll.rs
index d7e6e59..7b973d7 100644
--- a/rust/kernel/sync/poll.rs
+++ b/rust/kernel/sync/poll.rs
@@ -107,6 +107,7 @@ impl Deref for PollCondVar {
 
 #[pinned_drop]
 impl PinnedDrop for PollCondVar {
+    #[inline]
     fn drop(self: Pin<&mut Self>) {
         // Clear anything registered using `register_wait`.
         //

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-03  8:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-17  2:52 [PATCH v2] rust: sync: optimize Rust symbol generation for PollCondVar Kunwu Chan
2025-03-17 10:23 ` Benno Lossin
2025-03-20  8:42 ` Alice Ryhl
2025-03-23 17:49 ` Boqun Feng
2025-03-24  2:13   ` Kunwu Chan
2025-07-03  8:36 ` [tip: sched/core] rust: sync: Mark PollCondVar::drop() inline tip-bot2 for Kunwu Chan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.