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

From: Randy Dunlap
Date: Tue Mar 07 2023 - 22:23:50 EST




On 3/7/23 18:54, Jesse Taube wrote:
>
>
> 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 for reminding me.

With these 3 patches applied to linux-next-20230307,
I still get this build error.


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

--
~Randy