On Tue, Aug 19, 2008 at 09:42:36AM -0500, Christoph Lameter wrote: > Nick Piggin wrote: > > > +static void free_unmap_vmap_area(struct vmap_area *va) > > +{ > > + va->flags |= VM_LAZY_FREE; > > + atomic_add((va->va_end - va->va_start) >> PAGE_SHIFT, &vmap_lazy_nr); > > + if (unlikely(atomic_read(&vmap_lazy_nr) > LAZY_MAX)) > > + purge_vmap_area_lazy(); > > +} > > Could you check here if we are in an atomic context and then simply not purge > the vmap area? That may we may get to a vfree that can be run in an atomic > context. If the locks and per-cpu access is made irq safe, then yes. > Or run purge_vma_area_lazy from keventd? Right. But that's only needed if we want to vmap from irq context too (otherwise we can just do the purge check at vmap time). Is there any good reason to be able to vmap or vunmap from interrupt time, though? -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html