linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] ARM: default machine descriptor for multiplatform
@ 2013-04-12 15:11 Arnd Bergmann
  2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
  2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
  0 siblings, 2 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:11 UTC (permalink / raw)
  To: linux-arm-kernel

Since we now have default implementations for init_time and init_irq,
the init_machine callback is the only one that is not yet optional,
but since simple DT based platforms all have the same
of_platform_populate function call in there, we can consolidate them
as well, and then actually boot with a completely empty machine_desc.
Unofortunately we cannot just default to an empty init_machine: We
cannot call of_platform_populate before init_machine because that
does not work in case of auxdata, and we cannot call it after
init_machine either because the machine might need to run code
after adding the devices.

To take the final step, this adds support for booting without defining
any machine_desc whatsoever.

For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
global machine descriptor that never matches any machine but is
used as a fallback if nothing else matches. We assume that without
CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
is built for, so we still retain the build-time warning for missing
machine descriptors and the run-time warning when the platform does not
match in that case.

In the case that we run on a multiplatform kernel and the machine
provides a fully populated device tree, we attempt to keep booting,
hoping that no machine specific callbacks are necessary.

Finally, this also removes the misguided "select ARCH_VEXPRESS" that
was only added to avoid a build error for allnoconfig kernels.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>
---
 arch/arm/Kconfig          |  1 -
 arch/arm/kernel/devtree.c |  9 ++++++++-
 arch/arm/kernel/setup.c   | 13 +++++++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1cacda4..e67d49d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1014,7 +1014,6 @@ config ARCH_MULTI_V7
 	bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
 	default y
 	select ARCH_MULTI_V6_V7
-	select ARCH_VEXPRESS
 	select CPU_V7
 
 config ARCH_MULTI_V6_V7
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 70f1bde..e6e34ba 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -180,6 +180,13 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
 	unsigned long dt_root;
 	const char *model;
 
+	if (IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
+		DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
+		MACHINE_END
+
+		mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT;
+	}
+
 	if (!dt_phys)
 		return NULL;
 
@@ -199,7 +206,7 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
 			mdesc_score = score;
 		}
 	}
