Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ad74998 authored by Tony Breeds's avatar Tony Breeds Committed by Paul Mackerras
Browse files

[POWERPC] Enable tickless idle and high res timers for powerpc

parent d831d0b8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@ config HIGHMEM
	bool "High memory support"
	depends on PPC32

source kernel/time/Kconfig
source kernel/Kconfig.hz
source kernel/Kconfig.preempt
source "fs/Kconfig.binfmt"
+3 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/smp.h>
#include <linux/cpu.h>
#include <linux/sysctl.h>
#include <linux/tick.h>

#include <asm/system.h>
#include <asm/processor.h>
@@ -59,6 +60,7 @@ void cpu_idle(void)

	set_thread_flag(TIF_POLLING_NRFLAG);
	while (1) {
		tick_nohz_stop_sched_tick();
		while (!need_resched() && !cpu_should_die()) {
			ppc64_runlatch_off();

@@ -90,6 +92,7 @@ void cpu_idle(void)

		HMT_medium();
		ppc64_runlatch_on();
		tick_nohz_restart_sched_tick();
		if (cpu_should_die())
			cpu_die();
		preempt_enable_no_resched();
+6 −0
Original line number Diff line number Diff line
@@ -26,6 +26,8 @@
#include <linux/major.h>
#include <linux/root_dev.h>
#include <linux/kernel.h>
#include <linux/hrtimer.h>
#include <linux/tick.h>

#include <asm/processor.h>
#include <asm/machdep.h>
@@ -561,6 +563,7 @@ static void yield_shared_processor(void)
static void iseries_shared_idle(void)
{
	while (1) {
		tick_nohz_stop_sched_tick();
		while (!need_resched() && !hvlpevent_is_pending()) {
			local_irq_disable();
			ppc64_runlatch_off();
@@ -574,6 +577,7 @@ static void iseries_shared_idle(void)
		}

		ppc64_runlatch_on();
		tick_nohz_restart_sched_tick();

		if (hvlpevent_is_pending())
			process_iSeries_events();
@@ -589,6 +593,7 @@ static void iseries_dedicated_idle(void)
	set_thread_flag(TIF_POLLING_NRFLAG);

	while (1) {
		tick_nohz_stop_sched_tick();
		if (!need_resched()) {
			while (!need_resched()) {
				ppc64_runlatch_off();
@@ -605,6 +610,7 @@ static void iseries_dedicated_idle(void)
		}

		ppc64_runlatch_on();
		tick_nohz_restart_sched_tick();
		preempt_enable_no_resched();
		schedule();
		preempt_disable();