2023-02-12 20:55:16

by Jesse T

[permalink] [raw]
Subject: [PATCH v2 0/3] Add RISC-V 32 NOMMU support

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.

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

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

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

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

arch/riscv/Kconfig | 5 ++---
arch/riscv/configs/rv32_nommu_virt_defconfig | 16 ++++++++++++++++
drivers/clk/clk-k210.c | 2 +-
3 files changed, 19 insertions(+), 4 deletions(-)
create mode 100644 arch/riscv/configs/rv32_nommu_virt_defconfig

--
2.39.0



2023-02-12 20:55:19

by Jesse T

[permalink] [raw]
Subject: [PATCH v2 2/3] riscv: Kconfig: Allow RV32 to build with no MMU

From: Yimin Gu <[email protected]>

Some RISC-V 32bit cores do not have an MMU, and the kernel should be
able to build for them. This patch enables the RV32 to be built with
no MMU support.

Signed-off-by: Yimin Gu <[email protected]>
CC: Jesse Taube <[email protected]>
Tested-by: Waldemar Brodkorb <[email protected]>
Signed-off-by: Jesse Taube <[email protected]>
---
arch/riscv/Kconfig | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 59d18881f35b..49759dbe6a8f 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -163,8 +163,8 @@ config MMU

config PAGE_OFFSET
hex
- default 0xC0000000 if 32BIT
- default 0x80000000 if 64BIT && !MMU
+ default 0xC0000000 if 32BIT && MMU
+ default 0x80000000 if !MMU
default 0xff60000000000000 if 64BIT

config KASAN_SHADOW_OFFSET
@@ -262,7 +262,6 @@ config ARCH_RV32I
select GENERIC_LIB_ASHRDI3
select GENERIC_LIB_LSHRDI3
select GENERIC_LIB_UCMPDI2
- select MMU

config ARCH_RV64I
bool "RV64I"
--
2.39.0


2023-02-12 20:55:21

by Jesse T

[permalink] [raw]
Subject: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32

32bit risc-v can be configured to run without MMU. This patch adds
an example configuration for RV32 nommu virtual machine.

Signed-off-by: Jesse Taube <[email protected]>
Cc: Yimin Gu <[email protected]>
---
arch/riscv/configs/rv32_nommu_virt_defconfig | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 arch/riscv/configs/rv32_nommu_virt_defconfig

diff --git a/arch/riscv/configs/rv32_nommu_virt_defconfig b/arch/riscv/configs/rv32_nommu_virt_defconfig
new file mode 100644
index 000000000000..460907253a80
--- /dev/null
+++ b/arch/riscv/configs/rv32_nommu_virt_defconfig
@@ -0,0 +1,16 @@
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_MMU is not set
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_SOC_VIRT=y
+CONFIG_NONPORTABLE=y
+CONFIG_ARCH_RV32I=y
+CONFIG_BINFMT_FLAT=y
+CONFIG_SLOB=y
+CONFIG_VIRTIO_BLK=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_EXT2_FS=y
+CONFIG_PRINTK_TIME=y
--
2.39.0


2023-02-13 19:50:11

by Conor Dooley

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32

Hey Jesse,

On Sun, Feb 12, 2023 at 03:55:06PM -0500, Jesse Taube wrote:
> 32bit risc-v can be configured to run without MMU. This patch adds
> an example configuration for RV32 nommu virtual machine.

There's a patch on the list (I think it came in after you sent v1) that
pointed out that the rv32_defconfig in the tree is not actually used if
you do `make ARCH=riscv rv32_defconfig`, but instead a make target is
used. How would you feel about replacing this final patch with the
below? That way rv32_nommu_virt_defconfig would always be kept in sync
with the rv64 version.

Cheers,
Conor.

diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
index 7123511d977c..785d438ae5fe 100644
--- a/arch/riscv/Makefile
+++ b/arch/riscv/Makefile
@@ -173,3 +173,7 @@ rv64_randconfig:
PHONY += rv32_defconfig
rv32_defconfig:
$(Q)$(MAKE) -f $(srctree)/Makefile defconfig 32-bit.config
+
+PHONY += rv32_nommu_virt_defconfig
+rv32_nommu_virt_defconfig:
+ $(Q)$(MAKE) -f $(srctree)/Makefile nommu_virt_defconfig 32-bit.config


Attachments:
(No filename) (1.00 kB)
signature.asc (228.00 B)
Download all attachments

2023-02-13 21:44:35

by Jesse T

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32



On 2/13/23 14:49, Conor Dooley wrote:
> Hey Jesse,
>
> On Sun, Feb 12, 2023 at 03:55:06PM -0500, Jesse Taube wrote:
>> 32bit risc-v can be configured to run without MMU. This patch adds
>> an example configuration for RV32 nommu virtual machine.
>
> There's a patch on the list (I think it came in after you sent v1) that
> pointed out that the rv32_defconfig in the tree is not actually used if
> you do `make ARCH=riscv rv32_defconfig`, but instead a make target is
> used.
Oh that's interesting. Why is it still int the tree?
How would you feel about replacing this final patch with the
> below? That way rv32_nommu_virt_defconfig would always be kept in sync
> with the rv64 version.
Sounds good! The only gripe I have is the nommu_virt_defconfig is not
very minimal, but that's not my problem.

Thanks,
Jesse Taube
>
> Cheers,
> Conor.
>
> diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
> index 7123511d977c..785d438ae5fe 100644
> --- a/arch/riscv/Makefile
> +++ b/arch/riscv/Makefile
> @@ -173,3 +173,7 @@ rv64_randconfig:
> PHONY += rv32_defconfig
> rv32_defconfig:
> $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 32-bit.config
> +
> +PHONY += rv32_nommu_virt_defconfig
> +rv32_nommu_virt_defconfig:
> + $(Q)$(MAKE) -f $(srctree)/Makefile nommu_virt_defconfig 32-bit.config
>

2023-02-13 21:48:49

by Conor Dooley

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32

On Mon, Feb 13, 2023 at 04:44:29PM -0500, Jesse Taube wrote:
>
>
> On 2/13/23 14:49, Conor Dooley wrote:
> > Hey Jesse,
> >
> > On Sun, Feb 12, 2023 at 03:55:06PM -0500, Jesse Taube wrote:
> > > 32bit risc-v can be configured to run without MMU. This patch adds
> > > an example configuration for RV32 nommu virtual machine.
> >
> > There's a patch on the list (I think it came in after you sent v1) that
> > pointed out that the rv32_defconfig in the tree is not actually used if
> > you do `make ARCH=riscv rv32_defconfig`, but instead a make target is
> > used.
> Oh that's interesting. Why is it still int the tree?

See that's the thing - the patch was deleting the rv32_defconfig file:
https://lore.kernel.org/linux-riscv/[email protected]/

> > How would you feel about replacing this final patch with the
> > below? That way rv32_nommu_virt_defconfig would always be kept in sync
> > with the rv64 version.
> Sounds good! The only gripe I have is the nommu_virt_defconfig is not very
> minimal, but that's not my problem.
>
> Thanks,
> Jesse Taube
> >
> > Cheers,
> > Conor.
> >
> > diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
> > index 7123511d977c..785d438ae5fe 100644
> > --- a/arch/riscv/Makefile
> > +++ b/arch/riscv/Makefile
> > @@ -173,3 +173,7 @@ rv64_randconfig:
> > PHONY += rv32_defconfig
> > rv32_defconfig:
> > $(Q)$(MAKE) -f $(srctree)/Makefile defconfig 32-bit.config
> > +
> > +PHONY += rv32_nommu_virt_defconfig
> > +rv32_nommu_virt_defconfig:
> > + $(Q)$(MAKE) -f $(srctree)/Makefile nommu_virt_defconfig 32-bit.config
> >


Attachments:
(No filename) (1.56 kB)
signature.asc (228.00 B)
Download all attachments