Change the broadcast timer based on rating of clockevent dev
PATCH 2/8 Change the broadcast timer based on rating of clockevent dev
Change the broadcast timer, if a timer with higher rating becomes available.
Signed-off-by Venkatesh Pallipadi <[email protected]>
kernel/time/tick-common.c +2 -2
@@ -200,7 +200,7 @@ cpu =smp_processor_id ();if (!cpu_isset (cpu, newdev->cpumask)) - goto out; + goto out_bc; td = &per_cpu (tick_cpu_device, cpu); curdev = td->evtdev;
@@ -265,7 +265,7 @@*/ if (tick_check_broadcast_device (newdev)) ret =NOTIFY_STOP ; -out: +spin_unlock_irqrestore (&tick_device_lock, flags);return ret;
kernel/time/tick-broadcast.c +6 -7
@@ -58,8 +58,9 @@*/ int tick_check_broadcast_device (struct clock_event_device *dev) { -if (tick_broadcast_device.evtdev || - (dev->features &CLOCK_EVT_FEAT_C3STOP )) +if ((tick_broadcast_device.evtdev && + tick_broadcast_device.evtdev->rating >= dev->rating) || + (dev->features &CLOCK_EVT_FEAT_C3STOP ))return 0 ;clockevents_exchange_device (NULL , dev);
@@ -483,11 +484,9 @@*/ void tick_broadcast_setup_oneshot (struct clock_event_device *bc) { -if (bc->mode !=CLOCK_EVT_MODE_ONESHOT ) { - bc->event_handler = tick_handle_oneshot_broadcast; -clockevents_set_mode (bc,CLOCK_EVT_MODE_ONESHOT ); - bc->next_event.tv64 =KTIME_MAX ; - } + bc->event_handler = tick_handle_oneshot_broadcast; +clockevents_set_mode (bc,CLOCK_EVT_MODE_ONESHOT ); + bc->next_event.tv64 =KTIME_MAX ; }/*