All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] arm64: Update memcpy_{from, to}io() helpers
@ 2021-07-19  9:21 Patrick Delaunay
  2021-07-19  9:21 ` [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function Patrick Delaunay
  2021-07-19  9:21 ` [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
  0 siblings, 2 replies; 5+ messages in thread
From: Patrick Delaunay @ 2021-07-19  9:21 UTC (permalink / raw)
  To: u-boot
  Cc: Patrick Delaunay, Anastasiia Lukianenko, Biju Das, Chunfeng Yun,
	Fabien Parent, GSS_MTK_Uboot_upstream, Harald Seiler,
	Lad Prabhakar, Oleksandr Andrushchenko, Oliver Graute,
	Patrice Chotard, Ryder Lee, Simon Glass, Suneel Garapati,
	Tom Rini, Weijie Gao, U-Boot STM32


V2 of previous serie [1] sent by Patrice.

The compilation issues raised by Tom are solved [2].

[1] http://patchwork.ozlabs.org/project/uboot/list/?series=231203&state=*

[2] https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/8310


Changes in v2:
- NEW: solve conflicts when cpu_func.h is included

Patrice Chotard (1):
  arm64: Update memcpy_{from, to}io() helpers

Patrick Delaunay (1):
  arm: use the correct prototype for reset_cpu function

 arch/arm/cpu/armv8/cache_v8.c           | 10 ++++++++++
 arch/arm/include/asm/io.h               | 25 +++++++++++++++----------
 arch/arm/mach-mediatek/mt8183/init.c    |  2 +-
 board/congatec/cgtqmx8/cgtqmx8.c        |  2 +-
 board/hoperun/hihope-rzg2/hihope-rzg2.c |  2 +-
 board/silinux/ek874/ek874.c             |  2 +-
 include/cpu_func.h                      |  1 +
 7 files changed, 30 insertions(+), 14 deletions(-)

-- 
2.25.1


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

* [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function
  2021-07-19  9:21 [PATCH v2 0/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
@ 2021-07-19  9:21 ` Patrick Delaunay
  2021-07-29 16:49   ` Tom Rini
  2021-07-19  9:21 ` [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
  1 sibling, 1 reply; 5+ messages in thread
From: Patrick Delaunay @ 2021-07-19  9:21 UTC (permalink / raw)
  To: u-boot
  Cc: Patrick Delaunay, Biju Das, Chunfeng Yun, Fabien Parent,
	GSS_MTK_Uboot_upstream, Harald Seiler, Lad Prabhakar,
	Oliver Graute, Ryder Lee, Simon Glass, Tom Rini, Weijie Gao,
	U-Boot STM32

Align reset_cpu function with the next prototypes in
sysreset.h or in cpu_func.h to solve compilation issue:

  void reset_cpu(void);

This patch solves the prototype conflict when cpu_func.h is
included.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

Changes in v2:
- NEW: solve conflicts when cpu_func.h is included

 arch/arm/mach-mediatek/mt8183/init.c    | 2 +-
 board/congatec/cgtqmx8/cgtqmx8.c        | 2 +-
 board/hoperun/hihope-rzg2/hihope-rzg2.c | 2 +-
 board/silinux/ek874/ek874.c             | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-mediatek/mt8183/init.c b/arch/arm/mach-mediatek/mt8183/init.c
index 877f387102..7496029705 100644
--- a/arch/arm/mach-mediatek/mt8183/init.c
+++ b/arch/arm/mach-mediatek/mt8183/init.c
@@ -48,7 +48,7 @@ int mtk_soc_early_init(void)
 	return 0;
 }
 
-void reset_cpu(ulong addr)
+void reset_cpu(void)
 {
 	psci_system_reset();
 }
diff --git a/board/congatec/cgtqmx8/cgtqmx8.c b/board/congatec/cgtqmx8/cgtqmx8.c
index fb0cf09138..a50a052df7 100644
--- a/board/congatec/cgtqmx8/cgtqmx8.c
+++ b/board/congatec/cgtqmx8/cgtqmx8.c
@@ -374,7 +374,7 @@ void detail_board_ddr_info(void)
 /*
  * Board specific reset that is system reset.
  */
-void reset_cpu(ulong addr)
+void reset_cpu(void)
 {
 	/* TODO */
 }
diff --git a/board/hoperun/hihope-rzg2/hihope-rzg2.c b/board/hoperun/hihope-rzg2/hihope-rzg2.c
index c1bfdcbc1d..c1db387b27 100644
--- a/board/hoperun/hihope-rzg2/hihope-rzg2.c
+++ b/board/hoperun/hihope-rzg2/hihope-rzg2.c
@@ -65,7 +65,7 @@ int board_init(void)
 	return 0;
 }
 
-void reset_cpu(ulong addr)
+void reset_cpu(void)
 {
 	unsigned long midr, cputype;
 
diff --git a/board/silinux/ek874/ek874.c b/board/silinux/ek874/ek874.c
index 5a219cd98d..1e948489f3 100644
--- a/board/silinux/ek874/ek874.c
+++ b/board/silinux/ek874/ek874.c
@@ -24,7 +24,7 @@ int board_init(void)
 	return 0;
 }
 
-void reset_cpu(ulong addr)
+void reset_cpu(void)
 {
 	writel(RST_CA53_CODE, RST_CA53RESCNT);
 }
-- 
2.25.1


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

* [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers
  2021-07-19  9:21 [PATCH v2 0/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
  2021-07-19  9:21 ` [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function Patrick Delaunay
@ 2021-07-19  9:21 ` Patrick Delaunay
  2021-07-29 16:49   ` Tom Rini
  1 sibling, 1 reply; 5+ messages in thread
From: Patrick Delaunay @ 2021-07-19  9:21 UTC (permalink / raw)
  To: u-boot
  Cc: Patrice Chotard, Patrick Delaunay, mark.kettenis,
	Anastasiia Lukianenko, Harald Seiler, Oleksandr Andrushchenko,
	Simon Glass, Suneel Garapati, U-Boot STM32

From: Patrice Chotard <patrice.chotard@foss.st.com>

At early U-Boot stage, before relocation, MMU is not yet configured
and disabled. DDR may not be configured with the correct memory
attributes (can be configured in MT_DEVICE instead of MT_MEMORY).

In this case, usage of memcpy_{from, to}io() may leads to synchronous
abort in AARCH64 in case the normal memory address is not 64Bits aligned.

To avoid such situation, forbid usage of normal memory cast to (u64 *) in
case MMU is not enabled.

Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Cc: mark.kettenis@xs4all.nl
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
---

(no changes since v1)

 arch/arm/cpu/armv8/cache_v8.c | 10 ++++++++++
 arch/arm/include/asm/io.h     | 25 +++++++++++++++----------
 include/cpu_func.h            |  1 +
 3 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c
index 15cecb5e0b..3de18c7675 100644
--- a/arch/arm/cpu/armv8/cache_v8.c
+++ b/arch/arm/cpu/armv8/cache_v8.c
@@ -719,6 +719,11 @@ int icache_status(void)
 	return (get_sctlr() & CR_I) != 0;
 }
 
+int mmu_status(void)
+{
+	return (get_sctlr() & CR_M) != 0;
+}
+
 void invalidate_icache_all(void)
 {
 	__asm_invalidate_icache_all();
@@ -740,6 +745,11 @@ int icache_status(void)
 	return 0;
 }
 
+int mmu_status(void)
+{
+	return 0;
+}
+
 void invalidate_icache_all(void)
 {
 }
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index df264a170b..36b840378a 100644
--- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h
@@ -338,6 +338,7 @@ extern void __readwrite_bug(const char *fn);
 
 /* Optimized copy functions to read from/write to IO sapce */
 #ifdef CONFIG_ARM64
+#include <cpu_func.h>
 /*
  * Copy data from IO memory space to "real" memory space.
  */
@@ -351,11 +352,13 @@ void __memcpy_fromio(void *to, const volatile void __iomem *from, size_t count)
 		count--;
 	}
 
-	while (count >= 8) {
-		*(u64 *)to = __raw_readq(from);
-		from += 8;
-		to += 8;
-		count -= 8;
+	if (mmu_status()) {
+		while (count >= 8) {
+			*(u64 *)to = __raw_readq(from);
+			from += 8;
+			to += 8;
+			count -= 8;
+		}
 	}
 
 	while (count) {
@@ -379,11 +382,13 @@ void __memcpy_toio(volatile void __iomem *to, const void *from, size_t count)
 		count--;
 	}
 
-	while (count >= 8) {
-		__raw_writeq(*(u64 *)from, to);
-		from += 8;
-		to += 8;
-		count -= 8;
+	if (mmu_status()) {
+		while (count >= 8) {
+			__raw_writeq(*(u64 *)from, to);
+			from += 8;
+			to += 8;
+			count -= 8;
+		}
 	}
 
 	while (count) {
diff --git a/include/cpu_func.h b/include/cpu_func.h
index c3a66f0405..23cd5eca39 100644
--- a/include/cpu_func.h
+++ b/include/cpu_func.h
@@ -59,6 +59,7 @@ int dcache_status(void);
 void dcache_enable(void);
 void dcache_disable(void);
 void mmu_disable(void);
+int mmu_status(void);
 
 /* arch/$(ARCH)/lib/cache.c */
 void enable_caches(void);
-- 
2.25.1


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

* Re: [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function
  2021-07-19  9:21 ` [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function Patrick Delaunay
@ 2021-07-29 16:49   ` Tom Rini
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Rini @ 2021-07-29 16:49 UTC (permalink / raw)
  To: Patrick Delaunay
  Cc: u-boot, Biju Das, Chunfeng Yun, Fabien Parent,
	GSS_MTK_Uboot_upstream, Harald Seiler, Lad Prabhakar,
	Oliver Graute, Ryder Lee, Simon Glass, Weijie Gao, U-Boot STM32

[-- Attachment #1: Type: text/plain, Size: 414 bytes --]

On Mon, Jul 19, 2021 at 11:21:50AM +0200, Patrick Delaunay wrote:

> Align reset_cpu function with the next prototypes in
> sysreset.h or in cpu_func.h to solve compilation issue:
> 
>   void reset_cpu(void);
> 
> This patch solves the prototype conflict when cpu_func.h is
> included.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>

Applied to u-boot/master, thanks!

-- 
Tom

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

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

* Re: [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers
  2021-07-19  9:21 ` [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
@ 2021-07-29 16:49   ` Tom Rini
  0 siblings, 0 replies; 5+ messages in thread
From: Tom Rini @ 2021-07-29 16:49 UTC (permalink / raw)
  To: Patrick Delaunay
  Cc: u-boot, Patrice Chotard, mark.kettenis, Anastasiia Lukianenko,
	Harald Seiler, Oleksandr Andrushchenko, Simon Glass,
	Suneel Garapati, U-Boot STM32

[-- Attachment #1: Type: text/plain, Size: 876 bytes --]

On Mon, Jul 19, 2021 at 11:21:51AM +0200, Patrick Delaunay wrote:

> From: Patrice Chotard <patrice.chotard@foss.st.com>
> 
> At early U-Boot stage, before relocation, MMU is not yet configured
> and disabled. DDR may not be configured with the correct memory
> attributes (can be configured in MT_DEVICE instead of MT_MEMORY).
> 
> In this case, usage of memcpy_{from, to}io() may leads to synchronous
> abort in AARCH64 in case the normal memory address is not 64Bits aligned.
> 
> To avoid such situation, forbid usage of normal memory cast to (u64 *) in
> case MMU is not enabled.
> 
> Signed-off-by: Patrice Chotard <patrice.chotard@foss.st.com>
> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
> Cc: mark.kettenis@xs4all.nl
> Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>

Applied to u-boot/master, thanks!

-- 
Tom

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

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

end of thread, other threads:[~2021-07-29 16:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-19  9:21 [PATCH v2 0/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
2021-07-19  9:21 ` [PATCH v2 1/2] arm: use the correct prototype for reset_cpu function Patrick Delaunay
2021-07-29 16:49   ` Tom Rini
2021-07-19  9:21 ` [PATCH v2 2/2] arm64: Update memcpy_{from, to}io() helpers Patrick Delaunay
2021-07-29 16:49   ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.