-	if (!mdesc_best) {
+	if (!mdesc_best && !IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
 		const char *prop;
 		long size;
 
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index d343a6c..8ea8d68 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -18,6 +18,7 @@
 #include <linux/bootmem.h>
 #include <linux/seq_file.h>
 #include <linux/screen_info.h>
+#include <linux/of_platform.h>
 #include <linux/init.h>
 #include <linux/kexec.h>
 #include <linux/of_fdt.h>
@@ -660,9 +661,17 @@ struct screen_info screen_info = {
 
 static int __init customize_machine(void)
 {
-	/* customizes platform devices, or adds new ones */
+	/*
+	 * customizes platform devices, or adds new ones
+	 * On DT based machines, we fall back to populating the
+	 * machine from the device tree, if no callback is provided,
+	 * otherwise we would always need an init_machine callback.
+	 */
 	if (machine_desc->init_machine)
 		machine_desc->init_machine();
+	else
+		of_platform_populate(NULL, of_default_bus_match_table,
+					NULL, NULL);
 	return 0;
 }
 arch_initcall(customize_machine);
@@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
 
 	setup_processor();
 	mdesc = setup_machine_fdt(__atags_pointer);
-	if (!mdesc)
+	if (!mdesc && __machine_arch_type != ~0)
 		mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
 	machine_desc = mdesc;
 	machine_name = mdesc->name;
-- 
1.8.1.2

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

* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
  2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
@ 2013-04-12 15:11 ` Arnd Bergmann
  2013-04-12 15:19   ` Arnd Bergmann
                     ` (2 more replies)
  2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
  1 sibling, 3 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:11 UTC (permalink / raw)
  To: linux-arm-kernel

The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
NULL) is now implied by having no init_machine callback in the machine
descriptor, so we can save a couple of lines in those machines that
do not need to do anything else.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Nicolas Pitre <nico@linaro.org>
Cc: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>
---
 arch/arm/mach-at91/board-dt.c           |  6 ------
 arch/arm/mach-at91/board-rm9200-dt.c    |  6 ------
 arch/arm/mach-exynos/mach-exynos4-dt.c  |  7 -------
 arch/arm/mach-imx/imx25-dt.c            |  6 ------
 arch/arm/mach-imx/imx31-dt.c            |  6 ------
 arch/arm/mach-imx/imx51-dt.c            |  6 ------
 arch/arm/mach-msm/board-dt-8660.c       | 11 -----------
 arch/arm/mach-msm/board-dt-8960.c       |  6 ------
 arch/arm/mach-tegra/board-dt-tegra114.c |  6 ------
 arch/arm/mach-tegra/board-dt-tegra30.c  |  6 ------
 arch/arm/mach-virt/virt.c               |  6 ------
 11 files changed, 72 deletions(-)

diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
index 8db3013..9903579 100644
--- a/arch/arm/mach-at91/board-dt.c
+++ b/arch/arm/mach-at91/board-dt.c
@@ -37,11 +37,6 @@ static void __init at91_dt_init_irq(void)
 	of_irq_init(irq_of_match);
 }
 
-static void __init at91_dt_device_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char *at91_dt_board_compat[] __initdata = {
 	"atmel,at91sam9",
 	NULL
@@ -54,6 +49,5 @@ DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
 	.handle_irq	= at91_aic_handle_irq,
 	.init_early	= at91_dt_initialize,
 	.init_irq	= at91_dt_init_irq,
-	.init_machine	= at91_dt_device_init,
 	.dt_compat	= at91_dt_board_compat,
 MACHINE_END
diff --git a/arch/arm/mach-at91/board-rm9200-dt.c b/arch/arm/mach-at91/board-rm9200-dt.c
index 3fcb662..6b8d260 100644
--- a/arch/arm/mach-at91/board-rm9200-dt.c
+++ b/arch/arm/mach-at91/board-rm9200-dt.c
@@ -36,11 +36,6 @@ static void __init at91rm9200_dt_init_irq(void)
 	of_irq_init(irq_of_match);
 }
 
-static void __init at91rm9200_dt_device_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char *at91rm9200_dt_board_compat[] __initdata = {
 	"atmel,at91rm9200",
 	NULL
@@ -52,6 +47,5 @@ DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
 	.handle_irq	= at91_aic_handle_irq,
 	.init_early	= at91rm9200_dt_initialize,
 	.init_irq	= at91rm9200_dt_init_irq,
-	.init_machine	= at91rm9200_dt_device_init,
 	.dt_compat	= at91rm9200_dt_board_compat,
 MACHINE_END
diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
index 3358088..25038a1 100644
--- a/arch/arm/mach-exynos/mach-exynos4-dt.c
+++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
@@ -122,12 +122,6 @@ static void __init exynos4_dt_map_io(void)
 	s3c24xx_init_clocks(24000000);
 }
 
-static void __init exynos4_dt_machine_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table,
-				exynos4_auxdata_lookup, NULL);
-}
-
 static char const *exynos4_dt_compat[] __initdata = {
 	"samsung,exynos4210",
 	"samsung,exynos4212",
@@ -140,7 +134,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
 	.smp		= smp_ops(exynos_smp_ops),
 	.init_irq	= exynos4_init_irq,
 	.map_io		= exynos4_dt_map_io,
-	.init_machine	= exynos4_dt_machine_init,
 	.init_late	= exynos_init_late,
 	.init_time	= exynos4_timer_init,
 	.dt_compat	= exynos4_dt_compat,
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
index 8234839..2ecaa6a 100644
--- a/arch/arm/mach-imx/imx25-dt.c
+++ b/arch/arm/mach-imx/imx25-dt.c
@@ -17,11 +17,6 @@
 #include "common.h"
 #include "mx25.h"
 
-static void __init imx25_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char * const imx25_dt_board_compat[] __initconst = {
 	"fsl,imx25",
 	NULL
@@ -38,7 +33,6 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
 	.init_irq	= mx25_init_irq,
 	.handle_irq	= imx25_handle_irq,
 	.init_time	= imx25_timer_init,
-	.init_machine	= imx25_dt_init,
 	.dt_compat	= imx25_dt_board_compat,
 	.restart	= mxc_restart,
 MACHINE_END
diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
index 67de611..5bb05d5 100644
--- a/arch/arm/mach-imx/imx31-dt.c
+++ b/arch/arm/mach-imx/imx31-dt.c
@@ -18,11 +18,6 @@
 #include "common.h"
 #include "mx31.h"
 
-static void __init imx31_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char *imx31_dt_board_compat[] __initdata = {
 	"fsl,imx31",
 	NULL
@@ -39,7 +34,6 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
 	.init_irq	= mx31_init_irq,
 	.handle_irq	= imx31_handle_irq,
 	.init_time	= imx31_dt_timer_init,
-	.init_machine	= imx31_dt_init,
 	.dt_compat	= imx31_dt_board_compat,
 	.restart	= mxc_restart,
 MACHINE_END
diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
index e2926a8..52985a5 100644
--- a/arch/arm/mach-imx/imx51-dt.c
+++ b/arch/arm/mach-imx/imx51-dt.c
@@ -19,11 +19,6 @@
 #include "common.h"
 #include "mx51.h"
 
-static void __init imx51_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char *imx51_dt_board_compat[] __initdata = {
 	"fsl,imx51",
 	NULL
@@ -40,7 +35,6 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
 	.init_irq	= mx51_init_irq,
 	.handle_irq	= imx51_handle_irq,
 	.init_time	= imx51_timer_init,
-	.init_machine	= imx51_dt_init,
 	.init_late	= imx51_init_late,
 	.dt_compat	= imx51_dt_board_compat,
 	.restart	= mxc_restart,
diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
index 7dcfc53..0c21245 100644
--- a/arch/arm/mach-msm/board-dt-8660.c
+++ b/arch/arm/mach-msm/board-dt-8660.c
@@ -25,16 +25,6 @@ static void __init msm8x60_init_late(void)
 	smd_debugfs_init();
 }
 
-static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
-	{}
-};
-
-static void __init msm8x60_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table,
-			msm_auxdata_lookup, NULL);
-}
-
 static const char *msm8x60_fluid_match[] __initdata = {
 	"qcom,msm8660-fluid",
 	"qcom,msm8660-surf",
@@ -45,7 +35,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
 	.smp = smp_ops(msm_smp_ops),
 	.map_io = msm_map_msm8x60_io,
 	.init_irq = irqchip_init,
-	.init_machine = msm8x60_dt_init,
 	.init_late = msm8x60_init_late,
 	.init_time	= msm_dt_timer_init,
 	.dt_compat = msm8x60_fluid_match,
diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
index 7301936..26461d2 100644
--- a/arch/arm/mach-msm/board-dt-8960.c
+++ b/arch/arm/mach-msm/board-dt-8960.c
@@ -18,11 +18,6 @@
 
 #include "common.h"
 
-static void __init msm_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char * const msm8960_dt_match[] __initconst = {
 	"qcom,msm8960-cdp",
 	NULL
@@ -33,6 +28,5 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
 	.map_io = msm_map_msm8960_io,
 	.init_irq = irqchip_init,
 	.init_time	= msm_dt_timer_init,
-	.init_machine = msm_dt_init,
 	.dt_compat = msm8960_dt_match,
 MACHINE_END
diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c
index 085d636..ec7b8bf 100644
--- a/arch/arm/mach-tegra/board-dt-tegra114.c
+++ b/arch/arm/mach-tegra/board-dt-tegra114.c
@@ -23,11 +23,6 @@
 #include "board.h"
 #include "common.h"
 
-static void __init tegra114_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char * const tegra114_dt_board_compat[] = {
 	"nvidia,tegra114",
 	NULL,
@@ -39,7 +34,6 @@ DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)")
 	.init_early	= tegra114_init_early,
 	.init_irq	= tegra_dt_init_irq,
 	.init_time	= clocksource_of_init,
-	.init_machine	= tegra114_dt_init,
 	.init_late	= tegra_init_late,
 	.restart	= tegra_assert_system_reset,
 	.dt_compat	= tegra114_dt_board_compat,
diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
index bf68567..316bd9f 100644
--- a/arch/arm/mach-tegra/board-dt-tegra30.c
+++ b/arch/arm/mach-tegra/board-dt-tegra30.c
@@ -37,11 +37,6 @@
 #include "common.h"
 #include "iomap.h"
 
-static void __init tegra30_dt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static const char *tegra30_dt_board_compat[] = {
 	"nvidia,tegra30",
 	NULL
@@ -53,7 +48,6 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
 	.init_early	= tegra30_init_early,
 	.init_irq	= tegra_dt_init_irq,
 	.init_time	= clocksource_of_init,
-	.init_machine	= tegra30_dt_init,
 	.init_late	= tegra_init_late,
 	.restart	= tegra_assert_system_reset,
 	.dt_compat	= tegra30_dt_board_compat,
diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
index 31666f6..7bce0f8 100644
--- a/arch/arm/mach-virt/virt.c
+++ b/arch/arm/mach-virt/virt.c
@@ -27,11 +27,6 @@
 #include <asm/mach/arch.h>
 #include <asm/mach/time.h>
 
-static void __init virt_init(void)
-{
-	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-}
-
 static void __init virt_timer_init(void)
 {
 	WARN_ON(arch_timer_of_register() != 0);
@@ -48,7 +43,6 @@ extern struct smp_operations virt_smp_ops;
 DT_MACHINE_START(VIRT, "Dummy Virtual Machine")
 	.init_irq	= irqchip_init,
 	.init_time	= virt_timer_init,
-	.init_machine	= virt_init,
 	.smp		= smp_ops(virt_smp_ops),
 	.dt_compat	= virt_dt_match,
 MACHINE_END
-- 
1.8.1.2

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

* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
  2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
@ 2013-04-12 15:19   ` Arnd Bergmann
  2013-04-12 15:40   ` Stephen Warren
  2013-04-12 16:08   ` Jean-Christophe PLAGNIOL-VILLARD
  2 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 15:19 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 12 April 2013, Arnd Bergmann wrote:
> 
> -static void __init exynos4_dt_machine_init(void)
> -{
> -       of_platform_populate(NULL, of_default_bus_match_table,
> -                               exynos4_auxdata_lookup, NULL);
> -}
> -

This part was wrong, sorry. In the kernel I used as a base, we
actually still need exynos4_auxdata_lookup, so this patch actually
changes the behavior. In the for-next branch however, the auxdata
is gone.

	Arnd

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

* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
  2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
  2013-04-12 15:19   ` Arnd Bergmann
@ 2013-04-12 15:40   ` Stephen Warren
  2013-04-12 16:03     ` Arnd Bergmann
  2013-04-12 16:08   ` Jean-Christophe PLAGNIOL-VILLARD
  2 siblings, 1 reply; 13+ messages in thread
From: Stephen Warren @ 2013-04-12 15:40 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/12/2013 09:11 AM, Arnd Bergmann wrote:
> The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> NULL) is now implied by having no init_machine callback in the machine
> descriptor, so we can save a couple of lines in those machines that
> do not need to do anything else.

>  arch/arm/mach-tegra/board-dt-tegra114.c |  6 ------
>  arch/arm/mach-tegra/board-dt-tegra30.c  |  6 ------

Those two files don't exist any more; they were merged with
board-dt-tegra20.c and all squashed into the new tegra.c.

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

* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
  2013-04-12 15:40   ` Stephen Warren
@ 2013-04-12 16:03     ` Arnd Bergmann
  0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-12 16:03 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 12 April 2013, Stephen Warren wrote:
> On 04/12/2013 09:11 AM, Arnd Bergmann wrote:
> > The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> > NULL) is now implied by having no init_machine callback in the machine
> > descriptor, so we can save a couple of lines in those machines that
> > do not need to do anything else.
> 
> >  arch/arm/mach-tegra/board-dt-tegra114.c |  6 ------
> >  arch/arm/mach-tegra/board-dt-tegra30.c  |  6 ------
> 
> Those two files don't exist any more; they were merged with
> board-dt-tegra20.c and all squashed into the new tegra.c.

Right, I also noticed this when merging with the latest for-next
branch. The merged code refers to auxdata, so I'll drop the above
two without a replacement.

	Arnd

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

* [PATCH 2/2] ARM: remove all trivial init_machine callbacks
  2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
  2013-04-12 15:19   ` Arnd Bergmann
  2013-04-12 15:40   ` Stephen Warren
@ 2013-04-12 16:08   ` Jean-Christophe PLAGNIOL-VILLARD
  2 siblings, 0 replies; 13+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2013-04-12 16:08 UTC (permalink / raw)
  To: linux-arm-kernel

On 17:11 Fri 12 Apr     , Arnd Bergmann wrote:
> The call to of_platform_populate(NULL, of_default_bus_match_table, NULL,
> NULL) is now implied by having no init_machine callback in the machine
> descriptor, so we can save a couple of lines in those machines that
> do not need to do anything else.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Cc: Nicolas Pitre <nico@linaro.org>
> Cc: Olof Johansson <olof@lixom.net>
> Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
> Cc: Rob Herring <robherring2@gmail.com>
> ---
>  arch/arm/mach-at91/board-dt.c           |  6 ------
>  arch/arm/mach-at91/board-rm9200-dt.c    |  6 ------
on AT91 you have also sama5 file and those file are renaned for 3.10

Best Regards,
J.
>  arch/arm/mach-exynos/mach-exynos4-dt.c  |  7 -------
>  arch/arm/mach-imx/imx25-dt.c            |  6 ------
>  arch/arm/mach-imx/imx31-dt.c            |  6 ------
>  arch/arm/mach-imx/imx51-dt.c            |  6 ------
>  arch/arm/mach-msm/board-dt-8660.c       | 11 -----------
>  arch/arm/mach-msm/board-dt-8960.c       |  6 ------
>  arch/arm/mach-tegra/board-dt-tegra114.c |  6 ------
>  arch/arm/mach-tegra/board-dt-tegra30.c  |  6 ------
>  arch/arm/mach-virt/virt.c               |  6 ------
>  11 files changed, 72 deletions(-)
> 
> diff --git a/arch/arm/mach-at91/board-dt.c b/arch/arm/mach-at91/board-dt.c
> index 8db3013..9903579 100644
> --- a/arch/arm/mach-at91/board-dt.c
> +++ b/arch/arm/mach-at91/board-dt.c
> @@ -37,11 +37,6 @@ static void __init at91_dt_init_irq(void)
>  	of_irq_init(irq_of_match);
>  }
>  
> -static void __init at91_dt_device_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char *at91_dt_board_compat[] __initdata = {
>  	"atmel,at91sam9",
>  	NULL
> @@ -54,6 +49,5 @@ DT_MACHINE_START(at91sam_dt, "Atmel AT91SAM (Device Tree)")
>  	.handle_irq	= at91_aic_handle_irq,
>  	.init_early	= at91_dt_initialize,
>  	.init_irq	= at91_dt_init_irq,
> -	.init_machine	= at91_dt_device_init,
>  	.dt_compat	= at91_dt_board_compat,
>  MACHINE_END
> diff --git a/arch/arm/mach-at91/board-rm9200-dt.c b/arch/arm/mach-at91/board-rm9200-dt.c
> index 3fcb662..6b8d260 100644
> --- a/arch/arm/mach-at91/board-rm9200-dt.c
> +++ b/arch/arm/mach-at91/board-rm9200-dt.c
> @@ -36,11 +36,6 @@ static void __init at91rm9200_dt_init_irq(void)
>  	of_irq_init(irq_of_match);
>  }
>  
> -static void __init at91rm9200_dt_device_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char *at91rm9200_dt_board_compat[] __initdata = {
>  	"atmel,at91rm9200",
>  	NULL
> @@ -52,6 +47,5 @@ DT_MACHINE_START(at91rm9200_dt, "Atmel AT91RM9200 (Device Tree)")
>  	.handle_irq	= at91_aic_handle_irq,
>  	.init_early	= at91rm9200_dt_initialize,
>  	.init_irq	= at91rm9200_dt_init_irq,
> -	.init_machine	= at91rm9200_dt_device_init,
>  	.dt_compat	= at91rm9200_dt_board_compat,
>  MACHINE_END
> diff --git a/arch/arm/mach-exynos/mach-exynos4-dt.c b/arch/arm/mach-exynos/mach-exynos4-dt.c
> index 3358088..25038a1 100644
> --- a/arch/arm/mach-exynos/mach-exynos4-dt.c
> +++ b/arch/arm/mach-exynos/mach-exynos4-dt.c
> @@ -122,12 +122,6 @@ static void __init exynos4_dt_map_io(void)
>  	s3c24xx_init_clocks(24000000);
>  }
>  
> -static void __init exynos4_dt_machine_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table,
> -				exynos4_auxdata_lookup, NULL);
> -}
> -
>  static char const *exynos4_dt_compat[] __initdata = {
>  	"samsung,exynos4210",
>  	"samsung,exynos4212",
> @@ -140,7 +134,6 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)")
>  	.smp		= smp_ops(exynos_smp_ops),
>  	.init_irq	= exynos4_init_irq,
>  	.map_io		= exynos4_dt_map_io,
> -	.init_machine	= exynos4_dt_machine_init,
>  	.init_late	= exynos_init_late,
>  	.init_time	= exynos4_timer_init,
>  	.dt_compat	= exynos4_dt_compat,
> diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/imx25-dt.c
> index 8234839..2ecaa6a 100644
> --- a/arch/arm/mach-imx/imx25-dt.c
> +++ b/arch/arm/mach-imx/imx25-dt.c
> @@ -17,11 +17,6 @@
>  #include "common.h"
>  #include "mx25.h"
>  
> -static void __init imx25_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char * const imx25_dt_board_compat[] __initconst = {
>  	"fsl,imx25",
>  	NULL
> @@ -38,7 +33,6 @@ DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
>  	.init_irq	= mx25_init_irq,
>  	.handle_irq	= imx25_handle_irq,
>  	.init_time	= imx25_timer_init,
> -	.init_machine	= imx25_dt_init,
>  	.dt_compat	= imx25_dt_board_compat,
>  	.restart	= mxc_restart,
>  MACHINE_END
> diff --git a/arch/arm/mach-imx/imx31-dt.c b/arch/arm/mach-imx/imx31-dt.c
> index 67de611..5bb05d5 100644
> --- a/arch/arm/mach-imx/imx31-dt.c
> +++ b/arch/arm/mach-imx/imx31-dt.c
> @@ -18,11 +18,6 @@
>  #include "common.h"
>  #include "mx31.h"
>  
> -static void __init imx31_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char *imx31_dt_board_compat[] __initdata = {
>  	"fsl,imx31",
>  	NULL
> @@ -39,7 +34,6 @@ DT_MACHINE_START(IMX31_DT, "Freescale i.MX31 (Device Tree Support)")
>  	.init_irq	= mx31_init_irq,
>  	.handle_irq	= imx31_handle_irq,
>  	.init_time	= imx31_dt_timer_init,
> -	.init_machine	= imx31_dt_init,
>  	.dt_compat	= imx31_dt_board_compat,
>  	.restart	= mxc_restart,
>  MACHINE_END
> diff --git a/arch/arm/mach-imx/imx51-dt.c b/arch/arm/mach-imx/imx51-dt.c
> index e2926a8..52985a5 100644
> --- a/arch/arm/mach-imx/imx51-dt.c
> +++ b/arch/arm/mach-imx/imx51-dt.c
> @@ -19,11 +19,6 @@
>  #include "common.h"
>  #include "mx51.h"
>  
> -static void __init imx51_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char *imx51_dt_board_compat[] __initdata = {
>  	"fsl,imx51",
>  	NULL
> @@ -40,7 +35,6 @@ DT_MACHINE_START(IMX51_DT, "Freescale i.MX51 (Device Tree Support)")
>  	.init_irq	= mx51_init_irq,
>  	.handle_irq	= imx51_handle_irq,
>  	.init_time	= imx51_timer_init,
> -	.init_machine	= imx51_dt_init,
>  	.init_late	= imx51_init_late,
>  	.dt_compat	= imx51_dt_board_compat,
>  	.restart	= mxc_restart,
> diff --git a/arch/arm/mach-msm/board-dt-8660.c b/arch/arm/mach-msm/board-dt-8660.c
> index 7dcfc53..0c21245 100644
> --- a/arch/arm/mach-msm/board-dt-8660.c
> +++ b/arch/arm/mach-msm/board-dt-8660.c
> @@ -25,16 +25,6 @@ static void __init msm8x60_init_late(void)
>  	smd_debugfs_init();
>  }
>  
> -static struct of_dev_auxdata msm_auxdata_lookup[] __initdata = {
> -	{}
> -};
> -
> -static void __init msm8x60_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table,
> -			msm_auxdata_lookup, NULL);
> -}
> -
>  static const char *msm8x60_fluid_match[] __initdata = {
>  	"qcom,msm8660-fluid",
>  	"qcom,msm8660-surf",
> @@ -45,7 +35,6 @@ DT_MACHINE_START(MSM_DT, "Qualcomm MSM (Flattened Device Tree)")
>  	.smp = smp_ops(msm_smp_ops),
>  	.map_io = msm_map_msm8x60_io,
>  	.init_irq = irqchip_init,
> -	.init_machine = msm8x60_dt_init,
>  	.init_late = msm8x60_init_late,
>  	.init_time	= msm_dt_timer_init,
>  	.dt_compat = msm8x60_fluid_match,
> diff --git a/arch/arm/mach-msm/board-dt-8960.c b/arch/arm/mach-msm/board-dt-8960.c
> index 7301936..26461d2 100644
> --- a/arch/arm/mach-msm/board-dt-8960.c
> +++ b/arch/arm/mach-msm/board-dt-8960.c
> @@ -18,11 +18,6 @@
>  
>  #include "common.h"
>  
> -static void __init msm_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char * const msm8960_dt_match[] __initconst = {
>  	"qcom,msm8960-cdp",
>  	NULL
> @@ -33,6 +28,5 @@ DT_MACHINE_START(MSM8960_DT, "Qualcomm MSM (Flattened Device Tree)")
>  	.map_io = msm_map_msm8960_io,
>  	.init_irq = irqchip_init,
>  	.init_time	= msm_dt_timer_init,
> -	.init_machine = msm_dt_init,
>  	.dt_compat = msm8960_dt_match,
>  MACHINE_END
> diff --git a/arch/arm/mach-tegra/board-dt-tegra114.c b/arch/arm/mach-tegra/board-dt-tegra114.c
> index 085d636..ec7b8bf 100644
> --- a/arch/arm/mach-tegra/board-dt-tegra114.c
> +++ b/arch/arm/mach-tegra/board-dt-tegra114.c
> @@ -23,11 +23,6 @@
>  #include "board.h"
>  #include "common.h"
>  
> -static void __init tegra114_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char * const tegra114_dt_board_compat[] = {
>  	"nvidia,tegra114",
>  	NULL,
> @@ -39,7 +34,6 @@ DT_MACHINE_START(TEGRA114_DT, "NVIDIA Tegra114 (Flattened Device Tree)")
>  	.init_early	= tegra114_init_early,
>  	.init_irq	= tegra_dt_init_irq,
>  	.init_time	= clocksource_of_init,
> -	.init_machine	= tegra114_dt_init,
>  	.init_late	= tegra_init_late,
>  	.restart	= tegra_assert_system_reset,
>  	.dt_compat	= tegra114_dt_board_compat,
> diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
> index bf68567..316bd9f 100644
> --- a/arch/arm/mach-tegra/board-dt-tegra30.c
> +++ b/arch/arm/mach-tegra/board-dt-tegra30.c
> @@ -37,11 +37,6 @@
>  #include "common.h"
>  #include "iomap.h"
>  
> -static void __init tegra30_dt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static const char *tegra30_dt_board_compat[] = {
>  	"nvidia,tegra30",
>  	NULL
> @@ -53,7 +48,6 @@ DT_MACHINE_START(TEGRA30_DT, "NVIDIA Tegra30 (Flattened Device Tree)")
>  	.init_early	= tegra30_init_early,
>  	.init_irq	= tegra_dt_init_irq,
>  	.init_time	= clocksource_of_init,
> -	.init_machine	= tegra30_dt_init,
>  	.init_late	= tegra_init_late,
>  	.restart	= tegra_assert_system_reset,
>  	.dt_compat	= tegra30_dt_board_compat,
> diff --git a/arch/arm/mach-virt/virt.c b/arch/arm/mach-virt/virt.c
> index 31666f6..7bce0f8 100644
> --- a/arch/arm/mach-virt/virt.c
> +++ b/arch/arm/mach-virt/virt.c
> @@ -27,11 +27,6 @@
>  #include <asm/mach/arch.h>
>  #include <asm/mach/time.h>
>  
> -static void __init virt_init(void)
> -{
> -	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
> -}
> -
>  static void __init virt_timer_init(void)
>  {
>  	WARN_ON(arch_timer_of_register() != 0);
> @@ -48,7 +43,6 @@ extern struct smp_operations virt_smp_ops;
>  DT_MACHINE_START(VIRT, "Dummy Virtual Machine")
>  	.init_irq	= irqchip_init,
>  	.init_time	= virt_timer_init,
> -	.init_machine	= virt_init,
>  	.smp		= smp_ops(virt_smp_ops),
>  	.dt_compat	= virt_dt_match,
>  MACHINE_END
> -- 
> 1.8.1.2
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH 1/2] ARM: default machine descriptor for multiplatform
  2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
  2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
@ 2013-04-19 13:28 ` Russell King - ARM Linux
  2013-04-19 14:21   ` Arnd Bergmann
  1 sibling, 1 reply; 13+ messages in thread
From: Russell King - ARM Linux @ 2013-04-19 13:28 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Apr 12, 2013 at 05:11:07PM +0200, Arnd Bergmann wrote:
> @@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
>  
>  	setup_processor();
>  	mdesc = setup_machine_fdt(__atags_pointer);
> -	if (!mdesc)
> +	if (!mdesc && __machine_arch_type != ~0)
>  		mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
>  	machine_desc = mdesc;
>  	machine_name = mdesc->name;

If mdesc is NULL and __machine_arch_type is ~0, then mdesc remains NULL.
That means machine_desc is NULL (which is probably very bad), and the
initialization of machine_name causes a NULL pointer dereference.

This is clearly wrong.  mdesc must never be NULL if you're using FDT
here, so the original code should be fine.

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

* [PATCH 1/2] ARM: default machine descriptor for multiplatform
  2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
@ 2013-04-19 14:21   ` Arnd Bergmann
  2013-04-19 14:40     ` [PATCH v3] " Arnd Bergmann
  0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 14:21 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 19 April 2013, Russell King - ARM Linux wrote:
> On Fri, Apr 12, 2013 at 05:11:07PM +0200, Arnd Bergmann wrote:
> > @@ -752,7 +761,7 @@ void __init setup_arch(char **cmdline_p)
> >  
> >       setup_processor();
> >       mdesc = setup_machine_fdt(__atags_pointer);
> > -     if (!mdesc)
> > +     if (!mdesc && __machine_arch_type != ~0)
> >               mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
> >       machine_desc = mdesc;
> >       machine_name = mdesc->name;
> 
> If mdesc is NULL and __machine_arch_type is ~0, then mdesc remains NULL.
> That means machine_desc is NULL (which is probably very bad), and the
> initialization of machine_name causes a NULL pointer dereference.
> 
> This is clearly wrong.  mdesc must never be NULL if you're using FDT
> here, so the original code should be fine.

Ah, right. I think was a leftover from an earlier version of the
patch where I only assigned the default platform after this.

There is also a related mistake in setup_machine_fdt, the second
change is not needed there either AFAICT.

Thanks for taking a look!

	Arnd

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

* [PATCH v3] ARM: default machine descriptor for multiplatform
  2013-04-19 14:21   ` Arnd Bergmann
@ 2013-04-19 14:40     ` Arnd Bergmann
  2013-04-19 21:32       ` Rob Herring
  0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 14:40 UTC (permalink / raw)
  To: linux-arm-kernel

Since we now have default implementations for init_time and init_irq,
the init_machine callback is the only one that is not yet optional,
but since simple DT based platforms all have the same
of_platform_populate function call in there, we can consolidate them
as well, and then actually boot with a completely empty machine_desc.
Unofortunately we cannot just default to an empty init_machine: We
cannot call of_platform_populate before init_machine because that
does not work in case of auxdata, and we cannot call it after
init_machine either because the machine might need to run code
after adding the devices.

To take the final step, this adds support for booting without defining
any machine_desc whatsoever.

For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
global machine descriptor that never matches any machine but is
used as a fallback if nothing else matches. We assume that without
CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
is built for, so we still retain the build-time warning for missing
machine descriptors and the run-time warning when the platform does not
match in that case.

In the case that we run on a multiplatform kernel and the machine
provides a fully populated device tree, we attempt to keep booting,
hoping that no machine specific callbacks are necessary.

Finally, this also removes the misguided "select ARCH_VEXPRESS" that
was only added to avoid a build error for allnoconfig kernels.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Nicolas Pitre <nico@linaro.org>
Acked-by: Olof Johansson <olof@lixom.net>
Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>
Cc: Rob Herring <robherring2@gmail.com>

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 1cacda4..e67d49d 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -1014,7 +1014,6 @@ config ARCH_MULTI_V7
 	bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
 	default y
 	select ARCH_MULTI_V6_V7
-	select ARCH_VEXPRESS
 	select CPU_V7
 
 config ARCH_MULTI_V6_V7
diff --git a/arch/arm/kernel/devtree.c b/arch/arm/kernel/devtree.c
index 70f1bde..9038c9f 100644
--- a/arch/arm/kernel/devtree.c
+++ b/arch/arm/kernel/devtree.c
@@ -180,6 +180,13 @@ struct machine_desc * __init setup_machine_fdt(unsigned int dt_phys)
 	unsigned long dt_root;
 	const char *model;
 
+	if (IS_ENABLED(CONFIG_ARCH_MULTIPLATFORM)) {
+		DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
+		MACHINE_END
+
+		mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT;
+	}
+
 	if (!dt_phys)
 		return NULL;
 
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index d343a6c..9e0f43d 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -18,6 +18,7 @@
 #include <linux/bootmem.h>
 #include <linux/seq_file.h>
 #include <linux/screen_info.h>
+#include <linux/of_platform.h>
 #include <linux/init.h>
 #include <linux/kexec.h>
 #include <linux/of_fdt.h>
@@ -660,9 +661,17 @@ struct screen_info screen_info = {
 
 static int __init customize_machine(void)
 {
-	/* customizes platform devices, or adds new ones */
+	/*
+	 * customizes platform devices, or adds new ones
+	 * On DT based machines, we fall back to populating the
+	 * machine from the device tree, if no callback is provided,
+	 * otherwise we would always need an init_machine callback.
+	 */
 	if (machine_desc->init_machine)
 		machine_desc->init_machine();
+	else
+		of_platform_populate(NULL, of_default_bus_match_table,
+					NULL, NULL);
 	return 0;
 }
 arch_initcall(customize_machine);

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

* [PATCH v3] ARM: default machine descriptor for multiplatform
  2013-04-19 14:40     ` [PATCH v3] " Arnd Bergmann
@ 2013-04-19 21:32       ` Rob Herring
  2013-04-19 21:54         ` Arnd Bergmann
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2013-04-19 21:32 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/19/2013 09:40 AM, Arnd Bergmann wrote:
> Since we now have default implementations for init_time and init_irq,
> the init_machine callback is the only one that is not yet optional,
> but since simple DT based platforms all have the same
> of_platform_populate function call in there, we can consolidate them
> as well, and then actually boot with a completely empty machine_desc.
> Unofortunately we cannot just default to an empty init_machine: We
> cannot call of_platform_populate before init_machine because that
> does not work in case of auxdata, and we cannot call it after
> init_machine either because the machine might need to run code
> after adding the devices.
> 
> To take the final step, this adds support for booting without defining
> any machine_desc whatsoever.
> 
> For the case that CONFIG_MULTIPLATFORM is enabled, it adds a
> global machine descriptor that never matches any machine but is
> used as a fallback if nothing else matches. We assume that without
> CONFIG_MULTIPLATFORM, we only want to boot on the systems that the kernel
> is built for, so we still retain the build-time warning for missing
> machine descriptors and the run-time warning when the platform does not
> match in that case.
> 
> In the case that we run on a multiplatform kernel and the machine
> provides a fully populated device tree, we attempt to keep booting,
> hoping that no machine specific callbacks are necessary.
> 
> Finally, this also removes the misguided "select ARCH_VEXPRESS" that
> was only added to avoid a build error for allnoconfig kernels.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Acked-by: Nicolas Pitre <nico@linaro.org>
> Acked-by: Olof Johansson <olof@lixom.net>
> Cc: "Russell King - ARM Linux" <linux@arm.linux.org.uk>

[...]

>  	if (machine_desc->init_machine)
>  		machine_desc->init_machine();
> +	else
> +		of_platform_populate(NULL, of_default_bus_match_table,

This will fail to build for !OF. of_platform.h needs this:

#define of_default_bus_match_table NULL

You may need some struct forward declarations, but this commit in my
tree for 3.10 should fix those:

commit d450f445f9a654080a6be4094376c2192d9a1f36
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Tue Feb 19 02:58:25 2013 +0300

    <linux/of_platform.h>: fix compilation warnings with DT disabled


Rob

> +					NULL, NULL);
>  	return 0;
>  }
>  arch_initcall(customize_machine);
> 

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

* [PATCH v3] ARM: default machine descriptor for multiplatform
  2013-04-19 21:32       ` Rob Herring
@ 2013-04-19 21:54         ` Arnd Bergmann
  2013-04-19 22:22           ` Rob Herring
  0 siblings, 1 reply; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 21:54 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 19 April 2013, Rob Herring wrote:
> This will fail to build for !OF. of_platform.h needs this:
> 
> #define of_default_bus_match_table NULL
> 
> You may need some struct forward declarations, but this commit in my
> tree for 3.10 should fix those:
> 
> commit d450f445f9a654080a6be4094376c2192d9a1f36
> Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
> Date:   Tue Feb 19 02:58:25 2013 +0300
> 
>     <linux/of_platform.h>: fix compilation warnings with DT disabled
> 

Ok. I've actually stumbled over missing declarations from of_platform.h
and related files a number of times. Could we please not hide any
declarations inside of #ifdef when there is no #else alternative?

If we just show the of_default_bus_match_table declaration in the
header file, there is no need to provide the silly NULL macro,
since the of_platform_populate alternative will just ignore it.

I'll just put the code in an #ifdef for now, but I'd really prefer
to clean up this and many other locations that currently have
to do #ifdef CONFIG_OF when they really don't need to.

	Arnd

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

* [PATCH v3] ARM: default machine descriptor for multiplatform
  2013-04-19 21:54         ` Arnd Bergmann
@ 2013-04-19 22:22           ` Rob Herring
  2013-04-19 23:11             ` Arnd Bergmann
  0 siblings, 1 reply; 13+ messages in thread
From: Rob Herring @ 2013-04-19 22:22 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/19/2013 04:54 PM, Arnd Bergmann wrote:
> On Friday 19 April 2013, Rob Herring wrote:
>> This will fail to build for !OF. of_platform.h needs this:
>>
>> #define of_default_bus_match_table NULL
>>
>> You may need some struct forward declarations, but this commit in my
>> tree for 3.10 should fix those:
>>
>> commit d450f445f9a654080a6be4094376c2192d9a1f36
>> Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
>> Date:   Tue Feb 19 02:58:25 2013 +0300
>>
>>     <linux/of_platform.h>: fix compilation warnings with DT disabled
>>
> 
> Ok. I've actually stumbled over missing declarations from of_platform.h
> and related files a number of times. Could we please not hide any
> declarations inside of #ifdef when there is no #else alternative?
> 
> If we just show the of_default_bus_match_table declaration in the
> header file, there is no need to provide the silly NULL macro,
> since the of_platform_populate alternative will just ignore it.
> 
> I'll just put the code in an #ifdef for now, but I'd really prefer
> to clean up this and many other locations that currently have
> to do #ifdef CONFIG_OF when they really don't need to.

I think we can kill off CONFIG_OF_DEVICE completely. It is always
enabled when OF is (even for the oddball Sparc).

The only remaining user of of_platform_driver is ibmebus and 2 drivers.
It would be good to convert those to regular platform drivers.

Rob

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

* [PATCH v3] ARM: default machine descriptor for multiplatform
  2013-04-19 22:22           ` Rob Herring
@ 2013-04-19 23:11             ` Arnd Bergmann
  0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2013-04-19 23:11 UTC (permalink / raw)
  To: linux-arm-kernel

On Saturday 20 April 2013, Rob Herring wrote:
> The only remaining user of of_platform_driver is ibmebus and 2 drivers.
> It would be good to convert those to regular platform drivers.
> 

Right, I would not expect any trouble in converting ibmebus to
use a regular platform_driver. It already uses platform_device
anyway. We cannot remove ibmebus itself because it has special
DMA requirements, but we could move it to drivers/bus if the
powerpc maintainers like that.

	Arnd.

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

end of thread, other threads:[~2013-04-19 23:11 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-12 15:11 [PATCH 1/2] ARM: default machine descriptor for multiplatform Arnd Bergmann
2013-04-12 15:11 ` [PATCH 2/2] ARM: remove all trivial init_machine callbacks Arnd Bergmann
2013-04-12 15:19   ` Arnd Bergmann
2013-04-12 15:40   ` Stephen Warren
2013-04-12 16:03     ` Arnd Bergmann
2013-04-12 16:08   ` Jean-Christophe PLAGNIOL-VILLARD
2013-04-19 13:28 ` [PATCH 1/2] ARM: default machine descriptor for multiplatform Russell King - ARM Linux
2013-04-19 14:21   ` Arnd Bergmann
2013-04-19 14:40     ` [PATCH v3] " Arnd Bergmann
2013-04-19 21:32       ` Rob Herring
2013-04-19 21:54         ` Arnd Bergmann
2013-04-19 22:22           ` Rob Herring
2013-04-19 23:11             ` Arnd Bergmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).