2019-09-19 16:59:26

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] ARM: aspeed: ast2500 is ARMv6K

Linux supports both the original ARMv6 level (early ARM1136) and ARMv6K
(later ARM1136, ARM1176 and ARM11mpcore).

ast2500 falls into the second categoy, being based on arm1176jzf-s.
This is enabled by default when using ARCH_MULTI_V6, so we should
not 'select CPU_V6'.

Removing this will lead to more efficient use of atomic instructions.

Signed-off-by: Arnd Bergmann <[email protected]>
---
arch/arm/mach-aspeed/Kconfig | 1 -
1 file changed, 1 deletion(-)

diff --git a/arch/arm/mach-aspeed/Kconfig b/arch/arm/mach-aspeed/Kconfig
index a293137f5814..163931a03136 100644
--- a/arch/arm/mach-aspeed/Kconfig
+++ b/arch/arm/mach-aspeed/Kconfig
@@ -26,7 +26,6 @@ config MACH_ASPEED_G4
config MACH_ASPEED_G5
bool "Aspeed SoC 5th Generation"
depends on ARCH_MULTI_V6
- select CPU_V6
select PINCTRL_ASPEED_G5 if !CC_IS_CLANG
select FTTMR010_TIMER
help
--
2.20.0


2019-09-20 16:37:39

by Andrew Jeffery

[permalink] [raw]
Subject: Re: [PATCH] ARM: aspeed: ast2500 is ARMv6K



On Thu, 19 Sep 2019, at 23:56, Arnd Bergmann wrote:
> Linux supports both the original ARMv6 level (early ARM1136) and ARMv6K
> (later ARM1136, ARM1176 and ARM11mpcore).
>
> ast2500 falls into the second categoy, being based on arm1176jzf-s.
> This is enabled by default when using ARCH_MULTI_V6, so we should
> not 'select CPU_V6'.
>
> Removing this will lead to more efficient use of atomic instructions.
>
> Signed-off-by: Arnd Bergmann <[email protected]>

Reviewed-by: Andrew Jeffery <[email protected]>

2019-09-20 16:57:11

by Joel Stanley

[permalink] [raw]
Subject: Re: [PATCH] ARM: aspeed: ast2500 is ARMv6K

On Thu, 19 Sep 2019 at 14:27, Arnd Bergmann <[email protected]> wrote:
>
> Linux supports both the original ARMv6 level (early ARM1136) and ARMv6K
> (later ARM1136, ARM1176 and ARM11mpcore).
>
> ast2500 falls into the second categoy, being based on arm1176jzf-s.
> This is enabled by default when using ARCH_MULTI_V6, so we should
> not 'select CPU_V6'.
>
> Removing this will lead to more efficient use of atomic instructions.

Wow, nice find.

>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-aspeed/Kconfig | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/arm/mach-aspeed/Kconfig b/arch/arm/mach-aspeed/Kconfig
> index a293137f5814..163931a03136 100644
> --- a/arch/arm/mach-aspeed/Kconfig
> +++ b/arch/arm/mach-aspeed/Kconfig
> @@ -26,7 +26,6 @@ config MACH_ASPEED_G4
> config MACH_ASPEED_G5
> bool "Aspeed SoC 5th Generation"
> depends on ARCH_MULTI_V6
> - select CPU_V6
> select PINCTRL_ASPEED_G5 if !CC_IS_CLANG

I can't find any trees with !CC_IS_CLANG here. Is there a problem
building our pinmux driver with Clang?

I tested with this patch:

--- a/arch/arm/mach-aspeed/Kconfig
+++ b/arch/arm/mach-aspeed/Kconfig
@@ -25,8 +25,8 @@ config MACH_ASPEED_G4

config MACH_ASPEED_G5
bool "Aspeed SoC 5th Generation"
+ # This implies ARMv6K which covers the ARM1176
depends on ARCH_MULTI_V6
- select CPU_V6
select PINCTRL_ASPEED_G5
select FTTMR010_TIMER
help

