Message ID | 20230224135044.2882109-3-conor.dooley@microchip.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | RISC-V: enable rust | expand |
Context | Check | Description |
---|---|---|
conchuod/cover_letter | success | Series has a cover letter |
conchuod/tree_selection | success | Guessed tree name to be for-next |
conchuod/fixes_present | success | Fixes tag not required for -next series |
conchuod/maintainers_pattern | success | MAINTAINERS pattern errors before the patch: 13 and now 13 |
conchuod/verify_signedoff | success | Signed-off-by tag matches author and committer |
conchuod/kdoc | success | Errors and warnings before: 0 this patch: 0 |
conchuod/build_rv64_clang_allmodconfig | success | Errors and warnings before: 0 this patch: 0 |
conchuod/module_param | success | Was 0 now: 0 |
conchuod/build_rv64_gcc_allmodconfig | success | Errors and warnings before: 0 this patch: 0 |
conchuod/alphanumeric_selects | warning | Out of order selects before the patch: 729 and now 730 |
conchuod/build_rv32_defconfig | success | Build OK |
conchuod/dtb_warn_rv64 | success | Errors and warnings before: 2 this patch: 2 |
conchuod/header_inline | success | No static functions without inline keyword in header files |
conchuod/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 30 lines checked |
conchuod/source_inline | success | Was 0 now: 0 |
conchuod/build_rv64_nommu_k210_defconfig | success | Build OK |
conchuod/verify_fixes | success | No Fixes tag |
conchuod/build_rv64_nommu_virt_defconfig | success | Build OK |
Hi Conor, On Fri, Feb 24, 2023 at 01:50:44PM +0000, Conor Dooley wrote: > From: Miguel Ojeda <ojeda@kernel.org> > > The rust modules work on 64-bit RISC-V, with no twiddling required. > Select HAS_RUST and provide the required flags to kbuild so that the > modules can be used. > 32-bit is broken in core rust code, so support is limited to 64-bit > only: ld.lld: error: undefined symbol: __udivdi3 > > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> > Signed-off-by: Conor Dooley <conor.dooley@microchip.com> > --- > Documentation/rust/arch-support.rst | 2 ++ > arch/riscv/Kconfig | 1 + > arch/riscv/Makefile | 3 ++- > 3 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst > index 6982b63775da..197919158596 100644 > --- a/Documentation/rust/arch-support.rst > +++ b/Documentation/rust/arch-support.rst > @@ -15,5 +15,7 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file. > ============ ================ ============================================== > Architecture Level of support Constraints > ============ ================ ============================================== > +``riscv`` Maintained ``rv64`` only. > +============ ================ ============================================== > ``x86`` Maintained ``x86_64`` only. > ============ ================ ============================================== > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > index 81eb031887d2..73174157212d 100644 > --- a/arch/riscv/Kconfig > +++ b/arch/riscv/Kconfig > @@ -115,6 +115,7 @@ config RISCV > select HAVE_POSIX_CPU_TIMERS_TASK_WORK > select HAVE_REGS_AND_STACK_ACCESS_API > select HAVE_RSEQ > + select HAVE_RUST if 64BIT Just a small drive by comment, you have 'if 64BIT' here... > select HAVE_STACKPROTECTOR > select HAVE_SYSCALL_TRACEPOINTS > select IRQ_DOMAIN > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile > index 76989561566b..0d6fc4e25221 100644 > --- a/arch/riscv/Makefile > +++ b/arch/riscv/Makefile > @@ -29,8 +29,8 @@ ifeq ($(CONFIG_ARCH_RV64I),y) > > KBUILD_CFLAGS += -mabi=lp64 > KBUILD_AFLAGS += -mabi=lp64 > - > KBUILD_LDFLAGS += -melf64lriscv > + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv64 > else > BITS := 32 > UTS_MACHINE := riscv32 > @@ -38,6 +38,7 @@ else > KBUILD_CFLAGS += -mabi=ilp32 > KBUILD_AFLAGS += -mabi=ilp32 > KBUILD_LDFLAGS += -melf32lriscv > + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv32 but also add KBUILD_RUSTFLAGS for the !64BIT case. Seems like one of those can be removed. > endif > > ifeq ($(CONFIG_LD_IS_LLD),y) > -- > 2.39.2 > Cheers, Nathan
On Fri, Feb 24, 2023 at 07:57:13AM -0700, Nathan Chancellor wrote: > Hi Conor, > > On Fri, Feb 24, 2023 at 01:50:44PM +0000, Conor Dooley wrote: > > From: Miguel Ojeda <ojeda@kernel.org> > > > > The rust modules work on 64-bit RISC-V, with no twiddling required. > > Select HAS_RUST and provide the required flags to kbuild so that the > > modules can be used. > > 32-bit is broken in core rust code, so support is limited to 64-bit > > only: ld.lld: error: undefined symbol: __udivdi3 > > > > Signed-off-by: Miguel Ojeda <ojeda@kernel.org> > > Signed-off-by: Conor Dooley <conor.dooley@microchip.com> > > --- > > Documentation/rust/arch-support.rst | 2 ++ > > arch/riscv/Kconfig | 1 + > > arch/riscv/Makefile | 3 ++- > > 3 files changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst > > index 6982b63775da..197919158596 100644 > > --- a/Documentation/rust/arch-support.rst > > +++ b/Documentation/rust/arch-support.rst > > @@ -15,5 +15,7 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file. > > ============ ================ ============================================== > > Architecture Level of support Constraints > > ============ ================ ============================================== > > +``riscv`` Maintained ``rv64`` only. > > +============ ================ ============================================== > > ``x86`` Maintained ``x86_64`` only. > > ============ ================ ============================================== > > diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig > > index 81eb031887d2..73174157212d 100644 > > --- a/arch/riscv/Kconfig > > +++ b/arch/riscv/Kconfig > > @@ -115,6 +115,7 @@ config RISCV > > select HAVE_POSIX_CPU_TIMERS_TASK_WORK > > select HAVE_REGS_AND_STACK_ACCESS_API > > select HAVE_RSEQ > > + select HAVE_RUST if 64BIT > > Just a small drive by comment, you have 'if 64BIT' here... > > > select HAVE_STACKPROTECTOR > > select HAVE_SYSCALL_TRACEPOINTS > > select IRQ_DOMAIN > > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile > > index 76989561566b..0d6fc4e25221 100644 > > --- a/arch/riscv/Makefile > > +++ b/arch/riscv/Makefile > > @@ -29,8 +29,8 @@ ifeq ($(CONFIG_ARCH_RV64I),y) > > > > KBUILD_CFLAGS += -mabi=lp64 > > KBUILD_AFLAGS += -mabi=lp64 > > - > > KBUILD_LDFLAGS += -melf64lriscv > > + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv64 > > else > > BITS := 32 > > UTS_MACHINE := riscv32 > > @@ -38,6 +38,7 @@ else > > KBUILD_CFLAGS += -mabi=ilp32 > > KBUILD_AFLAGS += -mabi=ilp32 > > KBUILD_LDFLAGS += -melf32lriscv > > + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv32 > > but also add KBUILD_RUSTFLAGS for the !64BIT case. Seems like one of > those can be removed. Yeah & it's ditto for the rv32 handling in 1/2 as well. Ideally there wouldn't be implicit 64-bit division and the "if 64BIT" could go away. I just left things as-lifted, but I'll go drop anything 32-bit related if this series looses the RFC prefix ;)
On Fri, Feb 24, 2023 at 2:51 PM Conor Dooley <conor.dooley@microchip.com> wrote: > > The rust modules work on 64-bit RISC-V, with no twiddling required. > Select HAS_RUST and provide the required flags to kbuild so that the HAS -> HAVE > diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst > index 6982b63775da..197919158596 100644 > --- a/Documentation/rust/arch-support.rst > +++ b/Documentation/rust/arch-support.rst > @@ -15,5 +15,7 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file. > ============ ================ ============================================== > Architecture Level of support Constraints > ============ ================ ============================================== > +``riscv`` Maintained ``rv64`` only. > +============ ================ ============================================== > ``x86`` Maintained ``x86_64`` only. I think this separator between rows should not be here (it is not in `rust-for-linux/rust`). Please see https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#simple-tables. Cheers, Miguel
On Fri, Feb 24, 2023 at 09:45:05PM +0100, Miguel Ojeda wrote: > On Fri, Feb 24, 2023 at 2:51 PM Conor Dooley <conor.dooley@microchip.com> wrote: > > diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst > > index 6982b63775da..197919158596 100644 > > --- a/Documentation/rust/arch-support.rst > > +++ b/Documentation/rust/arch-support.rst > > @@ -15,5 +15,7 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file. > > ============ ================ ============================================== > > Architecture Level of support Constraints > > ============ ================ ============================================== > > +``riscv`` Maintained ``rv64`` only. > > +============ ================ ============================================== > > ``x86`` Maintained ``x86_64`` only. > > I think this separator between rows should not be here (it is not in > `rust-for-linux/rust`). Please see > https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#simple-tables. That's what the "let the automation tell me if I messed up rst" approach gets you ;)
diff --git a/Documentation/rust/arch-support.rst b/Documentation/rust/arch-support.rst index 6982b63775da..197919158596 100644 --- a/Documentation/rust/arch-support.rst +++ b/Documentation/rust/arch-support.rst @@ -15,5 +15,7 @@ support corresponds to ``S`` values in the ``MAINTAINERS`` file. ============ ================ ============================================== Architecture Level of support Constraints ============ ================ ============================================== +``riscv`` Maintained ``rv64`` only. +============ ================ ============================================== ``x86`` Maintained ``x86_64`` only. ============ ================ ============================================== diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 81eb031887d2..73174157212d 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -115,6 +115,7 @@ config RISCV select HAVE_POSIX_CPU_TIMERS_TASK_WORK select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_RSEQ + select HAVE_RUST if 64BIT select HAVE_STACKPROTECTOR select HAVE_SYSCALL_TRACEPOINTS select IRQ_DOMAIN diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index 76989561566b..0d6fc4e25221 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -29,8 +29,8 @@ ifeq ($(CONFIG_ARCH_RV64I),y) KBUILD_CFLAGS += -mabi=lp64 KBUILD_AFLAGS += -mabi=lp64 - KBUILD_LDFLAGS += -melf64lriscv + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv64 else BITS := 32 UTS_MACHINE := riscv32 @@ -38,6 +38,7 @@ else KBUILD_CFLAGS += -mabi=ilp32 KBUILD_AFLAGS += -mabi=ilp32 KBUILD_LDFLAGS += -melf32lriscv + KBUILD_RUSTFLAGS += -Ctarget-cpu=generic-rv32 endif ifeq ($(CONFIG_LD_IS_LLD),y)