|
|
Log in / Subscribe / Register

Two alternatives for mm async teardown

From:  Claudio Imbrenda <imbrenda-AT-linux.ibm.com>
To:  linux-kernel-AT-vger.kernel.org, linux-mm-AT-kvack.org
Subject:  [RFC v1 0/4] Two alternatives for mm async teardown
Date:  Thu, 11 Nov 2021 10:50:03 +0100
Message-ID:  <20211111095008.264412-1-imbrenda@linux.ibm.com>
Cc:  thuth-AT-redhat.com, frankja-AT-linux.ibm.com, borntraeger-AT-de.ibm.com, Ulrich.Weigand-AT-de.ibm.com, heiko.carstens-AT-de.ibm.com, david-AT-redhat.com, ultrachin-AT-163.com, akpm-AT-linux-foundation.org, vbabka-AT-suse.cz, brookxu.cn-AT-gmail.com, xiaoggchen-AT-tencent.com, linuszeng-AT-tencent.com, yihuilu-AT-tencent.com, mhocko-AT-suse.com, daniel.m.jordan-AT-oracle.com, axboe-AT-kernel.dk, legion-AT-kernel.org, peterz-AT-infradead.org, aarcange-AT-redhat.com, christian-AT-brauner.io, ebiederm-AT-xmission.com, tglx-AT-linutronix.de
Archive-link:  Article

This RFC series proposes two possible ways for enabling asynchronous mm
teardown.

The first approach, in patch 1, is simply to provide an arch hook in
exit_mm. This has no functional change for archs that don't explicitly
use the hook, and leaves the hard part to arch code (including
accounting, if any).

The second approach, in patches 2 to 4, adds a new syscall to allow an
mm to be asynchronously torn down in the context of another process
(similarly to how process_mrelease works). It also adds an OOM notifier
to prevent the OOM killer from killing processes while the teardown is
in progress.


Claudio Imbrenda (4):
  exit: add arch mmput hook in exit_mm
  kernel/fork.c: implement new process_mmput_async syscall
  mm: wire up the process_mmput_async syscall
  kernel/fork.c: process_mmput_async: stop OOM while freeing memory

 arch/alpha/kernel/syscalls/syscall.tbl      |   2 +
 arch/arm/tools/syscall.tbl                  |   1 +
 arch/arm64/include/asm/unistd.h             |   2 +-
 arch/arm64/include/asm/unistd32.h           |   2 +
 arch/ia64/kernel/syscalls/syscall.tbl       |   2 +
 arch/m68k/kernel/syscalls/syscall.tbl       |   2 +
 arch/microblaze/kernel/syscalls/syscall.tbl |   2 +
 arch/mips/kernel/syscalls/syscall_n32.tbl   |   2 +
 arch/mips/kernel/syscalls/syscall_n64.tbl   |   2 +
 arch/mips/kernel/syscalls/syscall_o32.tbl   |   2 +
 arch/parisc/kernel/syscalls/syscall.tbl     |   2 +
 arch/powerpc/kernel/syscalls/syscall.tbl    |   2 +
 arch/s390/kernel/syscalls/syscall.tbl       |   2 +
 arch/sh/kernel/syscalls/syscall.tbl         |   2 +
 arch/sparc/kernel/syscalls/syscall.tbl      |   2 +
 arch/x86/entry/syscalls/syscall_32.tbl      |   1 +
 arch/x86/entry/syscalls/syscall_64.tbl      |   1 +
 arch/xtensa/kernel/syscalls/syscall.tbl     |   2 +
 include/asm-generic/mmu_context.h           |   4 +
 include/linux/mm_types.h                    |   1 +
 include/linux/syscalls.h                    |   1 +
 include/uapi/asm-generic/unistd.h           |   5 +-
 kernel/exit.c                               |   2 +-
 kernel/fork.c                               | 131 +++++++++++++++++++-
 kernel/sys_ni.c                             |   1 +
 25 files changed, 173 insertions(+), 5 deletions(-)

-- 
2.31.1



Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds