Messages in this thread | | | Date | Fri, 26 Jun 2015 14:38:10 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH] clockevents: return error from tick_broadcast_oneshot_control if !GENERIC_CLOCKEVENTS_BROADCAST |
| |
On Fri, 26 Jun 2015, Preeti U Murthy wrote: > On 06/26/2015 01:17 PM, Thomas Gleixner wrote: > > if (state == TICK_BROADCAST_ENTER) { > > + /* > > + * If the current CPU owns the hrtimer broadcast > > + * mechanism, it cannot go deep idle and we do not add > > + * the CPU to the broadcast mask. We don't have to go > > + * through the EXIT path as the local timer is not > > + * shutdown. > > + */ > > + ret = broadcast_needs_cpu(bc, cpu); > > + > > + /* > > + * If the hrtimer broadcast check tells us that the > > + * cpu cannot go deep idle, or if the broadcast device > > + * is in periodic mode, we just return. > > + */ > > + if (ret || tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC) > > + goto out; > > The check on PERIODIC mode is good, but I don't see the point of moving > broadcast_needs_cpu() up above. broadcast_shutdown_local() calls > broadcast_needs_cpu() internally. > > Besides, by jumping to 'out', we will miss programming the broadcast > hrtimer in tick_broadcast_set_event() below, if the cpu happen to be the > broadcast cpu(which is why it was not allowed to go to deep idle).
Hmm. Need to think a bit more about this convoluted maze ...
| |