mirror of
https://github.com/torvalds/linux.git
synced 2024-11-30 16:11:38 +00:00
469ace07c2
When register sensors into thermal zone during initialization phase, it reports error for IRQ imbalance enabling: [ 2.040713] WARNING: at kernel/irq/manage.c:513 [ 2.040719] Modules linked in: [ 2.040721] [ 2.040729] CPU: 1 PID: 804 Comm: irq/33-hisi_the Not tainted 4.5.0-rc4+ #505 [ 2.040732] Hardware name: HiKey Development Board (DT) [ 2.040736] task: ffffffc03ae82580 ti: ffffffc0379c8000 task.ti: ffffffc0379c8000 [ 2.040745] PC is at __enable_irq+0x74/0x84 [ 2.040749] LR is at __enable_irq+0x74/0x84 This warning is for IRQ imbalance enabling, which is caused by enable_irq() twice. During sensor's initialization it tries to enable IRQ, the driver will call thermal_zone_of_sensor_register() to bind sensors and read sensor's temperature. But at this moment the flag "data->irq_enabled" has been not initialized as correct state, so it finally introduces the function enabled_irq() to be called twice. In essentially this is caused by the flag "data->irq_enabled" is inconsistent with real hardware IRQ enabling state. So this patch is to fix this issue, firstly init "irq_enabled" flag before binding sensors to thermal zone. Also change to use the function irq_get_irqchip_state() to read back real interrupt line state. Signed-off-by: Leo Yan <leo.yan@linaro.org> Signed-off-by: Eduardo Valentin <edubezval@gmail.com> |
||
---|---|---|
.. | ||
int340x_thermal | ||
samsung | ||
st | ||
tegra | ||
ti-soc-thermal | ||
armada_thermal.c | ||
clock_cooling.c | ||
cpu_cooling.c | ||
db8500_cpufreq_cooling.c | ||
db8500_thermal.c | ||
devfreq_cooling.c | ||
dove_thermal.c | ||
fair_share.c | ||
gov_bang_bang.c | ||
hisi_thermal.c | ||
imx_thermal.c | ||
intel_pch_thermal.c | ||
intel_powerclamp.c | ||
intel_quark_dts_thermal.c | ||
intel_soc_dts_iosf.c | ||
intel_soc_dts_iosf.h | ||
intel_soc_dts_thermal.c | ||
Kconfig | ||
kirkwood_thermal.c | ||
Makefile | ||
mtk_thermal.c | ||
of-thermal.c | ||
power_allocator.c | ||
qcom-spmi-temp-alarm.c | ||
rcar_thermal.c | ||
rockchip_thermal.c | ||
spear_thermal.c | ||
step_wise.c | ||
thermal_core.c | ||
thermal_core.h | ||
thermal_hwmon.c | ||
thermal_hwmon.h | ||
user_space.c | ||
x86_pkg_temp_thermal.c |