linux-uconsole/drivers/cpufreq
Mikulas Patocka ea9bc74573 cpufreq: speedstep-smi: enable interrupts when waiting
commit d4d4eda237 upstream.

On Dell Latitude C600 laptop with Pentium 3 850MHz processor, the
speedstep-smi driver sometimes loads and sometimes doesn't load with
"change to state X failed" message.

The hardware sometimes refuses to change frequency and in this case, we
need to retry later. I found out that we need to enable interrupts while
waiting. When we enable interrupts, the hardware blockage that prevents
frequency transition resolves and the transition is possible. With
disabled interrupts, the blockage doesn't resolve (no matter how long do
we wait). The exact reasons for this hardware behavior are unknown.

This patch enables interrupts in the function speedstep_set_state that can
be called with disabled interrupts. However, this function is called with
disabled interrupts only from speedstep_get_freqs, so it shouldn't cause
any problem.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2015-03-06 14:40:48 -08:00
..
acpi-cpufreq.c acpi-cpufreq: set current frequency based on target P-State 2013-06-05 13:10:57 +02:00
amd_freq_sensitivity.c cpufreq: AMD "frequency sensitivity feedback" powersave bias for ondemand governor 2013-04-10 13:19:26 +02:00
arm_big_little.c cpufreq: ARM big LITTLE: Improve print message 2013-05-12 14:04:15 +02:00
arm_big_little.h cpufreq: ARM big LITTLE: Move cpu_to_cluster() to arm_big_little.h 2013-05-12 14:04:15 +02:00
arm_big_little_dt.c cpufreq: arm_big_little_dt: Instantiate as platform_driver 2013-05-22 12:43:33 +02:00
at32ap-cpufreq.c cpufreq: AVR32: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
blackfin-cpufreq.c cpufreq: blackfin: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
cpufreq-cpu0.c cpufreq: cpufreq-cpu0: use the exact frequency for clk_set_rate() 2013-06-05 13:51:29 +02:00
cpufreq-nforce2.c cpufreq: drivers: Remove unnecessary assignments of policy-> members 2013-04-02 15:26:32 +02:00
cpufreq.c cpufreq: Fix governor start/stop race condition 2014-04-14 06:42:19 -07:00
cpufreq_conservative.c cpufreq: rename ignore_nice as ignore_nice_load 2013-08-14 22:59:06 -07:00
cpufreq_governor.c cpufreq: ondemand: Change the calculation of target frequency 2014-10-09 12:18:43 -07:00
cpufreq_governor.h cpufreq: ondemand: Change the calculation of target frequency 2014-10-09 12:18:43 -07:00
cpufreq_ondemand.c cpufreq: ondemand: Change the calculation of target frequency 2014-10-09 12:18:43 -07:00
cpufreq_performance.c cpufreq: Improve debug prints 2012-11-15 00:33:06 +01:00
cpufreq_powersave.c cpufreq: Improve debug prints 2012-11-15 00:33:06 +01:00
cpufreq_stats.c cpufreq: Fix wrong time unit conversion 2014-10-09 12:18:43 -07:00
cpufreq_userspace.c cpufreq: Don't check cpu_online(policy->cpu) 2013-02-09 01:18:34 +01:00
cris-artpec3-cpufreq.c cpufreq: cris: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
cris-etraxfs-cpufreq.c cpufreq: cris: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
davinci-cpufreq.c cpufreq: davinci: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
dbx500-cpufreq.c cpufreq: dbx500: Round to closest available freq 2013-04-11 23:23:57 +02:00
e_powersaver.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
elanfreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
exynos-cpufreq.c cpufreq: exynos: Remove error return even if no soc is found 2013-04-10 13:19:26 +02:00
exynos-cpufreq.h arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos4x12-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos4210-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos5250-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos5440-cpufreq.c cpufreq: exynos5440: Protect OPP search calls with RCU lock 2013-04-22 00:24:37 +02:00
freq_table.c cpufreq: Don't check cpu_online(policy->cpu) 2013-02-09 01:18:34 +01:00
gx-suspmod.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
highbank-cpufreq.c cpufreq: highbank-cpufreq: Enable Midway/ECX-2000 2013-12-04 10:57:18 -08:00
ia64-acpi-cpufreq.c cpufreq: ia64: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
imx6q-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
integrator-cpufreq.c cpufreq: integrator: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
intel_pstate.c cpufreq: intel_pstate: Fix setting max_perf_pct in performance policy 2014-11-14 08:47:58 -08:00
Kconfig cpufreq: Fix incorrect dependecies for ARM SA11xx drivers 2013-05-12 14:04:16 +02:00
Kconfig.arm cpufreq: ARM big LITTLE: Fix Kconfig entries 2013-05-12 14:04:16 +02:00
Kconfig.powerpc cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
Kconfig.x86 cpufreq / e_powersaver: Fix linker error when ACPI processor is a module 2013-05-22 12:41:25 +02:00
kirkwood-cpufreq.c cpufreq / kirkwood: don't check resource with devm_ioremap_resource 2013-05-12 14:04:17 +02:00
longhaul.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
longhaul.h sections: fix section conflicts in drivers/cpufreq 2012-09-14 21:10:46 +02:00
longrun.c cpufreq: Add support for x86 cpuinfo auto loading v4 2012-01-26 16:49:06 -08:00
loongson2_cpufreq.c cpufreq: loongson2: fix regression related to clock management 2013-08-14 22:59:06 -07:00
Makefile cpufreq: Makefile: fix compilation for davinci platform 2014-07-17 15:58:01 -07:00
maple-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
mperf.c [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
mperf.h [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
omap-cpufreq.c cpufreq: OMAP: instantiate omap-cpufreq as a platform_driver 2013-04-10 13:41:00 +02:00
p4-clockmod.c cpufreq: Don't check if cpu is online/offline for cpufreq callbacks 2013-04-02 15:26:32 +02:00
pcc-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
powernow-k6.c powernow-k6: reorder frequencies 2014-04-14 06:42:14 -07:00
powernow-k7.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
powernow-k7.h [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
powernow-k8.c cpufreq: powernow-k8: Initialize per-cpu data-structures properly 2014-03-06 21:30:09 -08:00
powernow-k8.h cpufreq: Remove support for hardware P-state chips from powernow-k8 2012-09-09 22:05:30 +02:00
ppc_cbe_cpufreq.c cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc_cbe_cpufreq.h cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc_cbe_cpufreq_pervasive.c cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc_cbe_cpufreq_pmi.c cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
pxa2xx-cpufreq.c cpufreq: pxa2xx: initialize variables 2013-04-25 20:11:14 +02:00
pxa3xx-cpufreq.c cpufreq: pxa3xx: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
s3c64xx-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
s3c2416-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
s5pv210-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
sa1100-cpufreq.c cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
sa1110-cpufreq.c cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
sc520_freq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
sh-cpufreq.c cpufreq: sh: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:25 +02:00
sparc-us2e-cpufreq.c cpufreq: sparc: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
sparc-us3-cpufreq.c cpufreq: sparc: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
spear-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
speedstep-centrino.c cpufreq: Don't check if cpu is online/offline for cpufreq callbacks 2013-04-02 15:26:32 +02:00
speedstep-ich.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
speedstep-lib.c cpufreq: speedstep-smi: enable interrupts when waiting 2015-03-06 14:40:48 -08:00
speedstep-lib.h [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
speedstep-smi.c cpufreq: speedstep-smi: enable interrupts when waiting 2015-03-06 14:40:48 -08:00
tegra-cpufreq.c cpufreq: tegra: Move driver to drivers/cpufreq 2013-04-08 13:02:30 +02:00
unicore2-cpufreq.c cpufreq: unicore2: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00