aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 17:10:21 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-02 17:10:21 -0400
commit70f6c087573eeb406252ff8d98f511eb5f71496e (patch)
treec02dcd0e75409490f11b173924ad1f2c4f45a2ff /include
parente6d9bfc63813882c896bf7ea6f6b14ca7b50b755 (diff)
parent7b5c39389c86063e86fe8f2e0093c7197ddfa60a (diff)
Merge tag 'pm+acpi-3.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull more ACPI and power management updates from Rafael Wysocki: "These are commits that were not quite ready when I sent the original pull request for 3.15-rc1 several days ago, but they have spent some time in linux-next since then and appear to be good to go. All of them are fixes and cleanups. Specifics: - Remaining changes from upstream ACPICA release 20140214 that introduce code to automatically serialize the execution of methods creating any named objects which really cannot be executed in parallel with each other anyway (previously ACPICA attempted to address that by aborting methods upon conflict detection, but that wasn't reliable enough and led to other issues). From Bob Moore and Lv Zheng. - intel_pstate fix to use del_timer_sync() instead of del_timer() in the exit path before freeing the timer structure from Dirk Brandewie (original patch from Thomas Gleixner). - cpufreq fix related to system resume from Viresh Kumar. - Serialization of frequency transitions in cpufreq that involve PRECHANGE and POSTCHANGE notifications to avoid ordering issues resulting from race conditions. From Srivatsa S Bhat and Viresh Kumar. - Revert of an ACPI processor driver change that was based on a specific interpretation of the ACPI spec which may not be correct (the relevant part of the spec appears to be incomplete). From Hanjun Guo. - Runtime PM core cleanups and documentation updates from Geert Uytterhoeven. - PNP core cleanup from Michael Opdenacker" * tag 'pm+acpi-3.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: cpufreq: Make cpufreq_notify_transition & cpufreq_notify_post_transition static cpufreq: Convert existing drivers to use cpufreq_freq_transition_{begin|end} cpufreq: Make sure frequency transitions are serialized intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop cpufreq: resume drivers before enabling governors PM / Runtime: Spelling s/competing/completing/ PM / Runtime: s/foo_process_requests/foo_process_next_request/ PM / Runtime: GENERIC_SUBSYS_PM_OPS is gone PM / Runtime: Correct documented return values for generic PM callbacks PM / Runtime: Split line longer than 80 characters PM / Runtime: dev_pm_info.runtime_error is signed Revert "ACPI / processor: Make it possible to get APIC ID via GIC" ACPICA: Enable auto-serialization as a default kernel behavior. ACPICA: Ignore sync_level for methods that have been auto-serialized. ACPICA: Add additional named objects for the auto-serialize method scan. ACPICA: Add auto-serialization support for ill-behaved control methods. ACPICA: Remove global option to serialize all control methods. PNP: remove deprecated IRQF_DISABLED
Diffstat (limited to 'include')
-rw-r--r--include/acpi/acpixf.h2
-rw-r--r--include/linux/cpufreq.h12
2 files changed, 10 insertions, 4 deletions
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
index b0b01b13ea99..44f5e9749601 100644
--- a/include/acpi/acpixf.h
+++ b/include/acpi/acpixf.h
@@ -71,7 +71,7 @@ extern u32 acpi_dbg_layer;
71 71
72/* ACPICA runtime options */ 72/* ACPICA runtime options */
73 73
74extern u8 acpi_gbl_all_methods_serialized; 74extern u8 acpi_gbl_auto_serialize_methods;
75extern u8 acpi_gbl_copy_dsdt_locally; 75extern u8 acpi_gbl_copy_dsdt_locally;
76extern u8 acpi_gbl_create_osi_method; 76extern u8 acpi_gbl_create_osi_method;
77extern u8 acpi_gbl_disable_auto_repair; 77extern u8 acpi_gbl_disable_auto_repair;
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 2d2e62c8666a..c48e595f623e 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -16,6 +16,7 @@
16#include <linux/completion.h> 16#include <linux/completion.h>
17#include <linux/kobject.h> 17#include <linux/kobject.h>
18#include <linux/notifier.h> 18#include <linux/notifier.h>
19#include <linux/spinlock.h>
19#include <linux/sysfs.h> 20#include <linux/sysfs.h>
20 21
21/********************************************************************* 22/*********************************************************************
@@ -104,6 +105,11 @@ struct cpufreq_policy {
104 * __cpufreq_governor(data, CPUFREQ_GOV_POLICY_EXIT); 105 * __cpufreq_governor(data, CPUFREQ_GOV_POLICY_EXIT);
105 */ 106 */
106 struct rw_semaphore rwsem; 107 struct rw_semaphore rwsem;
108
109 /* Synchronization for frequency transitions */
110 bool transition_ongoing; /* Tracks transition status */
111 spinlock_t transition_lock;
112 wait_queue_head_t transition_wait;
107}; 113};
108 114
109/* Only for ACPI */ 115/* Only for ACPI */
@@ -333,9 +339,9 @@ static inline void cpufreq_resume(void) {}
333int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list); 339int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list);
334int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list); 340int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list);
335 341
336void cpufreq_notify_transition(struct cpufreq_policy *policy, 342void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
337 struct cpufreq_freqs *freqs, unsigned int state); 343 struct cpufreq_freqs *freqs);
338void cpufreq_notify_post_transition(struct cpufreq_policy *policy, 344void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
339 struct cpufreq_freqs *freqs, int transition_failed); 345 struct cpufreq_freqs *freqs, int transition_failed);
340 346
341#else /* CONFIG_CPU_FREQ */ 347#else /* CONFIG_CPU_FREQ */