linux-hardened/drivers/thermal
Maurice Petallo 05629296ee thermal: Intel SoC DTS: Don't do thermal zone update inside spin_lock
The driver calls spin_lock_irqsave during DTS interrupt. The interrupt
handle then calls thermal_zone_device_update which implicitly calls
a sleep function and produce the following bug:

BUG: sleeping function called from invalid context at kernel/locking/mutex.c:97
in_atomic(): 1, irqs_disabled(): 1, pid: 920, name: irq/86-soc_dts
CPU: 0 PID: 920 Comm: irq/86-soc_dts Tainted: G            E  3.17.0-rc2+ #1
Hardware name: Intel Corp. VALLEYVIEW B3 PLATFORM/NOTEBOOK, BIOS BYTICRB1.86C.0092.R31.1408290850 08/29/2014
 00000000 00000000 c25dbe74 c1818cfd f3cc488c c25dbe9c c1059305 c1b4063b
 00000001 00000001 00000398 f3cc488c f6817644 f6817644 f3ecc6c0 c25dbea8
 c18208f2 f6817400 c25dbebc c159b0bb c25dbedc f6817400 f32a2300 c25dbee8
Call Trace:
 [<c1818cfd>] dump_stack+0x48/0x60
 [<c1059305>] __might_sleep+0xec/0xf4
 [<c18208f2>] mutex_lock+0x1c/0x34
 [<c159b0bb>] thermal_zone_get_temp+0x34/0x59
 [<c159bde5>] thermal_zone_device_update+0x2d/0xcb
 [<f85da16a>] ? iosf_mbi_write+0x6c/0x74 [iosf_mbi]
 [<f7c7445d>] soc_irq_thread_fn+0x10c/0x163 [intel_soc_dts_thermal]
 [<c107b72b>] irq_thread_fn+0x18/0x2a
 [<c107bedb>] irq_thread+0x81/0x11f
 [<c107b713>] ? irq_finalize_oneshot+0x7c/0x7c
 [<c107bf79>] ? irq_thread+0x11f/0x11f
 [<c107be5a>] ? wake_threads_waitq+0x31/0x31
 [<c1054217>] kthread+0x87/0x8c
 [<c1821e41>] ret_from_kernel_thread+0x21/0x30
 [<c1054190>] ? __kthread_parkme+0x55/0x55

Signed-off-by: Maurice Petallo <mauricex.r.petallo@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Acked-by: Eduardo Valentin <edubezval@gmail.com>
CC: Kweh, Hock Leong <hock.leong.kweh@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
2014-12-09 11:38:16 +08:00
..
int340x_thermal Thermal/int3403: Fix thermal hysteresis unit conversion 2014-11-04 19:17:32 -04:00
samsung thermal: Exynos: Deletion of unnecessary checks before two function calls 2014-11-21 15:20:17 -04:00
st thermal: sti: Ignore suspend/resume functions when !PM_SLEEP 2014-11-21 14:27:37 -04:00
ti-soc-thermal thermal: ti-soc-thermal: ti-bandgap.c: Cleaning up wrong address is checked 2014-07-01 09:52:35 +08:00
armada_thermal.c thermal: armada: Support Armada 380 SoC 2014-05-15 17:12:49 +08:00
cpu_cooling.c thermal: cpu_cooling: Update always cpufreq policy with thermal constraints 2014-11-20 18:17:11 -04:00
db8500_cpufreq_cooling.c thermal: db8500_cpufreq_cooling: remove usage of IS_ERR_OR_NULL() 2013-04-27 09:28:38 +08:00
db8500_thermal.c thermal: db8500: Fix missing mutex_unlock() in probe error paths 2013-03-26 22:08:08 +08:00
dove_thermal.c Merge branches 'misc', 'drv_cleanup', 'devm-cleanup' and 'ti-soc' of .git into next 2013-05-28 10:46:46 +08:00
fair_share.c thermal: trace: Trace when temperature is above a trip point 2014-07-29 09:28:43 -04:00
gov_bang_bang.c thermal: Added Bang-bang thermal governor 2014-08-27 15:45:58 +08:00
imx_thermal.c imx: thermal: imx_get_temp might be called before sensor clock is prepared 2014-11-09 15:42:53 -04:00
intel_powerclamp.c thermal/intel_powerclamp: add newer cpu ids 2014-05-15 17:02:18 +08:00
intel_soc_dts_thermal.c thermal: Intel SoC DTS: Don't do thermal zone update inside spin_lock 2014-12-09 11:38:16 +08:00
Kconfig Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux 2014-10-24 11:21:43 -07:00
kirkwood_thermal.c Merge branches 'misc', 'drv_cleanup', 'devm-cleanup' and 'ti-soc' of .git into next 2013-05-28 10:46:46 +08:00
Makefile Merge branch 'int340x-thermal' of .git into next 2014-10-17 14:30:58 +08:00
of-thermal.c thermal: fix multiple disbalanced device node counters 2014-11-02 23:02:49 -04:00
rcar_thermal.c thermal: rcar: remove unnecessary OOM messages 2014-05-15 17:15:26 +08:00
spear_thermal.c thermal: spear: remove unnecessary OOM messages 2014-05-15 17:15:26 +08:00
step_wise.c Merge branch 'thermal-core-fix' of .git into next 2014-10-11 09:28:13 +08:00
thermal_core.c Thermal:Remove usless if(!result) before return tz 2014-11-03 18:59:50 -04:00
thermal_core.h thermal: Added Bang-bang thermal governor 2014-08-27 15:45:58 +08:00
thermal_hwmon.c thermal: hwmon: Make the check for critical temp valid consistent 2014-06-30 10:17:27 +08:00
thermal_hwmon.h thermal: hwmon: move hwmon support to single file 2013-09-03 09:09:12 -04:00
user_space.c Thermal: build thermal governors into thermal_sys module 2013-04-14 23:28:43 +08:00
x86_pkg_temp_thermal.c thermal, x86-pkg-temp: Fix CPU hotplug callback registration 2014-03-20 13:43:47 +01:00