diff mbox

[4/4] ARM: versatile: support configuring versatile machine for no-MMU

Message ID 1481093992-30520-2-git-send-email-gerg@uclinux.org (mailing list archive)
State New, archived
Headers show

Commit Message

Greg Ungerer Dec. 7, 2016, 6:59 a.m. UTC
Allow the arm versatile machine to be configured for no-MMU operation.
The approach taken is similar to the support for no-MMU arm v7 machines.

A new define, CONFIG_ARM_SINGLE_ARMV5, is used to enable a class of v5
core based machines that are supported for building with !CONFIG_MMU.
Currently only the versatile machine is configured to support this.

Older kernels had the ability to build the versatile machine with the MMU
disabled (!CONFIG_MMU). Recent changes to convert the versatile machine
to device tree lost this ability. (Although older kernels could be built
they did not run due to a bug in the IO_ADDRESS() mapping on this machine).

The motivation for this is that the versatile machine is well supported
in qemu. And this provides an excellent platform for development and
testing no-MMU support on ARM in general.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
---
 arch/arm/Kconfig                | 10 ++++++++++
 arch/arm/Kconfig.debug          |  3 ++-
 arch/arm/mach-versatile/Kconfig |  3 ++-
 3 files changed, 14 insertions(+), 2 deletions(-)

Comments

Linus Walleij Dec. 7, 2016, 2:11 p.m. UTC | #1
On Wed, Dec 7, 2016 at 7:59 AM, Greg Ungerer <gerg@uclinux.org> wrote:

> The motivation for this is that the versatile machine is well supported
> in qemu. And this provides an excellent platform for development and
> testing no-MMU support on ARM in general.
>
> Signed-off-by: Greg Ungerer <gerg@uclinux.org>

Pretty cool eh?

Have you tested it on real hardware?

Otherwise I can test it if I have a git branch
I can pull in and compile.

Another target I had in mind was the Integrator which
incidentally supports a bunch of the old noMMU core
tiles where we can swap in an ARM946, which I guess
could work with this?

> --- a/arch/arm/mach-versatile/Kconfig
> +++ b/arch/arm/mach-versatile/Kconfig
> @@ -1,12 +1,13 @@
>  config ARCH_VERSATILE
>         bool "ARM Ltd. Versatile family"
> -       depends on ARCH_MULTI_V5
> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
>         select ARM_AMBA
>         select ARM_TIMER_SP804
>         select ARM_VIC
>         select CLKSRC_VERSATILE
>         select COMMON_CLK_VERSATILE
>         select CPU_ARM926T
> +       select GPIOLIB

Not really related but I don't mind.

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
Vladimir Murzin Dec. 7, 2016, 2:33 p.m. UTC | #2
Hi Linus,

On 07/12/16 14:11, Linus Walleij wrote:
> Another target I had in mind was the Integrator which
> incidentally supports a bunch of the old noMMU core
> tiles where we can swap in an ARM946, which I guess
> could work with this?

Do you mind trying my "Allow NOMMU for MULTIPLATFORM" series [1]? Greg just
reported it did a trick for Versatile, there is a good chance it would work
for Integrator too ;)

[1] https://www.spinics.net/lists/arm-kernel/msg546823.html

Thanks
Vladimir
Greg Ungerer Dec. 7, 2016, 2:34 p.m. UTC | #3
Hi Linus,

On 08/12/16 00:11, Linus Walleij wrote:
> On Wed, Dec 7, 2016 at 7:59 AM, Greg Ungerer <gerg@uclinux.org> wrote:
>
>> The motivation for this is that the versatile machine is well supported
>> in qemu. And this provides an excellent platform for development and
>> testing no-MMU support on ARM in general.
>>
>> Signed-off-by: Greg Ungerer <gerg@uclinux.org>
>
> Pretty cool eh?

Yep :-)


> Have you tested it on real hardware?

No, I don't have a Versatile board, or access to one...


> Otherwise I can test it if I have a git branch
> I can pull in and compile.

I have been stashing the changes here for now:

git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu.git

in the armnommu branch.


> Another target I had in mind was the Integrator which
> incidentally supports a bunch of the old noMMU core
> tiles where we can swap in an ARM946, which I guess
> could work with this?

It should do, or at least should be able to be made to work with it.


