diff options
Diffstat (limited to 'kernel/time/tick-common.c')
| -rw-r--r-- | kernel/time/tick-common.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c index 43ba1bdec14c..bfda3f7f0716 100644 --- a/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c @@ -298,18 +298,17 @@ static void tick_shutdown(unsigned int *cpup)  	spin_unlock_irqrestore(&tick_device_lock, flags);  } -static void tick_suspend_periodic(void) +static void tick_suspend(void)  {  	struct tick_device *td = &__get_cpu_var(tick_cpu_device);  	unsigned long flags;  	spin_lock_irqsave(&tick_device_lock, flags); -	if (td->mode == TICKDEV_MODE_PERIODIC) -		clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_SHUTDOWN); +	clockevents_set_mode(td->evtdev, CLOCK_EVT_MODE_SHUTDOWN);  	spin_unlock_irqrestore(&tick_device_lock, flags);  } -static void tick_resume_periodic(void) +static void tick_resume(void)  {  	struct tick_device *td = &__get_cpu_var(tick_cpu_device);  	unsigned long flags; @@ -317,6 +316,8 @@ static void tick_resume_periodic(void)  	spin_lock_irqsave(&tick_device_lock, flags);  	if (td->mode == TICKDEV_MODE_PERIODIC)  		tick_setup_periodic(td->evtdev, 0); +	else +		tick_resume_oneshot();  	spin_unlock_irqrestore(&tick_device_lock, flags);  } @@ -348,13 +349,13 @@ static int tick_notify(struct notifier_block *nb, unsigned long reason,  		break;  	case CLOCK_EVT_NOTIFY_SUSPEND: -		tick_suspend_periodic(); +		tick_suspend();  		tick_suspend_broadcast();  		break;  	case CLOCK_EVT_NOTIFY_RESUME:  		if (!tick_resume_broadcast()) -			tick_resume_periodic(); +			tick_resume();  		break;  	default: | 
