Re: [PATCH v5 3/3] arm64: Kconfig: Enable usage of optimized memset/memcpy/memmove

2021-09-02 Thread Tom Rini
On Thu, Sep 02, 2021 at 04:37:41PM +0200, Stefan Roese wrote:
> On 02.09.21 16:17, Tom Rini wrote:
> > On Tue, Aug 17, 2021 at 10:48:27AM +0200, Stefan Roese wrote:
> > 
> > > This patch enables the use of the optimized memset(), memmove() &
> > > memcpy() versions recently added on ARM64.
> > > 
> > > Signed-off-by: Stefan Roese 
> > > ---
> > > 
> > > Changes in v5:
> > > - memmove is now auto-selected (or deselected) with the memcpy
> > >Kconfig selection as it's entry is the same as memcpy for ARM64
> > > 
> > > Changes in v3:
> > > - Add memmove as well
> > > 
> > >   arch/arm/Kconfig  | 37 +--
> > >   arch/arm/include/asm/string.h |  4 
> > >   2 files changed, 35 insertions(+), 6 deletions(-)
> > 
> > This gives a ton of build failures for me, using gcc-9.2.0 (from
> > kernel.org) along the lines of:
> > Building current source for 1 boards (1 thread, 16 jobs per thread)
> > aarch64:  +   j721e_evm_a72
> > +(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memset-arm64.o: 
> > unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
> > +(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memcpy-arm64.o: 
> > unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
> > +(j721e_evm_a72) aarch64-linux-ld.bfd: warning: 
> > arch/arm/lib/memset-arm64.o: unsupported GNU_PROPERTY_TYPE (5) type: 
> > 0xc000
> > +(j721e_evm_a72) aarch64-linux-ld.bfd: warning: 
> > arch/arm/lib/memcpy-arm64.o: unsupported GNU_PROPERTY_TYPE (5) type: 
> > 0xc000
> > +(j721e_evm_a72) aarch64-linux-objcopy: warning: u-boot: unsupported 
> > GNU_PROPERTY_TYPE (5) type: 0xc000
> > +(j721e_evm_a72) aarch64-linux-objdump: warning: u-boot: unsupported 
> > GNU_PROPERTY_TYPE (5) type: 0xc000
> > +(j721e_evm_a72) aarch64-linux-nm: warning: u-boot: unsupported 
> > GNU_PROPERTY_TYPE (5) type: 0xc000
> > +(j721e_evm_a72) tools/relocate-rela: bad rela bounds
> > +(j721e_evm_a72) make[1]: *** [u-boot-nodtb.bin] Error 1
> > +(j721e_evm_a72) make: *** [sub-make] Error 2
> 
> I did not notice this, as I'm currently compiling locally with gcc-10.
> Using gcc-9.4 also from kernel.org also works fine. gcc-9.2 throws these
> errors.

I suppose this also means I should finish my local move up to gcc-11.1.0
to match CI, then, or whack the last of my local scripts to fire off
Docker rather than not.

> Should we switch to gcc-9.4? I could also add something like this as a
> dependency to the Kconfig entries:
> 
> https://patchwork.kernel.org/project/linux-arm-kernel/patch/20200619123550.48098-1-broo...@kernel.org/

We have GCC_VERSION available in Kconfig, so yes, lets go with that in a
v6.

-- 
Tom


signature.asc
Description: PGP signature


Re: [PATCH v5 3/3] arm64: Kconfig: Enable usage of optimized memset/memcpy/memmove

2021-09-02 Thread Stefan Roese

On 02.09.21 16:17, Tom Rini wrote:

On Tue, Aug 17, 2021 at 10:48:27AM +0200, Stefan Roese wrote:


This patch enables the use of the optimized memset(), memmove() &
memcpy() versions recently added on ARM64.

Signed-off-by: Stefan Roese 
---

Changes in v5:
- memmove is now auto-selected (or deselected) with the memcpy
   Kconfig selection as it's entry is the same as memcpy for ARM64

Changes in v3:
- Add memmove as well

  arch/arm/Kconfig  | 37 +--
  arch/arm/include/asm/string.h |  4 
  2 files changed, 35 insertions(+), 6 deletions(-)


This gives a ton of build failures for me, using gcc-9.2.0 (from
kernel.org) along the lines of:
Building current source for 1 boards (1 thread, 16 jobs per thread)
aarch64:  +   j721e_evm_a72
+(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memset-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memcpy-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ld.bfd: warning: arch/arm/lib/memset-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ld.bfd: warning: arch/arm/lib/memcpy-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-objcopy: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-objdump: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-nm: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) tools/relocate-rela: bad rela bounds
+(j721e_evm_a72) make[1]: *** [u-boot-nodtb.bin] Error 1
+(j721e_evm_a72) make: *** [sub-make] Error 2


I did not notice this, as I'm currently compiling locally with gcc-10.
Using gcc-9.4 also from kernel.org also works fine. gcc-9.2 throws these
errors.

Should we switch to gcc-9.4? I could also add something like this as a
dependency to the Kconfig entries:

https://patchwork.kernel.org/project/linux-arm-kernel/patch/20200619123550.48098-1-broo...@kernel.org/

Thanks,
Stefan


Re: [PATCH v5 3/3] arm64: Kconfig: Enable usage of optimized memset/memcpy/memmove

2021-09-02 Thread Tom Rini
On Tue, Aug 17, 2021 at 10:48:27AM +0200, Stefan Roese wrote:

> This patch enables the use of the optimized memset(), memmove() &
> memcpy() versions recently added on ARM64.
> 
> Signed-off-by: Stefan Roese 
> ---
> 
> Changes in v5:
> - memmove is now auto-selected (or deselected) with the memcpy
>   Kconfig selection as it's entry is the same as memcpy for ARM64
> 
> Changes in v3:
> - Add memmove as well
> 
>  arch/arm/Kconfig  | 37 +--
>  arch/arm/include/asm/string.h |  4 
>  2 files changed, 35 insertions(+), 6 deletions(-)

This gives a ton of build failures for me, using gcc-9.2.0 (from
kernel.org) along the lines of:
Building current source for 1 boards (1 thread, 16 jobs per thread)
   aarch64:  +   j721e_evm_a72
+(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memset-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ar: warning: arch/arm/lib/memcpy-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ld.bfd: warning: arch/arm/lib/memset-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-ld.bfd: warning: arch/arm/lib/memcpy-arm64.o: 
unsupported GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-objcopy: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-objdump: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) aarch64-linux-nm: warning: u-boot: unsupported 
GNU_PROPERTY_TYPE (5) type: 0xc000
+(j721e_evm_a72) tools/relocate-rela: bad rela bounds
+(j721e_evm_a72) make[1]: *** [u-boot-nodtb.bin] Error 1
+(j721e_evm_a72) make: *** [sub-make] Error 2

-- 
Tom


signature.asc
Description: PGP signature


[PATCH v5 3/3] arm64: Kconfig: Enable usage of optimized memset/memcpy/memmove

2021-08-17 Thread Stefan Roese
This patch enables the use of the optimized memset(), memmove() &
memcpy() versions recently added on ARM64.

Signed-off-by: Stefan Roese 

---

Changes in v5:
- memmove is now auto-selected (or deselected) with the memcpy
  Kconfig selection as it's entry is the same as memcpy for ARM64

Changes in v3:
- Add memmove as well

 arch/arm/Kconfig  | 37 +--
 arch/arm/include/asm/string.h |  4 
 2 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 55a9c3acef8d..0cf29c702dde 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -457,7 +457,6 @@ config ARM_CORTEX_CPU_IS_UP
 config USE_ARCH_MEMCPY
bool "Use an assembly optimized implementation of memcpy"
default y
-   depends on !ARM64
help
  Enable the generation of an optimized version of memcpy.
  Such an implementation may be faster under some conditions
@@ -466,7 +465,7 @@ config USE_ARCH_MEMCPY
 config SPL_USE_ARCH_MEMCPY
bool "Use an assembly optimized implementation of memcpy for SPL"
default y if USE_ARCH_MEMCPY
-   depends on !ARM64 && SPL
+   depends on SPL
help
  Enable the generation of an optimized version of memcpy.
  Such an implementation may be faster under some conditions
@@ -475,16 +474,42 @@ config SPL_USE_ARCH_MEMCPY
 config TPL_USE_ARCH_MEMCPY
bool "Use an assembly optimized implementation of memcpy for TPL"
default y if USE_ARCH_MEMCPY
-   depends on !ARM64 && TPL
+   depends on TPL
help
  Enable the generation of an optimized version of memcpy.
  Such an implementation may be faster under some conditions
  but may increase the binary size.
 
+config USE_ARCH_MEMMOVE
+   bool "Use an assembly optimized implementation of memmove" if !ARM64
+   default USE_ARCH_MEMCPY if ARM64
+   depends on ARM64
+   help
+ Enable the generation of an optimized version of memmove.
+ Such an implementation may be faster under some conditions
+ but may increase the binary size.
+
+config SPL_USE_ARCH_MEMMOVE
+   bool "Use an assembly optimized implementation of memmove for SPL" if 
!ARM64
+   default SPL_USE_ARCH_MEMCPY if ARM64
+   depends on SPL && ARM64
+   help
+ Enable the generation of an optimized version of memmove.
+ Such an implementation may be faster under some conditions
+ but may increase the binary size.
+
+config TPL_USE_ARCH_MEMMOVE
+   bool "Use an assembly optimized implementation of memmove for TPL" if 
!ARM64
+   default TPL_USE_ARCH_MEMCPY if ARM64
+   depends on TPL && ARM64
+   help
+ Enable the generation of an optimized version of memmove.
+ Such an implementation may be faster under some conditions
+ but may increase the binary size.
+
 config USE_ARCH_MEMSET
bool "Use an assembly optimized implementation of memset"
default y
-   depends on !ARM64
help
  Enable the generation of an optimized version of memset.
  Such an implementation may be faster under some conditions
@@ -493,7 +518,7 @@ config USE_ARCH_MEMSET
 config SPL_USE_ARCH_MEMSET
bool "Use an assembly optimized implementation of memset for SPL"
default y if USE_ARCH_MEMSET
-   depends on !ARM64 && SPL
+   depends on SPL
help
  Enable the generation of an optimized version of memset.
  Such an implementation may be faster under some conditions
@@ -502,7 +527,7 @@ config SPL_USE_ARCH_MEMSET
 config TPL_USE_ARCH_MEMSET
bool "Use an assembly optimized implementation of memset for TPL"
default y if USE_ARCH_MEMSET
-   depends on !ARM64 && TPL
+   depends on TPL
help
  Enable the generation of an optimized version of memset.
  Such an implementation may be faster under some conditions
diff --git a/arch/arm/include/asm/string.h b/arch/arm/include/asm/string.h
index 11eaa34fab8c..ead3f2c35643 100644
--- a/arch/arm/include/asm/string.h
+++ b/arch/arm/include/asm/string.h
@@ -19,7 +19,11 @@ extern char * strchr(const char * s, int c);
 #endif
 extern void * memcpy(void *, const void *, __kernel_size_t);
 
+#if CONFIG_IS_ENABLED(USE_ARCH_MEMMOVE)
+#define __HAVE_ARCH_MEMMOVE
+#else
 #undef __HAVE_ARCH_MEMMOVE
+#endif
 extern void * memmove(void *, const void *, __kernel_size_t);
 
 #undef __HAVE_ARCH_MEMCHR
-- 
2.33.0