Hi Miguel, On Wed, 19 Mar 2025 00:47:40 +0100 Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx> wrote: > > On Tue, Mar 18, 2025 at 12:37 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > > > > When I merge the rust tree into linux-next, the complete resolution now > > looks like this: > > (the hunk in rust/kernel/sync.rs is needed due to a commit in the tip > > tree) > > Thanks! > > I have redone the 2 merges on my side again, following the ones you > did (i.e. starting on the previous merge you had on 20250318, then > rust-next, then hrtimer-next) and then compared. I saved it for you > at: > > https://github.com/ojeda/linux.git rust-test-merge Thanks for checking it out. > There are a few differences, a couple important, another one not much > -- all coming from the first merge (rust-next one). > > 1) When merging rust-next, the first one is needed to pass `rustfmt` > in `rust/kernel/sync.rs`: > > -use pin_init; > use crate::prelude::*; > use crate::types::Opaque; > +use pin_init; > > Would it be possible for you to run `make ...... rustfmt` after > merges? It is quite fast (with the amount of code we have :). As far > as I know, Linus is also doing it, so it is not a huge deal, but it is > nicer nevertheless to have it clean in linux-next so that CIs can do > `make ....... rustfmtcheck` (which checks if it is clean). I have a look into it. > By the way, concerning this change, we could actually remove that > line, but since it was in the original commit, I kept it in the merge > -- we can clean it up in a proper commit later on. > > 2) More importantly, there are a couple changed needed to keep the > examples building (which are KUnit tests, i.e. under > `CONFIG_RUST_KERNEL_DOCTESTS`). In `rust/kernel/sync.rs`: > > - /// # use kernel::{c_str, stack_pin_init}; > + /// # use kernel::c_str; > /// # use kernel::alloc::KBox; > /// # use kernel::types::ForeignOwnable; > /// # use kernel::sync::{LockClassKey, SpinLock}; > + /// # use pin_init::stack_pin_init; > > And in `rust/kernel/sync/lock.rs`: > > - /// # use kernel::{new_spinlock, stack_pin_init, > sync::lock::{Backend, Guard, Lock}}; > + /// # use kernel::{new_spinlock, sync::lock::{Backend, Guard, Lock}}; > + /// # use pin_init::stack_pin_init; > > 3) A trivial difference is that I kept the removal of this newline in > `rust/pin-init/src/lib.rs`, because the original fix did so (which was > likely done because the "SAFETY" comment is supposed to "cover" it > too), but it is not a big deal to keep it as you have it. > > Option<NonZeroI128>, Option<NonZeroIsize>, > - > {<T>} Option<NonNull<T>>, > > Would it be possible to fix at least 1) and 2)? Thanks a lot! I added all three to my resolution today. -- Cheers, Stephen Rothwell
Attachment:
pgpyQQ2G0J3gD.pgp
Description: OpenPGP digital signature