Re: [PATCH V2 1/4] vmalloc: introduce vfree_atomic()

Lai Jiangshan
2008-11-18T11:41:58Z

Nick Piggin wrote:
> On Tuesday 18 November 2008 19:51, Lai Jiangshan wrote:
>> fdtable and sysipc use vfree() in RCU callback. this patch
>> introduce vfree_atomic() for them.
>
> AFAIKS, vfree is usable from atomic context? What am I missing?

Hi, Nick Piggin,

Sorry for misled you.

fdtable and sysipc use vfree() in RCU callback.(_but defer it by schedule_work()_)
current vfree() is not usable from atomic context, so this patches are worthy.

even if vfree() is usable from atomic context soon,
[PATCH 3/4] [PATCH 4/4] are still worthy now. Because these two patches are
independent from vfree().(just needs to be changed one or two lines
when vfree() is usable from atomic context)

I suggest we can use vfree_atomic() before vfree() is available
for atomic context. Because fdtable and sysipc need a grace way for
using RCU and vmalloc/vfree. (actually, fdtable and sysipc have implemented
they own "vfree_atomic()", but it's very ugly)

Thanx, Lai.

> Actually, one could argue that we don't want to perform such
> costly operations in the atomic context, however with lazy
> unmapping, vfree is very cheap now (amortized, at least).
>

I'm looking forward to vfree() is available for atomic context.

> But it should be much cheaper on average not to schedule this in
> another context.
>
> If there was any concern about the TLB flush from atomic context,
> we should just defer the lazy flushing, rather than every single
> vunmap.
>
>
>