If you want to apply that as a fix for 5.4 I would be happy with that.

Fixes: 8c2ed9bcfbeb ("arm: Add Aspeed machine")
Reviewed-by: Joel Stanley <[email protected]>

Cheers,

Joel

2019-09-20 16:57:19

by Andrew Jeffery

[permalink] [raw]
Subject: Re: [PATCH] ARM: aspeed: ast2500 is ARMv6K



On Thu, 19 Sep 2019, at 23:56, Arnd Bergmann wrote:
> Linux supports both the original ARMv6 level (early ARM1136) and ARMv6K
> (later ARM1136, ARM1176 and ARM11mpcore).
>
> ast2500 falls into the second categoy, being based on arm1176jzf-s.
> This is enabled by default when using ARCH_MULTI_V6, so we should
> not 'select CPU_V6'.
>
> Removing this will lead to more efficient use of atomic instructions.
>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> arch/arm/mach-aspeed/Kconfig | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/arch/arm/mach-aspeed/Kconfig b/arch/arm/mach-aspeed/Kconfig
> index a293137f5814..163931a03136 100644
> --- a/arch/arm/mach-aspeed/Kconfig
> +++ b/arch/arm/mach-aspeed/Kconfig
> @@ -26,7 +26,6 @@ config MACH_ASPEED_G4
> config MACH_ASPEED_G5
> bool "Aspeed SoC 5th Generation"
> depends on ARCH_MULTI_V6
> - select CPU_V6
> select PINCTRL_ASPEED_G5 if !CC_IS_CLANG

Unrelated, but I'm intrigued by this. Looks like I should try compile it with clang
and fix the fallout.

Andrew

2019-09-20 17:42:50

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] ARM: aspeed: ast2500 is ARMv6K

On Fri, Sep 20, 2019 at 7:51 AM Joel Stanley <[email protected]> wrote:
> On Thu, 19 Sep 2019 at 14:27, Arnd Bergmann <[email protected]> wrote:

> > Signed-off-by: Arnd Bergmann <[email protected]>
> > ---
> > arch/arm/mach-aspeed/Kconfig | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/arch/arm/mach-aspeed/Kconfig b/arch/arm/mach-aspeed/Kconfig
> > index a293137f5814..163931a03136 100644
> > --- a/arch/arm/mach-aspeed/Kconfig
> > +++ b/arch/arm/mach-aspeed/Kconfig
> > @@ -26,7 +26,6 @@ config MACH_ASPEED_G4
> > config MACH_ASPEED_G5
> > bool "Aspeed SoC 5th Generation"
> > depends on ARCH_MULTI_V6
> > - select CPU_V6
> > select PINCTRL_ASPEED_G5 if !CC_IS_CLANG
>
> I can't find any trees with !CC_IS_CLANG here. Is there a problem
> building our pinmux driver with Clang?

This was an unrelated change from my local randconfig tree.

Your driver uncovered a bug in clang that is now fixed, the driver
itself is fine, see https://bugs.llvm.org/show_bug.cgi?id=43243

> I tested with this patch:
> --- a/arch/arm/mach-aspeed/Kconfig
> +++ b/arch/arm/mach-aspeed/Kconfig
> @@ -25,8 +25,8 @@ config MACH_ASPEED_G4
>
> config MACH_ASPEED_G5
> bool "Aspeed SoC 5th Generation"
> + # This implies ARMv6K which covers the ARM1176
> depends on ARCH_MULTI_V6
> - select CPU_V6
> select PINCTRL_ASPEED_G5
> select FTTMR010_TIMER
> help
>
> If you want to apply that as a fix for 5.4 I would be happy with that.
>
> Fixes: 8c2ed9bcfbeb ("arm: Add Aspeed machine")
> Reviewed-by: Joel Stanley <[email protected]>

Applied to arm/fixes now.

Arnd