[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Re: [PATCH] CPUIDLE: shorten hpet spin_lock holding time
On 22/04/2010 04:59, "Wei, Gang" <gang.wei@xxxxxxxxx> wrote: >>> Okay, one concern I still have is over possible races around >>> cpuidle_wakeup_mwait(). It makes use of a cpumask >>> cpuidle_mwait_flags, avoiding an IPI to cpus in the mask. However, >>> there is nothing to stop the CPU having cleared itself from that >>> cpumask before cpuidle does the write to softirq_pending. In that >>> case, even assuming the CPU is now non-idle and so wakeup is >>> spurious, a subsequent attempt to raise_softirq(TIMER_SOFTIRQ) will >>> incorrectly not IPI because the flag is already set in >>> softirq_pending? > > If a CPU cleared itself from cpuidle_mwait_flags, then this CPU didn't need a > IPI to be waken. And one useless write to softirq_pending doesn't have any > side effect. So this case should be acceptable. That's not totally convincing. The write to softirq_pending has one extra side effect: it is possible that the next time TIMER_SOFTIRQ really needs to be raised on that CPU, it will not receive notification via IPI, because the flag is already set in its softirq_pending mask. Hm, let me see if I can come up with a patch for this and post it for you. -- Keir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |