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

Commit c9d26423 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull more ACPI and power management updates from Rafael Wysocki:
 "These are a couple of regression fixes, cpuidle menu governor
  optimizations, fixes for ACPI proccessor and battery drivers,
  hibernation fix to avoid problems related to the e820 memory map,
  fixes for a few cpufreq drivers and a new version of the suspend
  profiling tool analyze_suspend.py.

  Specifics:

   - Fix for an ACPI-based device hotplug regression introduced in 3.14
     that causes a kernel panic to trigger when memory hot-remove is
     attempted with CONFIG_ACPI_HOTPLUG_MEMORY unset from Tang Chen

   - Fix for a cpufreq regression introduced in 3.16 that triggers a
     "sleeping function called from invalid context" bug in
     dev_pm_opp_init_cpufreq_table() from Stephen Boyd

   - ACPI battery driver fix for a warning message added in 3.16 that
     prints silly stuff sometimes from Mariusz Ceier

   - Hibernation fix for safer handling of mismatches in the 820 memory
     map between the configurations during image creation and during the
     subsequent restore from Chun-Yi Lee

   - ACPI processor driver fix to handle CPU hotplug notifications
     correctly during system suspend/resume from Lan Tianyu

   - Series of four cpuidle menu governor cleanups that also should
     speed it up a bit from Mel Gorman

   - Fixes for the speedstep-smi, integrator, cpu0 and arm_big_little
     cpufreq drivers from Hans Wennborg, Himangi Saraogi, Markus
     Pargmann and Uwe Kleine-König

   - Version 3.0 of the analyze_suspend.py suspend profiling tool from
     Todd E Brandt"

* tag 'pm+acpi-3.17-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI / battery: Fix warning message in acpi_battery_get_state()
  PM / tools: analyze_suspend.py: update to v3.0
  cpufreq: arm_big_little: fix module license spec
  cpufreq: speedstep-smi: fix decimal printf specifiers
  ACPI / hotplug: Check scan handlers in acpi_scan_hot_remove()
  cpufreq: OPP: Avoid sleeping while atomic
  cpufreq: cpu0: Do not print error message when deferring
  cpufreq: integrator: Use set_cpus_allowed_ptr
  PM / hibernate: avoid unsafe pages in e820 reserved regions
  ACPI / processor: Make acpi_cpu_soft_notify() process CPU FROZEN events
  cpuidle: menu: Lookup CPU runqueues less
  cpuidle: menu: Call nr_iowait_cpu less times
  cpuidle: menu: Use ktime_to_us instead of reinventing the wheel
  cpuidle: menu: Use shifts when calculating averages where possible
parents a11c5c9e af5b7e84
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -540,12 +540,12 @@ static int acpi_battery_get_state(struct acpi_battery *battery)
	 */
	if (battery->capacity_now > battery->full_charge_capacity
	    && battery->full_charge_capacity != ACPI_BATTERY_VALUE_UNKNOWN) {
		battery->capacity_now = battery->full_charge_capacity;
		if (battery->capacity_now != battery->design_capacity)
			printk_once(KERN_WARNING FW_BUG
				"battery: reported current charge level (%d) "
				"is higher than reported maximum charge level (%d).\n",
				battery->capacity_now, battery->full_charge_capacity);
		battery->capacity_now = battery->full_charge_capacity;
	}

	if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags)
+1 −0
Original line number Diff line number Diff line
@@ -120,6 +120,7 @@ static int acpi_cpu_soft_notify(struct notifier_block *nfb,
	unsigned int cpu = (unsigned long)hcpu;
	struct acpi_processor *pr = per_cpu(processors, cpu);
	struct acpi_device *device;
	action &= ~CPU_TASKS_FROZEN;

	/*
	 * CPU_STARTING and CPU_DYING must not sleep. Return here since
+2 −1
Original line number Diff line number Diff line
@@ -353,7 +353,8 @@ static int acpi_scan_hot_remove(struct acpi_device *device)
	unsigned long long sta;
	acpi_status status;

	if (device->handler->hotplug.demand_offline && !acpi_force_hot_remove) {
	if (device->handler && device->handler->hotplug.demand_offline
	    && !acpi_force_hot_remove) {
		if (!acpi_scan_is_offline(device, true))
			return -EBUSY;
	} else {
+5 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/cpufreq.h>
#include <linux/cpumask.h>
#include <linux/export.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of_platform.h>
#include <linux/pm_opp.h>
@@ -593,3 +594,7 @@ void bL_cpufreq_unregister(struct cpufreq_arm_bL_ops *ops)
	arm_bL_ops = NULL;
}
EXPORT_SYMBOL_GPL(bL_cpufreq_unregister);

MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.org>");
MODULE_DESCRIPTION("Generic ARM big LITTLE cpufreq driver");
MODULE_LICENSE("GPL v2");
+1 −1
Original line number Diff line number Diff line
@@ -114,4 +114,4 @@ module_platform_driver(generic_bL_platdrv);

MODULE_AUTHOR("Viresh Kumar <viresh.kumar@linaro.org>");
MODULE_DESCRIPTION("Generic ARM big LITTLE cpufreq driver via DT");
MODULE_LICENSE("GPL");
MODULE_LICENSE("GPL v2");
Loading