From 58f443ef96965f083dda689adafa404bd321877c Mon Sep 17 00:00:00 2001 From: "Huang, Tao" 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: Huang, Tao --- lib/kobject_uevent.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/kobject_uevent.c b/lib/kobject_uevent.c index f6c2c1e7779c..586f2f57fbfc 100644 --- a/lib/kobject_uevent.c +++ b/lib/kobject_uevent.c @@ -223,6 +223,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) -- 2.34.1