>> --- a/arch/arm/mach-versatile/Kconfig
>> +++ b/arch/arm/mach-versatile/Kconfig
>> @@ -1,12 +1,13 @@
>>  config ARCH_VERSATILE
>>         bool "ARM Ltd. Versatile family"
>> -       depends on ARCH_MULTI_V5
>> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
>>         select ARM_AMBA
>>         select ARM_TIMER_SP804
>>         select ARM_VIC
>>         select CLKSRC_VERSATILE
>>         select COMMON_CLK_VERSATILE
>>         select CPU_ARM926T
>> +       select GPIOLIB
>
> Not really related but I don't mind.

No, probably strictly not. But without this here we lose CONFIG_GPIO
for the no-MMU case. When CONFIG_MMU was enabled it was being selected
via some other path through arch/arm/Kconfig - I don't recall at the
moment where exactly.


> Acked-by: Linus Walleij <linus.walleij@linaro.org>

Thanks
Greg
Greg Ungerer Dec. 9, 2016, 3:02 a.m. UTC | #4
Hi Vladimir,

On 08/12/16 00:33, Vladimir Murzin wrote:
> Hi Linus,
> 
> On 07/12/16 14:11, Linus Walleij wrote:
>> Another target I had in mind was the Integrator which
>> incidentally supports a bunch of the old noMMU core
>> tiles where we can swap in an ARM946, which I guess
>> could work with this?
> 
> Do you mind trying my "Allow NOMMU for MULTIPLATFORM" series [1]? Greg just
> reported it did a trick for Versatile, there is a good chance it would work
> for Integrator too ;)
> 
> [1] https://www.spinics.net/lists/arm-kernel/msg546823.html

I won't speak for Linus...

But I tried building with your patches for Integrator/CP and
that builds (with an appropriate configuration) with CONFIG_MMU
disabled and runs successfully in qemu (with machine target
"integratorcp"). No other patches required.

Regards
Greg
Russell King (Oracle) Dec. 9, 2016, 8:29 p.m. UTC | #5
On Wed, Dec 07, 2016 at 02:33:53PM +0000, Vladimir Murzin wrote:
> Hi Linus,
> 
> On 07/12/16 14:11, Linus Walleij wrote:
> > Another target I had in mind was the Integrator which
> > incidentally supports a bunch of the old noMMU core
> > tiles where we can swap in an ARM946, which I guess
> > could work with this?
> 
> Do you mind trying my "Allow NOMMU for MULTIPLATFORM" series [1]? Greg just
> reported it did a trick for Versatile, there is a good chance it would work
> for Integrator too ;)

My views on gluing multiplatform and nommu together have already been
stated several times, and remain unchanged.

Greg's patch looks almost sane, but what I'd like to see is instead of
directly doing this:

 config ARCH_VERSATILE
        bool "ARM Ltd. Versatile family"
-       depends on ARCH_MULTI_V5
+       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5

we could do:

 config ARCH_VERSATILE
        bool "ARM Ltd. Versatile family" if ARCH_MULTI_V5
-       depends on ARCH_MULTI_V5
+       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
	default y if ARM_SINGLE_ARCH_VERSATILE

adding the versatile entry in the upper level choice (where it always used
to be) but with "ARM_SINGLE_ARCH_VERSATILE" instead.

This would have the effect of allowing the multiplatform-converted stuff
to start being used on nommu (again) but without running into the problems
I've highlighted.
Greg Ungerer Dec. 12, 2016, 5:48 a.m. UTC | #6
On 10/12/16 06:29, Russell King - ARM Linux wrote:
> On Wed, Dec 07, 2016 at 02:33:53PM +0000, Vladimir Murzin wrote:
>> Hi Linus,
>>
>> On 07/12/16 14:11, Linus Walleij wrote:
>>> Another target I had in mind was the Integrator which
>>> incidentally supports a bunch of the old noMMU core
>>> tiles where we can swap in an ARM946, which I guess
>>> could work with this?
>>
>> Do you mind trying my "Allow NOMMU for MULTIPLATFORM" series [1]? Greg just
>> reported it did a trick for Versatile, there is a good chance it would work
>> for Integrator too ;)
> 
> My views on gluing multiplatform and nommu together have already been
> stated several times, and remain unchanged.
> 
> Greg's patch looks almost sane, but what I'd like to see is instead of
> directly doing this:
> 
>  config ARCH_VERSATILE
>         bool "ARM Ltd. Versatile family"
> -       depends on ARCH_MULTI_V5
> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
> 
> we could do:
> 
>  config ARCH_VERSATILE
>         bool "ARM Ltd. Versatile family" if ARCH_MULTI_V5
> -       depends on ARCH_MULTI_V5
> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
> 	default y if ARM_SINGLE_ARCH_VERSATILE
> 
> adding the versatile entry in the upper level choice (where it always used
> to be) but with "ARM_SINGLE_ARCH_VERSATILE" instead.
> 
> This would have the effect of allowing the multiplatform-converted stuff
> to start being used on nommu (again) but without running into the problems
> I've highlighted.

Thanks for the feedback Russell. Let me re-spin this patch with
this in mind.

Regards
Greg
Vladimir Murzin Dec. 12, 2016, 1:06 p.m. UTC | #7
On 09/12/16 20:29, Russell King - ARM Linux wrote:
> On Wed, Dec 07, 2016 at 02:33:53PM +0000, Vladimir Murzin wrote:
>> Hi Linus,
>>
>> On 07/12/16 14:11, Linus Walleij wrote:
>>> Another target I had in mind was the Integrator which
>>> incidentally supports a bunch of the old noMMU core
>>> tiles where we can swap in an ARM946, which I guess
>>> could work with this?
>>
>> Do you mind trying my "Allow NOMMU for MULTIPLATFORM" series [1]? Greg just
>> reported it did a trick for Versatile, there is a good chance it would work
>> for Integrator too ;)
> 
> My views on gluing multiplatform and nommu together have already been
> stated several times, and remain unchanged.
> 

Should I treat this as the whole series is discarded or there is something you
can pick up?

Cheers
Vladimir

> Greg's patch looks almost sane, but what I'd like to see is instead of
> directly doing this:
> 
>  config ARCH_VERSATILE
>         bool "ARM Ltd. Versatile family"
> -       depends on ARCH_MULTI_V5
> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
> 
> we could do:
> 
>  config ARCH_VERSATILE
>         bool "ARM Ltd. Versatile family" if ARCH_MULTI_V5
> -       depends on ARCH_MULTI_V5
> +       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
> 	default y if ARM_SINGLE_ARCH_VERSATILE
> 
> adding the versatile entry in the upper level choice (where it always used
> to be) but with "ARM_SINGLE_ARCH_VERSATILE" instead.
> 
> This would have the effect of allowing the multiplatform-converted stuff
> to start being used on nommu (again) but without running into the problems
> I've highlighted.
>
diff mbox

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b5d529f..74a0e7a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -353,6 +353,16 @@  config ARM_SINGLE_ARMV7M
 	select SPARSE_IRQ
 	select USE_OF
 
+config ARM_SINGLE_ARMV5
+	bool "ARMv5 based platforms (ARM926T)"
+	depends on !MMU
+	select AUTO_ZRELADDR
+	select CLKSRC_OF
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select SPARSE_IRQ
+	select USE_OF
+
 config ARCH_GEMINI
 	bool "Cortina Systems Gemini"
 	select CLKSRC_MMIO
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index d83f7c3..483709e 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -1712,7 +1712,8 @@  config DEBUG_UNCOMPRESS
 config UNCOMPRESS_INCLUDE
 	string
 	default "debug/uncompress.h" if ARCH_MULTIPLATFORM || ARCH_MSM || \
-					PLAT_SAMSUNG || ARM_SINGLE_ARMV7M
+					PLAT_SAMSUNG || ARM_SINGLE_ARMV7M || \
+					ARM_SINGLE_ARMV5
 	default "mach/uncompress.h"
 
 config EARLY_PRINTK
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
index c257d40..2613f0f 100644
--- a/arch/arm/mach-versatile/Kconfig
+++ b/arch/arm/mach-versatile/Kconfig
@@ -1,12 +1,13 @@ 
 config ARCH_VERSATILE
 	bool "ARM Ltd. Versatile family"
-	depends on ARCH_MULTI_V5
+	depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5
 	select ARM_AMBA
 	select ARM_TIMER_SP804
 	select ARM_VIC
 	select CLKSRC_VERSATILE
 	select COMMON_CLK_VERSATILE
 	select CPU_ARM926T
+	select GPIOLIB
 	select ICST
 	select MFD_SYSCON
 	select PLAT_VERSATILE