On Tue, Apr 21, 2026 at 03:25:22PM +0530, Mukesh Kumar Chaurasiya wrote: > On Tue, Apr 21, 2026 at 11:38:08AM +0200, Link Mauve wrote: > > Hi Mukesh, > > > > This patch doesn’t apply on top of mainline, which tree did you base it > > off? > > > It was on mainline v7.0 tag. Great thanks, they do apply there! I needed three more patches for the kernel to build on PPC32, I’ve attached them but they are absolutely not patches which could go into the kernel (except for the second, enabling asm_experimental_arch). What do you think we should do about them? > On latest there is a confilict. I'll send out a rebased version. > > > On Fri, Apr 17, 2026 at 08:52:50PM +0530, Mukesh Kumar Chaurasiya (IBM) wrote: > > > When building Rust code for powerpc64le with LLVM=1 and -j1, rustc > > > encounters an error: "multiple candidates for `rmeta` dependency `core` > > > found", with two candidates: > > > 1. The host's standard library from the rustup toolchain > > > 2. The kernel's custom libcore.rmeta in the rust/ directory > > > > > > This occurs because the build system uses `-L$(objtree)/rust` for host > > > library builds (proc_macro2, quote, syn), which causes rustc to search > > > the rust/ directory. During this search, rustc finds both the kernel's > > > custom libcore.rmeta and gains access to the host's standard library, > > > creating a conflict. > > > > > > The solution is to separate host libraries into a dedicated rust/host/ > > > subdirectory and use `-L$(objtree)/rust/host` for host builds instead > > > of `-L$(objtree)/rust`. This ensures that: > > > > > > 1. Host library builds (proc_macro2, quote, syn) only search rust/host/ > > > and never encounter the kernel's libcore.rmeta > > > 2. Proc macro builds use `-L$(objtree)/rust/host` to find their > > > dependencies > > > > > > Special handling is added for rustdoc-pin_init, which is a host build > > > (to access the alloc crate) but depends on proc macros from the main > > > rust/ directory. It uses explicit `--extern` paths to reference the > > > proc macros without adding `-L$(objtree)/rust`, which would reintroduce > > > the conflict. > > > > > > The rust/host/ directory is added to clean-files to ensure it's removed > > > during `make clean`. > > > > > > Link: https://github.com/Rust-for-Linux/linux/issues/105 > > > Link: https://github.com/linuxppc/issues/issues/451 > > > Signed-off-by: Mukesh Kumar Chaurasiya (IBM) > > > --- > > > rust/Makefile | 38 +++++++++++++++++++++----------------- > > > 1 file changed, 21 insertions(+), 17 deletions(-) > > > > > > diff --git a/rust/Makefile b/rust/Makefile > > > index 9801af2e1e02..e234b8a39358 100644 > > > --- a/rust/Makefile > > > +++ b/rust/Makefile > > > @@ -3,6 +3,9 @@ > > > # Where to place rustdoc generated documentation > > > rustdoc_output := $(objtree)/Documentation/output/rust/rustdoc > > > > > > +# Clean generated host directory > > > +clean-files := host/ > > > + > > > obj-$(CONFIG_RUST) += core.o compiler_builtins.o ffi.o > > > always-$(CONFIG_RUST) += exports_core_generated.h > > > > > > @@ -27,7 +30,7 @@ endif > > > > > > obj-$(CONFIG_RUST) += exports.o > > > > > > -always-$(CONFIG_RUST) += libproc_macro2.rlib libquote.rlib libsyn.rlib > > > +always-$(CONFIG_RUST) += host/libproc_macro2.rlib host/libquote.rlib host/libsyn.rlib > > > > > > always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.rs > > > always-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.c > > > @@ -150,7 +153,7 @@ quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $< > > > OBJTREE=$(abspath $(objtree)) \ > > > $(RUSTDOC) $(filter-out $(skip_flags) --remap-path-prefix=% --remap-path-scope=%, \ > > > $(if $(rustdoc_host),$(rust_common_flags),$(rust_flags))) \ > > > > The issue is here ↑, --remap-path-prefix=% got removed and the two > > previous lines got merged into one. > > > Yeah will fix this. > > > - $(rustc_target_flags) -L$(objtree)/$(obj) \ > > > + $(rustc_target_flags) -L$(objtree)/$(obj)$(if $(rustdoc_host),/host) \ > > > -Zunstable-options --generate-link-to-definition \ > > > --output $(rustdoc_output) \ > > > --crate-name $(subst rustdoc-,,$@) \ > > […] > > > > Thanks anyway for iterating on this series! I’ve started writing a DRM > > driver based off a previous version. :) > > > That's cool. Thanks. > > Regards, > Mukesh > > -- > > Link Mauve > > -- Link Mauve