Commit 7a3182b1 authored by Anton Blanchard's avatar Anton Blanchard

ppc64: hotplug cpu changes

parent 1a84d369
...@@ -576,7 +576,7 @@ void openpic_request_IPIs(void) ...@@ -576,7 +576,7 @@ void openpic_request_IPIs(void)
*/ */
static spinlock_t openpic_setup_lock __initdata = SPIN_LOCK_UNLOCKED; static spinlock_t openpic_setup_lock __initdata = SPIN_LOCK_UNLOCKED;
void __init do_openpic_setup_cpu(void) void __devinit do_openpic_setup_cpu(void)
{ {
#ifdef CONFIG_IRQ_ALL_CPUS #ifdef CONFIG_IRQ_ALL_CPUS
int i; int i;
......
...@@ -144,6 +144,7 @@ static interpret_func interpret_root_props; ...@@ -144,6 +144,7 @@ static interpret_func interpret_root_props;
#define FB_MAX 8 #define FB_MAX 8
#endif #endif
static int ppc64_is_smp;
struct prom_t prom = { struct prom_t prom = {
0, /* entry */ 0, /* entry */
......
This diff is collapsed.
...@@ -373,7 +373,7 @@ xics_init_IRQ( void ) ...@@ -373,7 +373,7 @@ xics_init_IRQ( void )
if (naca->platform == PLATFORM_PSERIES) { if (naca->platform == PLATFORM_PSERIES) {
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
for (i = 0; i < NR_CPUS; ++i) { for (i = 0; i < NR_CPUS; ++i) {
if (!paca[i].active) if (!cpu_possible(i))
continue; continue;
xics_info.per_cpu[i] = xics_info.per_cpu[i] =
__ioremap((ulong)inodes[i].addr, __ioremap((ulong)inodes[i].addr,
......
...@@ -20,6 +20,17 @@ struct device_node; ...@@ -20,6 +20,17 @@ struct device_node;
struct TceTable; struct TceTable;
struct rtc_time; struct rtc_time;
#ifdef CONFIG_SMP
struct smp_ops_t {
void (*message_pass)(int target, int msg, unsigned long data, int wait);
int (*probe)(void);
void (*kick_cpu)(int nr);
void (*setup_cpu)(int nr);
void (*take_timebase)(void);
void (*give_timebase)(void);
};
#endif
struct machdep_calls { struct machdep_calls {
/* High use functions in the first cachelines, low use functions /* High use functions in the first cachelines, low use functions
* follow. DRENG collect profile data. * follow. DRENG collect profile data.
...@@ -58,14 +69,6 @@ struct machdep_calls { ...@@ -58,14 +69,6 @@ struct machdep_calls {
void (*tce_free_one)(struct TceTable *tbl, void (*tce_free_one)(struct TceTable *tbl,
long tcenum); long tcenum);
void (*smp_message_pass)(int target,
int msg,
unsigned long data,
int wait);
void (*smp_probe)(void);
void (*smp_kick_cpu)(int nr);
void (*smp_setup_cpu)(int nr);
void (*setup_arch)(void); void (*setup_arch)(void);
/* Optional, may be NULL. */ /* Optional, may be NULL. */
void (*setup_residual)(struct seq_file *m, int cpu_id); void (*setup_residual)(struct seq_file *m, int cpu_id);
...@@ -145,6 +148,11 @@ struct machdep_calls { ...@@ -145,6 +148,11 @@ struct machdep_calls {
/* this is for modules, since _machine can be a define -- Cort */ /* this is for modules, since _machine can be a define -- Cort */
int ppc_machine; int ppc_machine;
#ifdef CONFIG_SMP
/* functions for dealing with other cpus */
struct smp_ops_t smp_ops;
#endif /* CONFIG_SMP */
}; };
extern struct machdep_calls ppc_md; extern struct machdep_calls ppc_md;
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
extern unsigned long cpu_online_map; extern unsigned long cpu_online_map;
extern void smp_message_pass(int target, int msg, unsigned long data, int wait); extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
extern void smp_store_cpu_info(int id);
extern void smp_send_tlb_invalidate(int); extern void smp_send_tlb_invalidate(int);
extern void smp_send_xmon_break(int cpu); extern void smp_send_xmon_break(int cpu);
struct pt_regs; struct pt_regs;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment