| 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