diff options
Diffstat (limited to 'arch/arm/include/asm/smp.h')
-rw-r--r-- | arch/arm/include/asm/smp.h | 48 |
1 files changed, 34 insertions, 14 deletions
diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h index ae29293270a3..2e3be16c6766 100644 --- a/arch/arm/include/asm/smp.h +++ b/arch/arm/include/asm/smp.h | |||
@@ -60,15 +60,6 @@ extern int boot_secondary(unsigned int cpu, struct task_struct *); | |||
60 | */ | 60 | */ |
61 | asmlinkage void secondary_start_kernel(void); | 61 | asmlinkage void secondary_start_kernel(void); |
62 | 62 | ||
63 | /* | ||
64 | * Perform platform specific initialisation of the specified CPU. | ||
65 | */ | ||
66 | extern void platform_secondary_init(unsigned int cpu); | ||
67 | |||
68 | /* | ||
69 | * Initialize cpu_possible map, and enable coherency | ||
70 | */ | ||
71 | extern void platform_smp_prepare_cpus(unsigned int); | ||
72 | 63 | ||
73 | /* | 64 | /* |
74 | * Initial data for bringing up a secondary CPU. | 65 | * Initial data for bringing up a secondary CPU. |
@@ -79,18 +70,47 @@ struct secondary_data { | |||
79 | void *stack; | 70 | void *stack; |
80 | }; | 71 | }; |
81 | extern struct secondary_data secondary_data; | 72 | extern struct secondary_data secondary_data; |
73 | extern volatile int pen_release; | ||
82 | 74 | ||
83 | extern int __cpu_disable(void); | 75 | extern int __cpu_disable(void); |
84 | extern int platform_cpu_disable(unsigned int cpu); | ||
85 | 76 | ||
86 | extern void __cpu_die(unsigned int cpu); | 77 | extern void __cpu_die(unsigned int cpu); |
87 | extern void cpu_die(void); | 78 | extern void cpu_die(void); |
88 | 79 | ||
89 | extern void platform_cpu_die(unsigned int cpu); | ||
90 | extern int platform_cpu_kill(unsigned int cpu); | ||
91 | extern void platform_cpu_enable(unsigned int cpu); | ||
92 | |||
93 | extern void arch_send_call_function_single_ipi(int cpu); | 80 | extern void arch_send_call_function_single_ipi(int cpu); |
94 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); | 81 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); |
95 | 82 | ||
83 | struct smp_operations { | ||
84 | #ifdef CONFIG_SMP | ||
85 | /* | ||
86 | * Setup the set of possible CPUs (via set_cpu_possible) | ||
87 | */ | ||
88 | void (*smp_init_cpus)(void); | ||
89 | /* | ||
90 | * Initialize cpu_possible map, and enable coherency | ||
91 | */ | ||
92 | void (*smp_prepare_cpus)(unsigned int max_cpus); | ||
93 | |||
94 | /* | ||
95 | * Perform platform specific initialisation of the specified CPU. | ||
96 | */ | ||
97 | void (*smp_secondary_init)(unsigned int cpu); | ||
98 | /* | ||
99 | * Boot a secondary CPU, and assign it the specified idle task. | ||
100 | * This also gives us the initial stack to use for this CPU. | ||
101 | */ | ||
102 | int (*smp_boot_secondary)(unsigned int cpu, struct task_struct *idle); | ||
103 | #ifdef CONFIG_HOTPLUG_CPU | ||
104 | int (*cpu_kill)(unsigned int cpu); | ||
105 | void (*cpu_die)(unsigned int cpu); | ||
106 | int (*cpu_disable)(unsigned int cpu); | ||
107 | #endif | ||
108 | #endif | ||
109 | }; | ||
110 | |||
111 | /* | ||
112 | * set platform specific SMP operations | ||
113 | */ | ||
114 | extern void smp_set_ops(struct smp_operations *); | ||
115 | |||
96 | #endif /* ifndef __ASM_ARM_SMP_H */ | 116 | #endif /* ifndef __ASM_ARM_SMP_H */ |