[lkml]   [2013]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 3/3] vdso: preallocate new vmas
On Sun, Oct 20, 2013 at 08:26:15PM -0700, Davidlohr Bueso wrote:
> From: Davidlohr Bueso <>
> Subject: [PATCH v2 3/3] vdso: preallocate new vmas
> With the exception of um and tile, architectures that use
> the install_special_mapping() function, when setting up a
> new vma at program startup, do so with the mmap_sem lock
> held for writing. Unless there's an error, this process
> ends up allocating a new vma through kmem_cache_zalloc,
> and inserting it in the task's address space.
> This patch moves the vma's space allocation outside of
> install_special_mapping(), and leaves the callers to do so
> explicitly, without depending on mmap_sem. The same goes for
> freeing: if the new vma isn't used (and thus the process fails
> at some point), it's caller's responsibility to free it -
> currently this is done inside install_special_mapping.
> Furthermore, uprobes behaves exactly the same and thus now the
> xol_add_vma() function also preallocates the new vma.
> While the changes to x86 vdso handling have been tested on both
> large and small 64-bit systems, the rest of the architectures
> are totally *untested*. Note that all changes are quite similar
> from architecture to architecture.
> Signed-off-by: Davidlohr Bueso <>
> Cc: Russell King <>
> Cc: Catalin Marinas <>
> Cc: Will Deacon <>
> Cc: Richard Kuo <>
> Cc: Ralf Baechle <>
> Cc: Benjamin Herrenschmidt <>
> Cc: Paul Mackerras <>
> Cc: Martin Schwidefsky <>
> Cc: Heiko Carstens <>
> Cc: Paul Mundt <>
> Cc: Chris Metcalf <>
> Cc: Jeff Dike <>
> Cc: Richard Weinberger <>
> Cc: Thomas Gleixner <>
> Cc: Ingo Molnar <>
> Cc: "H. Peter Anvin" <>
> Cc: Peter Zijlstra <>
> ---
> v2:
> - Simplify install_special_mapping interface (Linus Torvalds)
> - Fix return for uml_setup_stubs when mem allocation fails (Richard Weinberger)

I'm still confused as to why you're seeing any gains with this
one. This code runs during exec when mm isn't shared with any other
threads yet, so why does it matter how long the mmap_sem is held since
nobody else can contend on it ? (well, except for accesses from
/fs/proc/base.c, but I don't see why these would matter in your
benchmarks either).

Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.

 \ /
  Last update: 2013-10-23 12:01    [W:0.181 / U:12.456 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site