Re: [RFC][PATCH] kmap_atomic_push

From: Andi Kleen
Date: Mon Oct 12 2009 - 14:41:58 EST


On Mon, Oct 12, 2009 at 11:30:07AM -0700, Linus Torvalds wrote:
>
>
> On Mon, 12 Oct 2009, Andi Kleen wrote:
>
> > Peter Zijlstra <peterz@xxxxxxxxxxxxx> writes:
> > > -
> > > -static inline void debug_kmap_atomic(enum km_type type)
> > > +static inline int kmap_atomic_push_idx(void)
> > > {
> > > + int idx = __get_cpu_var(__kmap_atomic_depth)++;
> >
> > The counter needs to be of local atomic type. Otherwise kmap_atomic cannot
> > be done from interrupts/nmis, which is unfortunately occasionally needed.
>
> I thought so too on lookin gat it initially, but it's not actually true.
>
> It's both IRQ and NMI safe as-is, for a very simple reason: any interrupts

Good point, thanks.

I was thinking of CPU migration in interrupt cases, but even there
it should be ok in mainline.

I suppose it's not true for the preempt-rt folks (who can migrate
CPUs at any time), so it might be still more friendly to handle it for them
though.

-Andi

--
ak@xxxxxxxxxxxxxxx -- Speaking for myself only.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/