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

Jesse Taube mr.bossman075 at gmail.com
Tue Mar 7 18:54:25 PST 2023



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(-)
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>
> 



More information about the linux-riscv mailing list