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

Commit eada238f authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branch 'pm-cpuidle'

* pm-cpuidle:
  cpuidle: Remove time measurement in poll state
  cpuidle: Remove manual selection of the multiple driver support
  cpuidle: ladder governor - use macro instead of hardcoded value
  cpuidle: big_little: Fix build error
  cpuidle: menu governor - remove unused macro STDDEV_THRESH
  cpuidle: fix permission for driver name sysfs node
  cpuidle: move idle traces to cpuidle_enter_state()
parents 7672b969 dd38c9d3
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -15,12 +15,7 @@ config CPU_IDLE
if CPU_IDLE

config CPU_IDLE_MULTIPLE_DRIVERS
        bool "Support multiple cpuidle drivers"
        default n
        help
         Allows the cpuidle framework to use different drivers for each CPU.
         This is useful if you have a system with different CPU latencies and
         states. If unsure say N.
        bool

config CPU_IDLE_GOV_LADDER
	bool "Ladder governor (for periodic timer tick)"
+1 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ config ARM_ARMADA_370_XP_CPUIDLE
config ARM_BIG_LITTLE_CPUIDLE
	bool "Support for ARM big.LITTLE processors"
	depends on ARCH_VEXPRESS_TC2_PM
	depends on MCPM
	select ARM_CPU_SUSPEND
	select CPU_IDLE_MULTIPLE_DRIVERS
	help
+2 −0
Original line number Diff line number Diff line
@@ -119,11 +119,13 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
	ktime_t time_start, time_end;
	s64 diff;

	trace_cpu_idle_rcuidle(index, dev->cpu);
	time_start = ktime_get();

	entered_state = target_state->enter(dev, drv, index);

	time_end = ktime_get();
	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);

	if (!cpuidle_state_is_coupled(dev, drv, entered_state))
		local_irq_enable();
+0 −11
Original line number Diff line number Diff line
@@ -182,10 +182,6 @@ static void __cpuidle_driver_init(struct cpuidle_driver *drv)
static int poll_idle(struct cpuidle_device *dev,
		struct cpuidle_driver *drv, int index)
{
	ktime_t	t1, t2;
	s64 diff;

	t1 = ktime_get();
	local_irq_enable();
	if (!current_set_polling_and_test()) {
		while (!need_resched())
@@ -193,13 +189,6 @@ static int poll_idle(struct cpuidle_device *dev,
	}
	current_clr_polling();

	t2 = ktime_get();
	diff = ktime_to_us(ktime_sub(t2, t1));
	if (diff > INT_MAX)
		diff = INT_MAX;

	dev->last_residency = (int) diff;

	return index;
}

+2 −2
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ static int ladder_enable_device(struct cpuidle_driver *drv,

	ldev->last_state_idx = CPUIDLE_DRIVER_STATE_START;

	for (i = 0; i < drv->state_count; i++) {
	for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) {
		state = &drv->states[i];
		lstate = &ldev->states[i];

@@ -156,7 +156,7 @@ static int ladder_enable_device(struct cpuidle_driver *drv,

		if (i < drv->state_count - 1)
			lstate->threshold.promotion_time = state->exit_latency;
		if (i > 0)
		if (i > CPUIDLE_DRIVER_STATE_START)
			lstate->threshold.demotion_time = state->exit_latency;
	}

Loading