Commit 62d60e9f authored by Michael Ellerman's avatar Michael Ellerman Committed by Linus Torvalds

[PATCH] ppc64: Fixup platforms for new ppc_md.idle

This patch fixes up iSeries, pSeries, pmac and maple to set the correct idle
function for each platform.
Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent c66d5dd6
...@@ -940,5 +940,6 @@ void __init iSeries_early_setup(void) ...@@ -940,5 +940,6 @@ void __init iSeries_early_setup(void)
ppc_md.get_rtc_time = iSeries_get_rtc_time; ppc_md.get_rtc_time = iSeries_get_rtc_time;
ppc_md.calibrate_decr = iSeries_calibrate_decr; ppc_md.calibrate_decr = iSeries_calibrate_decr;
ppc_md.progress = iSeries_progress; ppc_md.progress = iSeries_progress;
ppc_md.idle_loop = iSeries_idle;
} }
...@@ -177,6 +177,8 @@ void __init maple_setup_arch(void) ...@@ -177,6 +177,8 @@ void __init maple_setup_arch(void)
#ifdef CONFIG_DUMMY_CONSOLE #ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con; conswitchp = &dummy_con;
#endif #endif
printk(KERN_INFO "Using native/NAP idle loop\n");
} }
/* /*
...@@ -297,4 +299,5 @@ struct machdep_calls __initdata maple_md = { ...@@ -297,4 +299,5 @@ struct machdep_calls __initdata maple_md = {
.get_rtc_time = maple_get_rtc_time, .get_rtc_time = maple_get_rtc_time,
.calibrate_decr = generic_calibrate_decr, .calibrate_decr = generic_calibrate_decr,
.progress = maple_progress, .progress = maple_progress,
.idle_loop = native_idle,
}; };
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#undef DEBUG #undef DEBUG
#include <linux/config.h> #include <linux/config.h>
#include <linux/cpu.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/kernel.h> #include <linux/kernel.h>
...@@ -82,6 +83,9 @@ int fwnmi_active; /* TRUE if an FWNMI handler is present */ ...@@ -82,6 +83,9 @@ int fwnmi_active; /* TRUE if an FWNMI handler is present */
extern void pSeries_system_reset_exception(struct pt_regs *regs); extern void pSeries_system_reset_exception(struct pt_regs *regs);
extern int pSeries_machine_check_exception(struct pt_regs *regs); extern int pSeries_machine_check_exception(struct pt_regs *regs);
static int shared_idle(void);
static int dedicated_idle(void);
static volatile void __iomem * chrp_int_ack_special; static volatile void __iomem * chrp_int_ack_special;
struct mpic *pSeries_mpic; struct mpic *pSeries_mpic;
...@@ -229,6 +233,20 @@ static void __init pSeries_setup_arch(void) ...@@ -229,6 +233,20 @@ static void __init pSeries_setup_arch(void)
if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR) if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR)
vpa_init(boot_cpuid); vpa_init(boot_cpuid);
/* Choose an idle loop */
if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR) {
if (get_paca()->lppaca.shared_proc) {
printk(KERN_INFO "Using shared processor idle loop\n");
ppc_md.idle_loop = shared_idle;
} else {
printk(KERN_INFO "Using dedicated idle loop\n");
ppc_md.idle_loop = dedicated_idle;
}
} else {
printk(KERN_INFO "Using default idle loop\n");
ppc_md.idle_loop = default_idle;
}
} }
static int __init pSeries_init_panel(void) static int __init pSeries_init_panel(void)
......
...@@ -186,6 +186,8 @@ void __init pmac_setup_arch(void) ...@@ -186,6 +186,8 @@ void __init pmac_setup_arch(void)
#ifdef CONFIG_DUMMY_CONSOLE #ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con; conswitchp = &dummy_con;
#endif #endif
printk(KERN_INFO "Using native/NAP idle loop\n");
} }
#ifdef CONFIG_SCSI #ifdef CONFIG_SCSI
...@@ -507,5 +509,6 @@ struct machdep_calls __initdata pmac_md = { ...@@ -507,5 +509,6 @@ struct machdep_calls __initdata pmac_md = {
.calibrate_decr = pmac_calibrate_decr, .calibrate_decr = pmac_calibrate_decr,
.feature_call = pmac_do_feature_call, .feature_call = pmac_do_feature_call,
.progress = pmac_progress, .progress = pmac_progress,
.check_legacy_ioport = pmac_check_legacy_ioport .check_legacy_ioport = pmac_check_legacy_ioport,
.idle_loop = native_idle,
}; };
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