public inbox for linux-riscv@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] Add RISC-V 32 NOMMU support
@ 2023-02-12 20:55 Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division Jesse Taube
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Jesse Taube @ 2023-02-12 20:55 UTC (permalink / raw)
  To: linux-riscv
  Cc: linux-kernel, Jesse Taube, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley

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


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division
  2023-02-12 20:55 [PATCH v2 0/3] Add RISC-V 32 NOMMU support Jesse Taube
@ 2023-02-12 20:55 ` Jesse Taube
  2023-02-13 19:42   ` Conor Dooley
  2023-02-12 20:55 ` [PATCH v2 2/3] riscv: Kconfig: Allow RV32 to build with no MMU Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32 Jesse Taube
  2 siblings, 1 reply; 8+ messages in thread
From: Jesse Taube @ 2023-02-12 20:55 UTC (permalink / raw)
  To: linux-riscv
  Cc: linux-kernel, Jesse Taube, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley, Conor Dooley, kernel test robot

From: Conor Dooley <conor.dooley@microchip.com>

The K210 clock driver depends on SOC_CANAAN, which is only selectable
when !MMU on RISC-V. !MMU is not possible on 32-bit yet, but patches
have been sent for its enabling. The kernel test robot reported this
implicit 64-bit division there.

Replace the implicit division with an explicit one.

Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/linux-riscv/202301201538.zNlqgE4L-lkp@intel.com/
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
---
 drivers/clk/clk-k210.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/clk-k210.c b/drivers/clk/clk-k210.c
index 67a7cb3503c3..4eed667eddaf 100644
--- a/drivers/clk/clk-k210.c
+++ b/drivers/clk/clk-k210.c
@@ -495,7 +495,7 @@ static unsigned long k210_pll_get_rate(struct clk_hw *hw,
 	f = FIELD_GET(K210_PLL_CLKF, reg) + 1;
 	od = FIELD_GET(K210_PLL_CLKOD, reg) + 1;
 
-	return (u64)parent_rate * f / (r * od);
+	return div_u64((u64)parent_rate * f, r * od);
 }
 
 static const struct clk_ops k210_pll_ops = {
-- 
2.39.0


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/3] riscv: Kconfig: Allow RV32 to build with no MMU
  2023-02-12 20:55 [PATCH v2 0/3] Add RISC-V 32 NOMMU support Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division Jesse Taube
@ 2023-02-12 20:55 ` Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32 Jesse Taube
  2 siblings, 0 replies; 8+ messages in thread
From: Jesse Taube @ 2023-02-12 20:55 UTC (permalink / raw)
  To: linux-riscv
  Cc: linux-kernel, Jesse Taube, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley

