Skip to contentSkip to conversation

ARM: versatile: empty Makefile.boot needed for no-MMU compile

PATCH New Greg Ungerer 4 participants 10 messages Dec 7, 2016 – Dec 12, 2016

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 3/4 ARM: versatile: empty Makefile.boot needed for no-MMU compile

To compile the arm versatile board with the MMU disabled (!CONFIG_MMU) a Makefile.boot is required. Without it you get:

SYSMAP System.map
arch/arm/boot/Makefile:15: arch/arm/mach-versatile//Makefile.boot: No such file or directory make[2]: *** No rule to make target `arch/arm/mach-versatile//Makefile.boot'. Stop.

Create an empty Makefile.boot for the versatile machine. This is a copy of the other empty machine Makefile.boot files. (A few have this same commented empty file: stm32, ep93xx, lpc18xx, efm32 and vexpress).

---
 arch/arm/mach-versatile/Makefile.boot | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 arch/arm/mach-versatile/Makefile.boot
arch/arm/mach-versatile/Makefile.boot new file +3 -0
new file mode 100644
index 0000000..eacfc3f
@@ -0,0 +1,3 @@
+# Empty file waiting for deletion once Makefile.boot isn't needed any more.
+# Patch waits for application at
+# http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=7889/1 .
Signature · 1 line
1.9.1
#1 lore raw

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

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.

---
 arch/arm/Kconfig                | 10 ++++++++++
 arch/arm/Kconfig.debug          |  3 ++-
 arch/arm/mach-versatile/Kconfig |  3 ++-
 3 files changed, 14 insertions(+), 2 deletions(-)
arch/arm/Kconfig +10 -0
index b5d529f..74a0e7a 100644
@@ -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
arch/arm/Kconfig.debug +2 -1
index d83f7c3..483709e 100644
@@ -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
arch/arm/mach-versatile/Kconfig +2 -1
index c257d40..2613f0f 100644
@@ -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
Signature · 1 line
1.9.1
#2 lore raw

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

Quoted 5 lines · Greg Ungerer

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.

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?

Quoted 4 lines
arch/arm/mach-versatile/Kconfig +0 -0
@@ -1,12 +1,13 @@
 config ARCH_VERSATILE

arch/arm/mach-versatile/Kconfig line 10

Quoted 10 lines
arch/arm/mach-versatile/Kconfig +2 -1
        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.

Yours,
Linus Walleij

#3 lore raw

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

Hi Linus,

Quoted 4 lines · Linus Walleij

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

#4 lore raw

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

Hi Vladimir,

Quoted 8 lines · Vladimir Murzin

Hi Linus,

Quoted 4 lines · Linus Walleij

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?

Quoted 5 lines

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

#5 lore raw

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

In reply to Vladimir Murzin
Quoted 11 lines · Vladimir Murzin

Hi Linus,

Quoted 4 lines · Linus Walleij

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.

Signature · 3 lines
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
#6 lore raw

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

Quoted 32 lines · Russell King - ARM Linux
Quoted 11 lines · Vladimir Murzin

Hi Linus,

Quoted 4 lines · Linus Walleij

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"

arch/arm/mach-versatile/Kconfig +1 -1
-       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

arch/arm/mach-versatile/Kconfig +1 -1
-       depends on ARCH_MULTI_V5
+       depends on ARCH_MULTI_V5 || ARM_SINGLE_ARMV5

default y if ARM_SINGLE_ARCH_VERSATILE

Quoted 6 lines

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

#7 lore raw

PATCH v2 4/4 ARM: versatile: support configuring versatile machine for, no-MMU

In reply to Russell King - ARM Linux

Allow the arm versatile machine to be configured for no-MMU operation.

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.

This patch adds a versatile platform selection in the upper level arm system type menu - where it appeared in older kernel versions - when configuring for the no-MMU case. There is no visible change to the way versatile is selected for the MMU enabled case.

---
 arch/arm/Kconfig                | 11 +++++++++++
 arch/arm/Kconfig.debug          |  3 ++-
 arch/arm/mach-versatile/Kconfig |  5 +++--
 3 files changed, 16 insertions(+), 3 deletions(-)
arch/arm/Kconfig +11 -0
index b5d529f..8960e7a 100644
@@ -353,6 +353,17 @@ config ARM_SINGLE_ARMV7M
 	select SPARSE_IRQ
 	select USE_OF
 
+config ARM_SINGLE_ARCH_VERSATILE
+	bool "ARM Ltd. Versatile family"
+	depends on !MMU
+	select AUTO_ZRELADDR
+	select CLKSRC_OF
+	select COMMON_CLK
+	select GENERIC_CLOCKEVENTS
+	select GPIOLIB
+	select SPARSE_IRQ
+	select USE_OF
+
 config ARCH_GEMINI
 	bool "Cortina Systems Gemini"
 	select CLKSRC_MMIO
arch/arm/Kconfig.debug +2 -1
index d83f7c3..3f393e4 100644
@@ -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_ARCH_VERSATILE
 	default "mach/uncompress.h"
 
 config EARLY_PRINTK
arch/arm/mach-versatile/Kconfig +3 -2
index c257d40..c03a8c8 100644
@@ -1,6 +1,7 @@
 config ARCH_VERSATILE
-	bool "ARM Ltd. Versatile family"
-	depends on ARCH_MULTI_V5
+	bool "ARM Ltd. Versatile family" if ARCH_MULTI_V5
+	depends on ARCH_MULTI_V5 || ARM_SINGLE_ARCH_VERSATILE
+	default y if ARM_SINGLE_ARCH_VERSATILE
 	select ARM_AMBA
 	select ARM_TIMER_SP804
 	select ARM_VIC
Signature · 1 line
1.9.1
#8 lore raw

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

In reply to Russell King - ARM Linux
Quoted 9 lines · Russell King - ARM Linux
Quoted 8 lines · Vladimir Murzin

Hi Linus,

Quoted 4 lines · Linus Walleij

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?

Quoted 7 lines
Quoted 3 lines

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

Quoted 23 lines

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"

arch/arm/mach-versatile/Kconfig +1 -1
-       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

arch/arm/mach-versatile/Kconfig +1 -1
-       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.

#9 lore raw

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

In reply to Linus Walleij

Hi Linus,

Quoted 9 lines · Linus Walleij
Quoted 5 lines · Greg Ungerer

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.

Pretty cool eh?

Yep :-)

Quoted 1 line

Have you tested it on real hardware?

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

Quoted 2 lines

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.

Quoted 4 lines

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.

Quoted 8 lines
Quoted 8 lines
arch/arm/mach-versatile/Kconfig +1 -1
@@ -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
Quoted 8 lines

arch/arm/mach-versatile/Kconfig line 10

Quoted 6 lines
arch/arm/mach-versatile/Kconfig +1 -0
        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.

Quoted 1 line

Thanks
Greg