Skip to content

Commit

Permalink
[PATCH] ppc64: Fixup platforms for new ppc_md.idle
Browse files Browse the repository at this point in the history
This patch fixes up iSeries, pSeries, pmac and maple to set the correct idle
function for each platform.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Michael Ellerman authored and Linus Torvalds committed Jul 8, 2005
1 parent c66d5dd commit 62d60e9
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 1 deletion.
1 change: 1 addition & 0 deletions arch/ppc64/kernel/iSeries_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -940,5 +940,6 @@ void __init iSeries_early_setup(void)
ppc_md.get_rtc_time = iSeries_get_rtc_time;
ppc_md.calibrate_decr = iSeries_calibrate_decr;
ppc_md.progress = iSeries_progress;
ppc_md.idle_loop = iSeries_idle;
}

3 changes: 3 additions & 0 deletions arch/ppc64/kernel/maple_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,8 @@ void __init maple_setup_arch(void)
#ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con;
#endif

printk(KERN_INFO "Using native/NAP idle loop\n");
}

/*
Expand Down Expand Up @@ -297,4 +299,5 @@ struct machdep_calls __initdata maple_md = {
.get_rtc_time = maple_get_rtc_time,
.calibrate_decr = generic_calibrate_decr,
.progress = maple_progress,
.idle_loop = native_idle,
};
18 changes: 18 additions & 0 deletions arch/ppc64/kernel/pSeries_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#undef DEBUG

#include <linux/config.h>
#include <linux/cpu.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/kernel.h>
Expand Down Expand Up @@ -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 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;
struct mpic *pSeries_mpic;

Expand Down Expand Up @@ -229,6 +233,20 @@ static void __init pSeries_setup_arch(void)

if (cur_cpu_spec->firmware_features & FW_FEATURE_SPLPAR)
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)
Expand Down
5 changes: 4 additions & 1 deletion arch/ppc64/kernel/pmac_setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,8 @@ void __init pmac_setup_arch(void)
#ifdef CONFIG_DUMMY_CONSOLE
conswitchp = &dummy_con;
#endif

printk(KERN_INFO "Using native/NAP idle loop\n");
}

#ifdef CONFIG_SCSI
Expand Down Expand Up @@ -507,5 +509,6 @@ struct machdep_calls __initdata pmac_md = {
.calibrate_decr = pmac_calibrate_decr,
.feature_call = pmac_do_feature_call,
.progress = pmac_progress,
.check_legacy_ioport = pmac_check_legacy_ioport
.check_legacy_ioport = pmac_check_legacy_ioport,
.idle_loop = native_idle,
};

0 comments on commit 62d60e9

Please sign in to comment.