aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2013-09-20 23:29:44 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-09-27 16:39:03 +0100
commitf474d3b4727c838ece492661be420387e4e55866 (patch)
tree101f12f9e2d767c5cebbd028ee8454a414006963 /xen/include
parente1dbd62d48ef6b82fd6f4906e37ae1a8f873a2cf (diff)
downloadxen-f474d3b4727c838ece492661be420387e4e55866.tar.gz
xen-f474d3b4727c838ece492661be420387e4e55866.tar.bz2
xen-f474d3b4727c838ece492661be420387e4e55866.zip
xen: arm: implement arch/platform SMP and CPU initialisation framework
Includes an implementation for vexpress using the sysflags interface and support for the ARMv8 "spin-table" method. Unused until "rewrite start of day page table and cpu bring up", split out to simplify review. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Tim Deegan <tim@xen.org> Acked-by: Julien Grall <julien.grall@linaro.org>
Diffstat (limited to 'xen/include')
-rw-r--r--xen/include/asm-arm/platform.h9
-rw-r--r--xen/include/asm-arm/smp.h9
2 files changed, 18 insertions, 0 deletions
diff --git a/xen/include/asm-arm/platform.h b/xen/include/asm-arm/platform.h
index a19dbf732b..dbd2a15ed4 100644
--- a/xen/include/asm-arm/platform.h
+++ b/xen/include/asm-arm/platform.h
@@ -15,6 +15,11 @@ struct platform_desc {
/* Platform initialization */
int (*init)(void);
int (*init_time)(void);
+#ifdef CONFIG_ARM_32
+ /* SMP */
+ int (*smp_init)(void);
+ int (*cpu_up)(int cpu);
+#endif
/* Specific mapping for dom0 */
int (*specific_mapping)(struct domain *d);
/* Platform reset */
@@ -43,6 +48,10 @@ struct platform_desc {
int __init platform_init(void);
int __init platform_init_time(void);
int __init platform_specific_mapping(struct domain *d);
+#ifdef CONFIG_ARM_32
+int platform_smp_init(void);
+int platform_cpu_up(int cpu);
+#endif
void platform_reset(void);
void platform_poweroff(void);
bool_t platform_has_quirk(uint32_t quirk);
diff --git a/xen/include/asm-arm/smp.h b/xen/include/asm-arm/smp.h
index 1c2746b763..1added5550 100644
--- a/xen/include/asm-arm/smp.h
+++ b/xen/include/asm-arm/smp.h
@@ -4,6 +4,7 @@
#ifndef __ASSEMBLY__
#include <xen/config.h>
#include <xen/cpumask.h>
+#include <xen/device_tree.h>
#include <asm/current.h>
#endif
@@ -22,9 +23,17 @@ extern void stop_cpu(void);
extern void
make_cpus_ready(unsigned int max_cpus, unsigned long boot_phys_offset);
+extern int arch_smp_init(void);
+extern int arch_cpu_init(int cpu, struct dt_device_node *dn);
+extern int arch_cpu_up(int cpu);
+
+/* Secondary CPU entry point */
+extern void init_secondary(void);
+
extern void smp_clear_cpu_maps (void);
extern int smp_get_max_cpus (void);
#endif
+
/*
* Local variables:
* mode: C