From: Arnd Bergmann <arnd@arndb.de>
To: linux-arm-kernel@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>,
"Russell King - ARM Linux" <linux@arm.linux.org.uk>,
Rob Herring <robherring2@gmail.com>
Subject: [PATCH 02/21] ARM: default machine descriptor for multiplatform
Date: Thu, 25 Apr 2013 19:28:45 +0200 [thread overview]
Message-ID: <1366910944-3033663-3-git-send-email-arnd@arndb.de> (raw)
In-Reply-To: <1366910944-3033663-1-git-send-email-arnd@arndb.de>
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 | 7 +++++++
arch/arm/kernel/setup.c | 11 ++++++++++-
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a0d58a6..8c33760 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -890,7 +890,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..5af04f6 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;
+#ifdef CONFIG_ARCH_MULTIPLATFORM
+ DT_MACHINE_START(GENERIC_DT, "Generic DT based system")
+ MACHINE_END
+
+ mdesc_best = (struct machine_desc *)&__mach_desc_GENERIC_DT;
+#endif
+
if (!dt_phys)
return NULL;
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 408f446..d039623 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>
@@ -672,9 +673,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);
--
1.8.1.2
next prev parent reply other threads:[~2013-04-25 17:31 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-25 17:28 [PATCH 00/21] more arm build fixes Arnd Bergmann
2013-04-25 17:28 ` [PATCH 01/21] ARM: topology: export cpu_topology Arnd Bergmann
2013-04-26 8:53 ` Will Deacon
2013-04-26 15:07 ` Arnd Bergmann
2013-04-25 17:28 ` Arnd Bergmann [this message]
2013-04-25 17:28 ` [PATCH 03/21] ARM: shmobile: don't call irqchip_init unconditionally Arnd Bergmann
2013-04-26 0:48 ` Simon Horman
2013-04-26 8:52 ` Bastian Hecht
2013-04-29 12:58 ` [PATCH 03/21] ARM: shmobile: don't call irqchip_init unconditionallyA Arnd Bergmann
2013-04-29 14:49 ` [PATCH 03/21] ARM: shmobile: don't call irqchip_init unconditionally Arnd Bergmann
2013-04-30 1:58 ` Simon Horman
2013-04-30 2:25 ` Simon Horman
2013-05-01 15:54 ` Rob Herring
2013-05-01 22:57 ` Simon Horman
2013-05-08 12:16 ` Arnd Bergmann
2013-05-08 13:22 ` Bastian Hecht
2013-05-08 13:34 ` Arnd Bergmann
2013-05-09 3:38 ` Simon Horman
2013-05-09 4:22 ` Simon Horman
2013-04-25 17:28 ` [PATCH 04/21] ARM: orion5x: include linux/cpu.h Arnd Bergmann
2013-04-25 17:34 ` Jason Cooper
2013-04-25 18:27 ` Jason Cooper
2013-04-25 17:28 ` [PATCH 05/21] atm: he: use mdelay instead of large udelay constants Arnd Bergmann
2013-04-26 8:21 ` David Laight
2013-04-26 13:12 ` chas williams - CONTRACTOR
2013-04-29 13:13 ` [PATCH v2 05/21] atm: he: use msleep " Arnd Bergmann
2013-04-29 17:27 ` David Miller
2013-04-25 17:28 ` [PATCH 06/21] ALSA: ali5451: use mdelay " Arnd Bergmann
2013-04-26 5:40 ` Takashi Iwai
2013-04-25 17:28 ` [PATCH 07/21] oss/dmabuf: use dma_map_single Arnd Bergmann
2013-04-26 5:41 ` Takashi Iwai
2013-04-25 17:28 ` [PATCH 08/21] drm/nouveau: use mdelay instead of large udelay constants Arnd Bergmann
2013-04-25 17:28 ` [PATCH 09/21] drm: export drm_vm_open_locked Arnd Bergmann
2013-04-25 17:28 ` [PATCH 10/21] [SCSI] nsp32: use mdelay instead of large udelay constants Arnd Bergmann
2013-04-26 0:42 ` Masanori Goto
2013-04-29 13:21 ` Arnd Bergmann
2013-04-29 21:41 ` Masanori Goto
2013-05-01 13:55 ` James Bottomley
2013-04-25 17:28 ` [PATCH 11/21] irqdomain: export irq_domain_add_simple Arnd Bergmann
2013-04-26 0:50 ` Simon Horman
2013-05-31 22:37 ` Grant Likely
2013-04-25 17:28 ` [PATCH 12/21] irqchip: s3c24xx: add missing __init annotations Arnd Bergmann
2013-04-26 10:39 ` Heiko Stübner
2013-04-25 17:28 ` [PATCH 13/21] iommu: tegra: print dma_addr_t using %lld Arnd Bergmann
2013-04-25 17:42 ` Sethi Varun-B16395
2013-04-25 17:28 ` [PATCH 14/21] cpufreq: pxa2xx: initialize variables Arnd Bergmann
2013-04-25 18:14 ` Rafael J. Wysocki
2013-04-25 21:09 ` Arnd Bergmann
2013-04-25 17:28 ` [PATCH 15/21] thermal: cooling: avoid uninitialied used gcc warning Arnd Bergmann
2013-04-25 20:07 ` edubezval
2013-04-25 21:09 ` Arnd Bergmann
2013-04-26 8:10 ` Zhang Rui
2013-04-25 17:28 ` [PATCH 16/21] OF: remove #ifdef from linux/of_platform.h Arnd Bergmann
2013-04-25 17:29 ` [PATCH 17/21] X.509: do not emit any informational output Arnd Bergmann
2013-04-25 17:29 ` [PATCH 18/21] USB: ehci-msm: USB_MSM_OTG needs USB_PHY Arnd Bergmann
2013-04-25 17:59 ` Greg Kroah-Hartman
2013-04-25 21:12 ` Arnd Bergmann
2013-04-25 17:29 ` [PATCH 19/21] USB: lpc32xx: ISP1301 " Arnd Bergmann
2013-04-25 19:50 ` Roland Stigge
2013-04-25 17:29 ` [PATCH 20/21] USB: OMAP: " Arnd Bergmann
2013-04-25 17:29 ` [PATCH 21/21] USB: OHCI: avoid conflicting platform drivers Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1366910944-3033663-3-git-send-email-arnd@arndb.de \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=robherring2@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®