From: Khalid Aziz <khalid.aziz@oracle.com>
To: akpm@linux-foundation.org, willy@infradead.org,
longpeng2@huawei.com, arnd@arndb.de, dave.hansen@linux.intel.com,
david@redhat.com, rppt@kernel.org, surenb@google.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Cc: Khalid Aziz <khalid.aziz@oracle.com>
Subject: [RFC PATCH 1/6] mm: Add new system calls mshare, mshare_unlink
Date: Tue, 18 Jan 2022 14:19:13 -0700 [thread overview]
Message-ID: <a2cc7473be38c4c4712970903e159da94140d4ec.1642526745.git.khalid.aziz@oracle.com> (raw)
In-Reply-To: <cover.1642526745.git.khalid.aziz@oracle.com>
Add two new system calls to support PTE sharing across processes through
explicit declarations of shared address space.There is almost no
implementation in this patch and it only wires up the system calls for
x86_64 only. mshare() returns a file descriptor which does not support
any operations yet.
Signed-off-by: Khalid Aziz <khalid.aziz@oracle.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
arch/x86/entry/syscalls/syscall_64.tbl | 2 +
include/uapi/asm-generic/unistd.h | 7 ++-
mm/Makefile | 2 +-
mm/mshare.c | 60 ++++++++++++++++++++++++++
4 files changed, 69 insertions(+), 2 deletions(-)
create mode 100644 mm/mshare.c
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index fe8f8dd157b4..bb403deca1ff 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -371,6 +371,8 @@
447 common memfd_secret sys_memfd_secret
448 common process_mrelease sys_process_mrelease
449 common futex_waitv sys_futex_waitv
+450 common mshare sys_mshare
+451 common mshare_unlink sys_mshare_unlink
#
# Due to a historical design error, certain syscalls are numbered differently
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 4557a8b6086f..27349ad579ff 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -883,8 +883,13 @@ __SYSCALL(__NR_process_mrelease, sys_process_mrelease)
#define __NR_futex_waitv 449
__SYSCALL(__NR_futex_waitv, sys_futex_waitv)
+#define __NR_mshare 450
+__SYSCALL(__NR_mshare, sys_mshare)
+#define __NR_mshare_unlink 451
+__SYSCALL(__NR_mshare_unlink, sys_mshare_unlink)
+
#undef __NR_syscalls
-#define __NR_syscalls 450
+#define __NR_syscalls 452
/*
* 32 bit systems traditionally used different
diff --git a/mm/Makefile b/mm/Makefile
index d6c0042e3aa0..fca44c0d5e74 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -35,7 +35,7 @@ CFLAGS_init-mm.o += $(call cc-disable-warning, override-init)
CFLAGS_init-mm.o += $(call cc-disable-warning, initializer-overrides)
mmu-y := nommu.o
-mmu-$(CONFIG_MMU) := highmem.o memory.o mincore.o \
+mmu-$(CONFIG_MMU) := highmem.o memory.o mincore.o mshare.o \
mlock.o mmap.o mmu_gather.o mprotect.o mremap.o \
msync.o page_vma_mapped.o pagewalk.o \
pgtable-generic.o rmap.o vmalloc.o
diff --git a/mm/mshare.c b/mm/mshare.c
new file mode 100644
index 000000000000..c723f8369f06
--- /dev/null
+++ b/mm/mshare.c
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * mm/mshare.c
+ *
+ * Page table sharing code
+ *
+ *
+ * Copyright (C) 2021 Oracle Corp. All rights reserved.
+ * Authors: Matthew Wilcox
+ * Khalid Aziz
+ */
+
+#include <linux/anon_inodes.h>
+#include <linux/fs.h>
+#include <linux/syscalls.h>
+
+static const struct file_operations mshare_fops = {
+};
+
+/*
+ * mshare syscall. Returns a file descriptor
+ */
+SYSCALL_DEFINE5(mshare, const char *, name, unsigned long, addr,
+ unsigned long, len, int, oflag, mode_t, mode)
+{
+ int fd;
+
+ /*
+ * Address range being shared must be aligned to pgdir
+ * boundary and its size must be a multiple of pgdir size
+ */
+ if ((addr | len) & (PGDIR_SIZE - 1))
+ return -EINVAL;
+
+ /*
+ * Allocate a file descriptor to return
+ *
+ * TODO: This code ignores the object name completely. Add
+ * support for that
+ */
+ fd = anon_inode_getfd("mshare", &mshare_fops, NULL, O_RDWR);
+
+ return fd;
+}
+
+/*
+ * mshare_unlink syscall. Close and remove the named mshare'd object
+ */
+SYSCALL_DEFINE1(mshare_unlink, const char *, name)
+{
+ int fd;
+
+ /*
+ * Delete the named object
+ *
+ * TODO: Mark mshare'd range for deletion
+ *
+ */
+ return 0;
+}
--
2.32.0
next prev parent reply other threads:[~2022-01-18 21:20 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-18 21:19 [RFC PATCH 0/6] Add support for shared PTEs across processes Khalid Aziz
2022-01-18 21:19 ` Khalid Aziz [this message]
2022-01-18 21:19 ` [RFC PATCH 2/6] mm: Add msharefs filesystem Khalid Aziz
2022-01-18 21:19 ` [RFC PATCH 3/6] mm: Add read for msharefs Khalid Aziz
2022-01-18 21:19 ` [RFC PATCH 4/6] mm: implement mshare_unlink syscall Khalid Aziz
2022-01-18 21:19 ` [RFC PATCH 5/6] mm: Add locking to msharefs syscalls Khalid Aziz
2022-01-18 21:19 ` [RFC PATCH 6/6] mm: Add basic page table sharing using mshare Khalid Aziz
2022-01-18 21:41 ` [RFC PATCH 0/6] Add support for shared PTEs across processes Dave Hansen
2022-01-18 21:46 ` Matthew Wilcox
2022-01-18 22:47 ` Khalid Aziz
2022-01-18 22:06 ` Dave Hansen
2022-01-18 22:52 ` Khalid Aziz
2022-01-19 11:38 ` Mark Hemment
2022-01-19 17:02 ` Khalid Aziz
2022-01-20 12:49 ` Mark Hemment
2022-01-20 19:15 ` Khalid Aziz
2022-01-24 15:15 ` Mark Hemment
2022-01-24 15:27 ` Matthew Wilcox
2022-01-24 22:20 ` Khalid Aziz
2022-01-21 1:08 ` Barry Song
2022-01-21 2:13 ` Matthew Wilcox
2022-01-21 7:35 ` Barry Song
2022-01-21 14:47 ` Matthew Wilcox
2022-01-21 16:41 ` Khalid Aziz
2022-01-22 1:39 ` Longpeng (Mike, Cloud Infrastructure Service Product Dept.)
2022-01-22 1:41 ` Matthew Wilcox
2022-01-22 10:18 ` Thomas Schoebel-Theuer
2022-01-22 16:09 ` Matthew Wilcox
2022-01-22 11:31 ` Mike Rapoport
2022-01-22 18:29 ` Andy Lutomirski
2022-01-24 18:48 ` Khalid Aziz
2022-01-24 19:45 ` Andy Lutomirski
2022-01-24 22:30 ` Khalid Aziz
2022-01-24 23:16 ` Andy Lutomirski
2022-01-24 23:44 ` Khalid Aziz
2022-01-25 11:42 ` Kirill A. Shutemov
2022-01-25 12:09 ` William Kucharski
2022-01-25 13:18 ` David Hildenbrand
2022-01-25 14:01 ` Kirill A. Shutemov
2022-01-25 13:23 ` Matthew Wilcox
2022-01-25 13:59 ` Kirill A. Shutemov
2022-01-25 14:09 ` Matthew Wilcox
2022-01-25 18:57 ` Kirill A. Shutemov
2022-01-25 18:59 ` Matthew Wilcox
2022-01-26 4:04 ` Matthew Wilcox
2022-01-26 10:16 ` David Hildenbrand
2022-01-26 13:38 ` Matthew Wilcox
2022-01-26 13:55 ` David Hildenbrand
2022-01-26 14:12 ` Matthew Wilcox
2022-01-26 14:30 ` David Hildenbrand
2022-01-26 14:12 ` Mike Rapoport
2022-01-26 13:42 ` Kirill A. Shutemov
2022-01-26 14:18 ` Mike Rapoport
2022-01-26 17:33 ` Khalid Aziz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a2cc7473be38c4c4712970903e159da94140d4ec.1642526745.git.khalid.aziz@oracle.com \
--to=khalid.aziz@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=dave.hansen@linux.intel.com \
--cc=david@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=longpeng2@huawei.com \
--cc=rppt@kernel.org \
--cc=surenb@google.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox