From fc2be569e8b518ff9279bd6ee29308fca3414059 Mon Sep 17 00:00:00 2001 From: Tao Huang Date: Fri, 26 Aug 2016 19:19:04 +0800 Subject: [PATCH] HACK: lib/kobject_uevent.c: ignore thermal uevent when suspend Android healthd try to listen power_supply subsystem uevent, but which will block system from suspend on big.LITTLE system because thermal_cooling_device_unregister will called when cpufreq_exit. So ignore this uevent when suspend. Change-Id: I35948498916560d5ec75fe561c9e9d588663ad22 Signed-off-by: Tao Huang --- lib/kobject_uevent.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index c87d5b6a8a55..9d1946dfa176 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -520,6 +520,21 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action, return 0; } + if (IS_ENABLED(CONFIG_ARCH_ROCKCHIP) && + IS_ENABLED(CONFIG_FREEZER) && + IS_ENABLED(CONFIG_ANDROID)) { + /* + * Android healthd try to listen power_supply subsystem uevent, + * but which will block system from suspend on big.LITTLE system + * because thermal_cooling_device_unregister will called when + * cpufreq_exit. So ignore this uevent when suspend. + */ + extern bool pm_freezing; + + if (pm_freezing && !strcmp(subsystem, "thermal")) + return 0; + } + /* environment buffer */ env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL); if (!env)