From: Yimin Gu <ustcymgu@gmail.com>

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 <ustcymgu@gmail.com>
CC: Jesse Taube <Mr.Bossman075@gmail.com>
Tested-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>
---
 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


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32
  2023-02-12 20:55 [PATCH v2 0/3] Add RISC-V 32 NOMMU support Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division Jesse Taube
  2023-02-12 20:55 ` [PATCH v2 2/3] riscv: Kconfig: Allow RV32 to build with no MMU Jesse Taube
@ 2023-02-12 20:55 ` Jesse Taube
  2023-02-13 19:49   ` Conor Dooley
  2 siblings, 1 reply; 8+ messages in thread
From: Jesse Taube @ 2023-02-12 20:55 UTC (permalink / raw)
  To: linux-riscv
  Cc: linux-kernel, Jesse Taube, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley

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 <Mr.Bossman075@gmail.com>
Cc: Yimin Gu <ustcymgu@gmail.com>
---
 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


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division
  2023-02-12 20:55 ` [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division Jesse Taube
@ 2023-02-13 19:42   ` Conor Dooley
  0 siblings, 0 replies; 8+ messages in thread
From: Conor Dooley @ 2023-02-13 19:42 UTC (permalink / raw)
  To: Jesse Taube
  Cc: linux-riscv, linux-kernel, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley, Conor Dooley, kernel test robot


[-- Attachment #1.1: Type: text/plain, Size: 1475 bytes --]

On Sun, Feb 12, 2023 at 03:55:04PM -0500, Jesse Taube wrote:
> From: Conor Dooley <conor.dooley@microchip.com>
> 
> The K210 clock driver depends on SOC_CANAAN, which is only selectable
> when !MMU on RISC-V. !MMU is not possible on 32-bit yet, but patches
> have been sent for its enabling. The kernel test robot reported this
> implicit 64-bit division there.
> 
> Replace the implicit division with an explicit one.
> 
> Reported-by: kernel test robot <lkp@intel.com>
> Link: https://lore.kernel.org/linux-riscv/202301201538.zNlqgE4L-lkp@intel.com/
> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Jesse Taube <Mr.Bossman075@gmail.com>

btw, you'll need to run get_maintainer.pl on this patch so that the k210
and clock maintainers are CCed.

It's also worth adding Damien Le Moal <damien.lemoal@wdc.com>

> ---
>  drivers/clk/clk-k210.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/clk/clk-k210.c b/drivers/clk/clk-k210.c
> index 67a7cb3503c3..4eed667eddaf 100644
> --- a/drivers/clk/clk-k210.c
> +++ b/drivers/clk/clk-k210.c
> @@ -495,7 +495,7 @@ static unsigned long k210_pll_get_rate(struct clk_hw *hw,
>  	f = FIELD_GET(K210_PLL_CLKF, reg) + 1;
>  	od = FIELD_GET(K210_PLL_CLKOD, reg) + 1;
>  
> -	return (u64)parent_rate * f / (r * od);
> +	return div_u64((u64)parent_rate * f, r * od);
>  }
>  
>  static const struct clk_ops k210_pll_ops = {
> -- 
> 2.39.0
> 

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32
  2023-02-12 20:55 ` [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32 Jesse Taube
@ 2023-02-13 19:49   ` Conor Dooley
  2023-02-13 21:44     ` Jesse Taube
  0 siblings, 1 reply; 8+ messages in thread
From: Conor Dooley @ 2023-02-13 19:49 UTC (permalink / raw)
  To: Jesse Taube
  Cc: linux-riscv, linux-kernel, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley


[-- Attachment #1.1: Type: text/plain, Size: 1020 bytes --]

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


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32
  2023-02-13 19:49   ` Conor Dooley
@ 2023-02-13 21:44     ` Jesse Taube
  2023-02-13 21:48       ` Conor Dooley
  0 siblings, 1 reply; 8+ messages in thread
From: Jesse Taube @ 2023-02-13 21:44 UTC (permalink / raw)
  To: Conor Dooley
  Cc: linux-riscv, linux-kernel, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley



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
> 

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32
  2023-02-13 21:44     ` Jesse Taube
@ 2023-02-13 21:48       ` Conor Dooley
  0 siblings, 0 replies; 8+ messages in thread
From: Conor Dooley @ 2023-02-13 21:48 UTC (permalink / raw)
  To: Jesse Taube
  Cc: linux-riscv, linux-kernel, Yimin Gu, Waldemar Brodkorb, Albert Ou,
	Palmer Dabbelt, Paul Walmsley


[-- Attachment #1.1: Type: text/plain, Size: 1644 bytes --]

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/20230205133307.1058814-1-guoren@kernel.org/

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

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-02-13 21:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-12 20:55 [PATCH v2 0/3] Add RISC-V 32 NOMMU support Jesse Taube
2023-02-12 20:55 ` [PATCH v2 1/3] clk: k210: remove an implicit 64-bit division Jesse Taube
2023-02-13 19:42   ` Conor Dooley
2023-02-12 20:55 ` [PATCH v2 2/3] riscv: Kconfig: Allow RV32 to build with no MMU Jesse Taube
2023-02-12 20:55 ` [PATCH v2 3/3] riscv: configs: Add nommu defconfig for RV32 Jesse Taube
2023-02-13 19:49   ` Conor Dooley
2023-02-13 21:44     ` Jesse Taube
2023-02-13 21:48       ` Conor Dooley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox