From: Andrew Morton <akpm@osdl.org>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Len Brown <lenb@kernel.org>, John Stultz <johnstul@us.ibm.com>,
Andi Kleen <ak@suse.de>, Roman Zippel <zippel@linux-m68k.org>
Subject: Re: [patch 01/19] hrtimers: state tracking
Date: Fri, 10 Nov 2006 01:40:53 -0800 [thread overview]
Message-ID: <20061110014053.5208f35e.akpm@osdl.org> (raw)
In-Reply-To: <1163150389.3138.608.camel@laptopd505.fenrus.org>
On Fri, 10 Nov 2006 10:19:48 +0100
Arjan van de Ven <arjan@infradead.org> wrote:
>
> > +/*
> > + * Bit values to track state of the timer
> > + *
> > + * Possible states:
> > + *
> > + * 0x00 inactive
> > + * 0x01 enqueued into rbtree
> > + * 0x02 callback function running
> > + * 0x03 callback function running and enqueued
> > + * (was requeued on another CPU)
> > + *
> > + * The "callback function running and enqueued" status is only possible on
> > + * SMP. It happens for example when a posix timer expired and the callback
> > + * queued a signal. Between dropping the lock which protects the posix timer
> > + * and reacquiring the base lock of the hrtimer, another CPU can deliver the
> > + * signal and rearm the timer. We have to preserve the callback running state,
> > + * as otherwise the timer could be removed before the softirq code finishes the
> > + * the handling of the timer.
> > + *
> > + * The HRTIMER_STATE_ENQUEUE bit is always or'ed to the current state to
> > + * preserve the HRTIMER_STATE_CALLBACK bit in the above scenario.
> > + *
> > + * All state transitions are protected by cpu_base->lock.
> > + */
> > +#define HRTIMER_STATE_INACTIVE 0x00
> > +#define HRTIMER_STATE_ENQUEUED 0x01
> > +#define HRTIMER_STATE_CALLBACK 0x02
>
> where is the define for 0x03?
>
> >
> > +static inline int hrtimer_is_queued(struct hrtimer *timer)
> > +{
> > + return timer->state != HRTIMER_STATE_INACTIVE &&
> > + timer->state != HRTIMER_STATE_CALLBACK;
> > +}
>
> the state things are either bits or they're not. If they're bits, you
> probably want to make this a bitcheck instead...
> > rb_insert_color(&timer->node, &base->active);
> > + /*
> > + * HRTIMER_STATE_ENQUEUED is or'ed to the current state to preserve the
> > + * state of a possibly running callback.
> > + */
> > + timer->state |= HRTIMER_STATE_ENQUEUED;
>
> ok so it IS a bit thing, see comment about hrtimer_is_queued() not being
> a bit check then...
>
eek. I exhaustively went over that confusion in my initial (and lengthy)
review of these patches.
I don't think we ever saw a point-by-point reply. What got lost?
next prev parent reply other threads:[~2006-11-10 9:45 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-09 23:38 [patch 00/21] Highres / dynticks drop in replacement for 2.6.19-rc5-mm1 Thomas Gleixner
2006-11-09 23:38 ` [patch 01/19] hrtimers: state tracking Thomas Gleixner
2006-11-10 9:19 ` Arjan van de Ven
2006-11-10 9:40 ` Andrew Morton [this message]
2006-11-10 9:45 ` Thomas Gleixner
2006-11-23 22:26 ` Roman Zippel
2006-11-09 23:38 ` [patch 02/19] hrtimers: clean up callback tracking Thomas Gleixner
2006-11-10 9:20 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 03/19] hrtimers: Move and add documentation Thomas Gleixner
2006-11-09 23:38 ` [patch 04/19] Add a framework to manage clock event devices Thomas Gleixner
2006-11-10 9:47 ` Arjan van de Ven
2006-11-23 22:36 ` Roman Zippel
2006-11-09 23:38 ` [patch 05/19] ACPI: Include apic.h Thomas Gleixner
2006-11-09 23:38 ` [patch 06/19] ACPI: Keep track of timer broadcast Thomas Gleixner
2006-11-10 9:51 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 07/19] ACPI: Add state propagation for dynamic broadcasting Thomas Gleixner
2006-11-10 9:52 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 08/19] i386: cleanup apic code Thomas Gleixner
2006-11-10 10:04 ` Arjan van de Ven
2006-11-10 10:16 ` Thomas Gleixner
2006-11-10 10:16 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 09/19] i386: Convert to clock event devices Thomas Gleixner
2006-11-10 10:10 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 10/19] PM_timer: allow early access and move externs to a header file Thomas Gleixner
2006-11-10 10:12 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 11/19] i386: Rework local APIC calibration Thomas Gleixner
2006-11-10 10:17 ` Arjan van de Ven
2006-11-10 10:23 ` Thomas Gleixner
2006-11-10 11:10 ` Ingo Molnar
2006-11-09 23:38 ` [patch 12/19] high-res timers: core Thomas Gleixner
2006-11-10 10:26 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 13/19] GTOD: Mark TSC unusable for highres timers Thomas Gleixner
2006-11-10 1:10 ` john stultz
2006-11-10 5:10 ` Andi Kleen
2006-11-10 8:10 ` Thomas Gleixner
2006-11-10 8:50 ` Andrew Morton
2006-11-10 8:57 ` Ingo Molnar
2006-11-10 9:13 ` Andrew Morton
2006-11-10 9:29 ` Andi Kleen
2006-11-11 11:14 ` Thomas Gleixner
2006-11-11 13:51 ` Andi Kleen
2006-11-11 13:58 ` Thomas Gleixner
2006-11-11 13:59 ` Andi Kleen
2006-11-11 14:08 ` Thomas Gleixner
2006-11-10 10:35 ` Arjan van de Ven
2006-11-10 10:47 ` Andi Kleen
2006-11-10 10:55 ` Arjan van de Ven
2006-11-10 11:13 ` Ingo Molnar
2006-11-10 11:28 ` Andi Kleen
2006-11-10 9:27 ` Andi Kleen
2006-11-10 10:14 ` Alan Cox
2006-11-10 11:19 ` Ingo Molnar
2006-11-10 15:43 ` Chris Friesen
2006-11-10 11:12 ` Pavel Machek
2006-11-10 11:48 ` Ingo Molnar
2006-11-10 11:56 ` Andi Kleen
2006-11-10 13:12 ` Ingo Molnar
2006-11-10 12:00 ` Pavel Machek
2006-11-10 13:14 ` Ingo Molnar
2006-11-10 11:11 ` Pavel Machek
2006-11-10 10:28 ` Arjan van de Ven
2006-11-10 10:30 ` Andi Kleen
2006-11-10 10:37 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 14/19] dynticks: core code Thomas Gleixner
2006-11-09 23:38 ` [patch 15/19] dyntick: add nohz stats to /proc/stat Thomas Gleixner
2006-11-09 23:38 ` [patch 16/19] dynticks: i386 arch code Thomas Gleixner
2006-11-09 23:38 ` [patch 17/19] dynticks: Fix nmi watchdog Thomas Gleixner
2006-11-09 23:38 ` [patch 18/19] high-res timers, dynticks: enable i386 support Thomas Gleixner
2006-11-09 23:38 ` [patch 19/19] debugging feature: timer stats Thomas Gleixner
2006-11-23 22:24 ` [patch 00/21] Highres / dynticks drop in replacement for 2.6.19-rc5-mm1 Roman Zippel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20061110014053.5208f35e.akpm@osdl.org \
--to=akpm@osdl.org \
--cc=ak@suse.de \
--cc=arjan@infradead.org \
--cc=johnstul@us.ibm.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=zippel@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox