[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] cpuidle: add comments for hpet cpumask_lock usage
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1276866584 -3600 # Node ID 9f257ab92ae4c07dc39b63aabd9867f179d6da25 # Parent 96c2178bd4488bc456b04193d8a7c1a62553343e cpuidle: add comments for hpet cpumask_lock usage Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx> --- xen/arch/x86/hpet.c | 11 +++++++++++ 1 files changed, 11 insertions(+) diff -r 96c2178bd448 -r 9f257ab92ae4 xen/arch/x86/hpet.c --- a/xen/arch/x86/hpet.c Fri Jun 18 14:09:29 2010 +0100 +++ b/xen/arch/x86/hpet.c Fri Jun 18 14:09:44 2010 +0100 @@ -34,6 +34,17 @@ struct hpet_event_channel int shift; s_time_t next_event; cpumask_t cpumask; + /* + * cpumask_lock is used to prevent hpet intr handler from accessing other + * cpu's timer_deadline_start/end after the other cpu's mask was cleared -- + * mask cleared means cpu waken up, then accessing timer_deadline_xxx from + * other cpu is not safe. + * It is not used for protecting cpumask, so set ops needn't take it. + * Multiple cpus clear cpumask simultaneously is ok due to the atomic + * feature of cpu_clear, so hpet_broadcast_exit() can take read lock for + * clearing cpumask, and handle_hpet_broadcast() have to take write lock + * for read cpumask & access timer_deadline_xxx. + */ rwlock_t cpumask_lock; spinlock_t lock; void (*event_handler)(struct hpet_event_channel *); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |