Re: [PATCH v3 0/3] Add RISC-V 32 NOMMU support

From: Jesse Taube
Date: Tue Mar 07 2023 - 21:54:35 EST




On 3/7/23 21:51, Randy Dunlap wrote:


On 3/7/23 18:33, Randy Dunlap wrote:


On 3/7/23 18:30, Jesse Taube wrote:


On 3/7/23 21:16, Randy Dunlap wrote:
Hi--

On 3/7/23 17:26, Jesse Taube wrote:


On 2/28/23 23:42, Damien Le Moal wrote:
On 3/1/23 13:07, Randy Dunlap wrote:
Hi--

On 2/28/23 16:26, Jesse Taube wrote:
This patch-set aims to add NOMMU support to RV32.
Many people want to build simple emulators or HDL
models of RISC-V this patch makes it possible to
run linux on them.

Yimin Gu is the original author of this set.
Submitted here:
https://lists.buildroot.org/pipermail/buildroot/2022-November/656134.html

Though Jesse T rewrote the Dconf.

Dconf?


The new set:
https://lists.buildroot.org/pipermail/buildroot/2022-December/658258.html
---
V1->V2:
   - Add Conor's clock patch for implicit div64
   - Fix typo in commit title 3/3
   - Fix typo in commit description 2/3
V2->V3
   - Change from defconfig file to a PHONY config
---

Is this 'rv32_nommu_virt_defconfig' target the only build target
that is supported?

I ask because I applied the 3 patches and did 25 randconfig builds.
5 of them failed the same way:

riscv32-linux-ld: drivers/soc/canaan/k210-sysctl.o: in function `k210_soc_early_init':
k210-sysctl.c:(.init.text+0x78): undefined reference to `k210_clk_early_init'
I can not recreate this error.
can you send me the .config you used.

Thanks,
Jesse Taube

Sure, it's attached.

Hmmm, it links fine for me.

objdump -x vmlinux | grep k210_clk_early_init
81e40124 g     F .init.text     00000088 k210_clk_early_init

gcc version 11.3.0 (Buildroot 2022.11-361-g1be0d438f7)
GNU assembler version 2.38 (riscv32-buildroot-linux-uclibc)
GNU ld (GNU Binutils) 2.38

what gcc version are you using?


gcc (SUSE Linux) 12.2.1 20230124 [revision 193f7e62815b4089dfaed4c2bd34fd4f10209e27]
from opensuse Tumbleweed.

I'll try it on a current tree...

OK, I don't know how it happened. I cannot reproduce it now.
The failing .config files has CONFIG_MMU is not set (for RV32I), which
appears to be impossible.
These patches add `CONFIG_MMU is not set` (for RV32I).
But no worries it seems to be a non issue now.

Your thoughts Damien?

Thanks,
Jesse Taube

Sorry to bother you.

Thanks.


Arg. Forgot about that. k210 is rv64 only and while the clk driver could still
compile test with rv32 (or any arch), that driver provides the
k210_clk_early_init() function which is called very early in the boot process
from k210_soc_early_init(), which is an SOC_EARLY_INIT_DECLARE() call. The
problem may be there. Probably should be disabled for rv32 if no SoC need that
sort of early init call.


because
# CONFIG_COMMON_CLK_K210 is not set


Maybe SOC_CANAAN needs some more selects for required code?

Conor Dooley (1):
    clk: k210: remove an implicit 64-bit division

Jesse Taube (1):
    riscv: configs: Add nommu PHONY defconfig for RV32

Yimin Gu (1):
    riscv: Kconfig: Allow RV32 to build with no MMU

   arch/riscv/Kconfig     | 5 ++---
   arch/riscv/Makefile    | 4 ++++
   drivers/clk/clk-k210.c | 2 +-
   3 files changed, 7 insertions(+), 4 deletions(-)