diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2013-09-20 23:29:44 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2013-09-27 16:39:03 +0100 |
commit | f474d3b4727c838ece492661be420387e4e55866 (patch) | |
tree | 101f12f9e2d767c5cebbd028ee8454a414006963 /xen/include | |
parent | e1dbd62d48ef6b82fd6f4906e37ae1a8f873a2cf (diff) | |
download | xen-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.h | 9 | ||||
-rw-r--r-- | xen/include/asm-arm/smp.h | 9 |
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 |