[[PATCH]] Revert "leds: handle suspend/resume in heartbeat trigger"

Jacek Anaszewski jacek.anaszewski at gmail.com
Tue Jun 13 11:44:50 PDT 2017


Hi Bo,

On 06/13/2017 04:39 AM, Zhang Bo wrote:
> This reverts commit 5ab92a7cb82c66bf30685583a38a18538e3807db.
> 
> System cannot enter suspend mode because of heartbeat led trigger.
> In autosleep_wq, try_to_suspend function will try to enter suspend
> mode in specific period. it will get wakeup_count then call pm_notifier
> chain callback function and freeze processes.
> Heartbeat_pm_notifier is called and it call led_trigger_unregister to
> change the trigger of led device to none. It will send uevent message
> and the wakeup source count changed. As wakeup_count changed, suspend
> will abort.
> 
> Signed-off-by: Zhang Bo <bo.zhang at nxp.com>
> ---
>  drivers/leds/trigger/ledtrig-heartbeat.c | 31 -------------------------------
>  1 file changed, 31 deletions(-)
> 
> diff --git a/drivers/leds/trigger/ledtrig-heartbeat.c b/drivers/leds/trigger/ledtrig-heartbeat.c
> index afa3b40..e95ea65 100644
> --- a/drivers/leds/trigger/ledtrig-heartbeat.c
> +++ b/drivers/leds/trigger/ledtrig-heartbeat.c
> @@ -20,7 +20,6 @@
>  #include <linux/sched/loadavg.h>
>  #include <linux/leds.h>
>  #include <linux/reboot.h>
> -#include <linux/suspend.h>
>  #include "../leds.h"
>  
>  static int panic_heartbeats;
> @@ -163,30 +162,6 @@ static void heartbeat_trig_deactivate(struct led_classdev *led_cdev)
>  	.deactivate = heartbeat_trig_deactivate,
>  };
>  
> -static int heartbeat_pm_notifier(struct notifier_block *nb,
> -				 unsigned long pm_event, void *unused)
> -{
> -	int rc;
> -
> -	switch (pm_event) {
> -	case PM_SUSPEND_PREPARE:
> -	case PM_HIBERNATION_PREPARE:
> -	case PM_RESTORE_PREPARE:
> -		led_trigger_unregister(&heartbeat_led_trigger);
> -		break;
> -	case PM_POST_SUSPEND:
> -	case PM_POST_HIBERNATION:
> -	case PM_POST_RESTORE:
> -		rc = led_trigger_register(&heartbeat_led_trigger);
> -		if (rc)
> -			pr_err("could not re-register heartbeat trigger\n");
> -		break;
> -	default:
> -		break;
> -	}
> -	return NOTIFY_DONE;
> -}
> -
>  static int heartbeat_reboot_notifier(struct notifier_block *nb,
>  				     unsigned long code, void *unused)
>  {
> @@ -201,10 +176,6 @@ static int heartbeat_panic_notifier(struct notifier_block *nb,
>  	return NOTIFY_DONE;
>  }
>  
> -static struct notifier_block heartbeat_pm_nb = {
> -	.notifier_call = heartbeat_pm_notifier,
> -};
> -
>  static struct notifier_block heartbeat_reboot_nb = {
>  	.notifier_call = heartbeat_reboot_notifier,
>  };
> @@ -221,14 +192,12 @@ static int __init heartbeat_trig_init(void)
>  		atomic_notifier_chain_register(&panic_notifier_list,
>  					       &heartbeat_panic_nb);
>  		register_reboot_notifier(&heartbeat_reboot_nb);
> -		register_pm_notifier(&heartbeat_pm_nb);
>  	}
>  	return rc;
>  }
>  
>  static void __exit heartbeat_trig_exit(void)
>  {
> -	unregister_pm_notifier(&heartbeat_pm_nb);
>  	unregister_reboot_notifier(&heartbeat_reboot_nb);
>  	atomic_notifier_chain_unregister(&panic_notifier_list,
>  					 &heartbeat_panic_nb);
> 

Thanks for the patch.

Added tag:

 Fixes: 5ab92a7cb82c ("leds: handle suspend/resume in heartbeat trigger")

and applied to the fixes-for-4.12-rc6 branch of linux-leds.git.

-- 
Best regards,
Jacek Anaszewski



More information about the linux-arm-kernel mailing list