linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Ackerley Tng <ackerleytng@google.com>,
	kvm@vger.kernel.org, linux-api@vger.kernel.org,
	linux-arch@vger.kernel.org, linux-doc@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, qemu-devel@nongnu.org
Cc: aarcange@redhat.com, ak@linux.intel.com,
	akpm@linux-foundation.org, arnd@arndb.de, bfields@fieldses.org,
	bp@alien8.de, chao.p.peng@linux.intel.com, corbet@lwn.net,
	dave.hansen@intel.com, ddutile@redhat.com, dhildenb@redhat.com,
	hpa@zytor.com, hughd@google.com, jlayton@kernel.org,
	jmattson@google.com, joro@8bytes.org, jun.nakajima@intel.com,
	kirill.shutemov@linux.intel.com, linmiaohe@huawei.com,
	luto@kernel.org, mail@maciej.szmigiero.name, mhocko@suse.com,
	michael.roth@amd.com, mingo@redhat.com, naoya.horiguchi@nec.com,
	pbonzini@redhat.com, qperret@google.com, rppt@kernel.org,
	seanjc@google.com, shuah@kernel.org, steven.price@arm.com,
	tabba@google.com, tglx@linutronix.de, vannapurve@google.com,
	vbabka@suse.cz, vkuznets@redhat.com, wanpengli@tencent.com,
	wei.w.wang@intel.com, x86@kernel.org, yu.c.zhang@linux.intel.com
Subject: Re: [RFC PATCH v3 2/2] selftests: restrictedmem: Check hugepage-ness of shmem file backing restrictedmem fd
Date: Mon, 3 Apr 2023 10:24:37 +0200	[thread overview]
Message-ID: <9bbdc378-e66e-0a44-244b-33dffe888a2b@redhat.com> (raw)
In-Reply-To: <0061b62966d34952fb9f51235d31100df0baf450.1680306489.git.ackerleytng@google.com>

On 01.04.23 01:50, Ackerley Tng wrote:
> For memfd_restricted() calls without a userspace mount, the backing
> file should be the shmem mount in the kernel, and the size of backing
> pages should be as defined by system-wide shmem configuration.
> 
> If a userspace mount is provided, the size of backing pages should be
> as defined in the mount.
> 
> Also includes negative tests for invalid inputs, including fds
> representing read-only superblocks/mounts.
> 

When you talk about "hugepage" in this patch, do you mean THP or 
hugetlb? I suspect thp, so it might be better to spell that out. IIRC, 
there are plans to support actual huge pages in the future, at which 
point "hugepage" terminology could be misleading.

> Signed-off-by: Ackerley Tng <ackerleytng@google.com>
> ---
>   tools/testing/selftests/Makefile              |   1 +
>   .../selftests/restrictedmem/.gitignore        |   3 +
>   .../testing/selftests/restrictedmem/Makefile  |  15 +
>   .../testing/selftests/restrictedmem/common.c  |   9 +
>   .../testing/selftests/restrictedmem/common.h  |   8 +
>   .../restrictedmem_hugepage_test.c             | 486 ++++++++++++++++++
>   6 files changed, 522 insertions(+)
>   create mode 100644 tools/testing/selftests/restrictedmem/.gitignore
>   create mode 100644 tools/testing/selftests/restrictedmem/Makefile
>   create mode 100644 tools/testing/selftests/restrictedmem/common.c
>   create mode 100644 tools/testing/selftests/restrictedmem/common.h
>   create mode 100644 tools/testing/selftests/restrictedmem/restrictedmem_hugepage_test.c
> 
> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
> index f07aef7c592c..44078eeefb79 100644
> --- a/tools/testing/selftests/Makefile
> +++ b/tools/testing/selftests/Makefile
> @@ -60,6 +60,7 @@ TARGETS += pstore
>   TARGETS += ptrace
>   TARGETS += openat2
>   TARGETS += resctrl
> +TARGETS += restrictedmem
>   TARGETS += rlimits
>   TARGETS += rseq
>   TARGETS += rtc
> diff --git a/tools/testing/selftests/restrictedmem/.gitignore b/tools/testing/selftests/restrictedmem/.gitignore
> new file mode 100644
> index 000000000000..2581bcc8ff29
> --- /dev/null
> +++ b/tools/testing/selftests/restrictedmem/.gitignore
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +restrictedmem_hugepage_test
> diff --git a/tools/testing/selftests/restrictedmem/Makefile b/tools/testing/selftests/restrictedmem/Makefile
> new file mode 100644
> index 000000000000..8e5378d20226
> --- /dev/null
> +++ b/tools/testing/selftests/restrictedmem/Makefile
> @@ -0,0 +1,15 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +CFLAGS = $(KHDR_INCLUDES)
> +CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -std=gnu99
> +
> +TEST_GEN_PROGS += restrictedmem_hugepage_test
> +
> +include ../lib.mk
> +
> +EXTRA_CLEAN = $(OUTPUT)/common.o
> +
> +$(OUTPUT)/common.o: common.c
> +	$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -ffreestanding $< -o $@
> +
> +$(TEST_GEN_PROGS): $(OUTPUT)/common.o
> diff --git a/tools/testing/selftests/restrictedmem/common.c b/tools/testing/selftests/restrictedmem/common.c
> new file mode 100644
> index 000000000000..03dac843404f
> --- /dev/null
> +++ b/tools/testing/selftests/restrictedmem/common.c
> @@ -0,0 +1,9 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <sys/syscall.h>
> +#include <unistd.h>
> +
> +int memfd_restricted(unsigned int flags, int mount_fd)
> +{
> +	return syscall(__NR_memfd_restricted, flags, mount_fd);
> +}
> diff --git a/tools/testing/selftests/restrictedmem/common.h b/tools/testing/selftests/restrictedmem/common.h
> new file mode 100644
> index 000000000000..06284ed86baf
> --- /dev/null
> +++ b/tools/testing/selftests/restrictedmem/common.h
> @@ -0,0 +1,8 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef SELFTESTS_RESTRICTEDMEM_COMMON_H
> +#define SELFTESTS_RESTRICTEDMEM_COMMON_H
> +
> +int memfd_restricted(unsigned int flags, int mount_fd);
> +
> +#endif  // SELFTESTS_RESTRICTEDMEM_COMMON_H
> diff --git a/tools/testing/selftests/restrictedmem/restrictedmem_hugepage_test.c b/tools/testing/selftests/restrictedmem/restrictedmem_hugepage_test.c
> new file mode 100644
> index 000000000000..9ed319b83cb8
> --- /dev/null
> +++ b/tools/testing/selftests/restrictedmem/restrictedmem_hugepage_test.c
> @@ -0,0 +1,486 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#define _GNU_SOURCE /* for O_PATH */
> +#define _POSIX_C_SOURCE /* for PATH_MAX */
> +#include <limits.h>
> +#include <stdio.h>
> +#include <string.h>
> +#include <sys/mman.h>
> +#include <sys/mount.h>
> +#include <sys/stat.h>
> +#include <unistd.h>
> +
> +#include "linux/restrictedmem.h"
> +
> +#include "common.h"
> +#include "../kselftest_harness.h"
> +
> +/*
> + * Expect policy to be one of always, within_size, advise, never,
> + * deny, force
> + */
> +#define POLICY_BUF_SIZE 12
> +
> +static int get_hpage_pmd_size(void)
> +{
> +	FILE *fp;
> +	char buf[100];
> +	char *ret;
> +	int size;
> +
> +	fp = fopen("/sys/kernel/mm/transparent_hugepage/hpage_pmd_size", "r");
> +	if (!fp)
> +		return -1;
> +
> +	ret = fgets(buf, 100, fp);
> +	if (ret != buf) {
> +		size = -1;
> +		goto out;
> +	}
> +
> +	if (sscanf(buf, "%d\n", &size) != 1)
> +		size = -1;
> +
> +out:
> +	fclose(fp);
> +
> +	return size;
> +}
> +
> +static bool is_valid_shmem_thp_policy(char *policy)
> +{
> +	if (strcmp(policy, "always") == 0)
> +		return true;
> +	if (strcmp(policy, "within_size") == 0)
> +		return true;
> +	if (strcmp(policy, "advise") == 0)
> +		return true;
> +	if (strcmp(policy, "never") == 0)
> +		return true;
> +	if (strcmp(policy, "deny") == 0)
> +		return true;
> +	if (strcmp(policy, "force") == 0)
> +		return true;
> +
> +	return false;
> +}
> +
> +static int get_shmem_thp_policy(char *policy)
> +{
> +	FILE *fp;
> +	char buf[100];
> +	char *left = NULL;
> +	char *right = NULL;
> +	int ret = -1;
> +
> +	fp = fopen("/sys/kernel/mm/transparent_hugepage/shmem_enabled", "r");
> +	if (!fp)
> +		return -1;
> +
> +	if (fgets(buf, 100, fp) != buf)
> +		goto out;
> +
> +	/*
> +	 * Expect shmem_enabled to be of format like "always within_size advise
> +	 * [never] deny force"
> +	 */
> +	left = memchr(buf, '[', 100);
> +	if (!left)
> +		goto out;
> +
> +	right = memchr(buf, ']', 100);
> +	if (!right)
> +		goto out;
> +
> +	memcpy(policy, left + 1, right - left - 1);
> +
> +	ret = !is_valid_shmem_thp_policy(policy);
> +
> +out:
> +	fclose(fp);
> +	return ret;
> +}
> +
> +static int write_string_to_file(const char *path, const char *string)
> +{
> +	FILE *fp;
> +	size_t len = strlen(string);
> +	int ret = -1;
> +
> +	fp = fopen(path, "w");
> +	if (!fp)
> +		return ret;
> +
> +	if (fwrite(string, 1, len, fp) != len)
> +		goto out;
> +
> +	ret = 0;
> +
> +out:
> +	fclose(fp);
> +	return ret;
> +}
> +
> +static int set_shmem_thp_policy(char *policy)
> +{
> +	int ret = -1;
> +	/* +1 for newline */
> +	char to_write[POLICY_BUF_SIZE + 1] = { 0 };
> +
> +	if (!is_valid_shmem_thp_policy(policy))
> +		return ret;
> +
> +	ret = snprintf(to_write, POLICY_BUF_SIZE + 1, "%s\n", policy);
> +	if (ret != strlen(policy) + 1)
> +		return -1;
> +
> +	ret = write_string_to_file(
> +		"/sys/kernel/mm/transparent_hugepage/shmem_enabled", to_write);
> +
> +	return ret;
> +}
> +
> +FIXTURE(reset_shmem_enabled)
> +{
> +	char shmem_enabled[POLICY_BUF_SIZE];
> +};
> +
> +FIXTURE_SETUP(reset_shmem_enabled)
> +{
> +	memset(self->shmem_enabled, 0, POLICY_BUF_SIZE);
> +	ASSERT_EQ(get_shmem_thp_policy(self->shmem_enabled), 0);
> +}
> +
> +FIXTURE_TEARDOWN(reset_shmem_enabled)
> +{
> +	ASSERT_EQ(set_shmem_thp_policy(self->shmem_enabled), 0);
> +}
> +
> +TEST_F(reset_shmem_enabled, restrictedmem_fstat_shmem_enabled_never)
> +{
> +	int fd = -1;
> +	struct stat stat;
> +
> +	ASSERT_EQ(set_shmem_thp_policy("never"), 0);
> +
> +	fd = memfd_restricted(0, -1);
> +	ASSERT_GT(fd, 0);
> +
> +	ASSERT_EQ(fstat(fd, &stat), 0);
> +
> +	/*
> +	 * st_blksize is set based on the superblock's s_blocksize_bits. For
> +	 * shmem, this is set to PAGE_SHIFT
> +	 */
> +	ASSERT_EQ(stat.st_blksize, getpagesize());
> +
> +	close(fd);
> +}
> +
> +TEST_F(reset_shmem_enabled, restrictedmem_fstat_shmem_enabled_always)
> +{
> +	int fd = -1;
> +	struct stat stat;
> +
> +	ASSERT_EQ(set_shmem_thp_policy("always"), 0);
> +
> +	fd = memfd_restricted(0, -1);
> +	ASSERT_GT(fd, 0);
> +
> +	ASSERT_EQ(fstat(fd, &stat), 0);
> +
> +	ASSERT_EQ(stat.st_blksize, get_hpage_pmd_size());
> +
> +	close(fd);
> +}
> +
> +TEST(restrictedmem_tmpfile_invalid_fd)
> +{
> +	int fd = memfd_restricted(RMFD_USERMNT, -2);
> +
> +	ASSERT_EQ(fd, -1);
> +	ASSERT_EQ(errno, EINVAL);
> +}
> +
> +TEST(restrictedmem_tmpfile_fd_not_a_mount)
> +{
> +	int fd = memfd_restricted(RMFD_USERMNT, STDOUT_FILENO);
> +
> +	ASSERT_EQ(fd, -1);
> +	ASSERT_EQ(errno, EINVAL);
> +}
> +
> +TEST(restrictedmem_tmpfile_not_tmpfs_mount)
> +{
> +	int fd = -1;
> +	int mfd = -1;
> +
> +	mfd = open("/proc", O_PATH);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +
> +	ASSERT_EQ(fd, -1);
> +	ASSERT_EQ(errno, EINVAL);
> +}
> +
> +FIXTURE(tmpfs_hugepage_sfd)
> +{
> +	int sfd;
> +};
> +
> +FIXTURE_SETUP(tmpfs_hugepage_sfd)
> +{
> +	self->sfd = fsopen("tmpfs", 0);
> +	ASSERT_NE(self->sfd, -1);
> +}
> +
> +FIXTURE_TEARDOWN(tmpfs_hugepage_sfd)
> +{
> +	EXPECT_EQ(close(self->sfd), 0);
> +}
> +
> +TEST_F(tmpfs_hugepage_sfd, restrictedmem_fstat_tmpfs_huge_always)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int mfd = -1;
> +	struct stat stat;
> +
> +	fsconfig(self->sfd, FSCONFIG_SET_STRING, "huge", "always", 0);
> +	fsconfig(self->sfd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
> +
> +	mfd = fsmount(self->sfd, 0, 0);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +	ASSERT_GT(fd, 0);
> +
> +	/* User can close reference to mount */
> +	ret = close(mfd);
> +	ASSERT_EQ(ret, 0);
> +
> +	ret = fstat(fd, &stat);
> +	ASSERT_EQ(ret, 0);
> +	ASSERT_EQ(stat.st_blksize, get_hpage_pmd_size());
> +
> +	close(fd);
> +}
> +
> +TEST_F(tmpfs_hugepage_sfd, restrictedmem_fstat_tmpfs_huge_never)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int mfd = -1;
> +	struct stat stat;
> +
> +	fsconfig(self->sfd, FSCONFIG_SET_STRING, "huge", "never", 0);
> +	fsconfig(self->sfd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
> +
> +	mfd = fsmount(self->sfd, 0, 0);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +	ASSERT_GT(fd, 0);
> +
> +	/* User can close reference to mount */
> +	ret = close(mfd);
> +	ASSERT_EQ(ret, 0);
> +
> +	ret = fstat(fd, &stat);
> +	ASSERT_EQ(ret, 0);
> +	ASSERT_EQ(stat.st_blksize, getpagesize());
> +
> +	close(fd);
> +}
> +
> +TEST_F(tmpfs_hugepage_sfd, restrictedmem_check_mount_flags)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int mfd = -1;
> +
> +	fsconfig(self->sfd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
> +
> +	mfd = fsmount(self->sfd, 0, MOUNT_ATTR_RDONLY);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +	ASSERT_EQ(fd, -1);
> +	ASSERT_EQ(errno, EROFS);
> +
> +	ret = close(mfd);
> +	ASSERT_EQ(ret, 0);
> +}
> +
> +TEST_F(tmpfs_hugepage_sfd, restrictedmem_check_superblock_flags)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int mfd = -1;
> +
> +	fsconfig(self->sfd, FSCONFIG_SET_FLAG, "ro", NULL, 0);
> +	fsconfig(self->sfd, FSCONFIG_CMD_CREATE, NULL, NULL, 0);
> +
> +	mfd = fsmount(self->sfd, 0, 0);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +	ASSERT_EQ(fd, -1);
> +	ASSERT_EQ(errno, EROFS);
> +
> +	ret = close(mfd);
> +	ASSERT_EQ(ret, 0);
> +}
> +
> +static bool directory_exists(const char *path)
> +{
> +	struct stat sb;
> +
> +	return stat(path, &sb) == 0 && S_ISDIR(sb.st_mode);
> +}
> +
> +FIXTURE(tmpfs_hugepage_mount_path)
> +{
> +	char *mount_path;
> +};
> +
> +FIXTURE_SETUP(tmpfs_hugepage_mount_path)
> +{
> +	int ret = -1;
> +
> +	/* /tmp is an FHS-mandated world-writable directory */
> +	self->mount_path = "/tmp/restrictedmem-selftest-mnt";
> +
> +	if (!directory_exists(self->mount_path)) {
> +		ret = mkdir(self->mount_path, 0777);
> +		ASSERT_EQ(ret, 0);
> +	}
> +}
> +
> +FIXTURE_TEARDOWN(tmpfs_hugepage_mount_path)
> +{
> +	int ret = -1;
> +
> +	if (!directory_exists(self->mount_path))
> +		return;
> +
> +	ret = umount2(self->mount_path, MNT_FORCE);
> +	EXPECT_EQ(ret, 0);
> +	if (ret == -1 && errno == EINVAL)
> +		fprintf(stderr, "  %s was not mounted\n", self->mount_path);
> +
> +	ret = rmdir(self->mount_path);
> +	EXPECT_EQ(ret, 0);
> +	if (ret == -1)
> +		fprintf(stderr, "  rmdir(%s) failed: %m\n", self->mount_path);
> +}
> +
> +/*
> + * memfd_restricted() syscall can only be used with the fd of the root of the
> + * mount. When the restrictedmem's fd is open, a user should not be able to
> + * unmount or remove the mounted directory
> + */
> +TEST_F(tmpfs_hugepage_mount_path, restrictedmem_umount_rmdir_while_file_open)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int mfd = -1;
> +	struct stat stat;
> +
> +	ret = mount("name", self->mount_path, "tmpfs", 0, "huge=always");
> +	ASSERT_EQ(ret, 0);
> +
> +	mfd = open(self->mount_path, O_PATH);
> +	ASSERT_NE(mfd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, mfd);
> +	ASSERT_GT(fd, 0);
> +
> +	/* We don't need this reference to the mount anymore */
> +	ret = close(mfd);
> +	ASSERT_EQ(ret, 0);
> +
> +	/* restrictedmem's fd should still be usable */
> +	ret = fstat(fd, &stat);
> +	ASSERT_EQ(ret, 0);
> +	ASSERT_EQ(stat.st_blksize, get_hpage_pmd_size());
> +
> +	/* User should not be able to unmount directory */
> +	ret = umount2(self->mount_path, MNT_FORCE);
> +	ASSERT_EQ(ret, -1);
> +	ASSERT_EQ(errno, EBUSY);
> +
> +	ret = rmdir(self->mount_path);
> +	ASSERT_EQ(ret, -1);
> +	ASSERT_EQ(errno, EBUSY);
> +
> +	close(fd);
> +}
> +
> +/* The fd of a file on the mount cannot be provided as mount_fd */
> +TEST_F(tmpfs_hugepage_mount_path, restrictedmem_provide_fd_of_file)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int ffd = -1;
> +	char tmp_file_path[PATH_MAX] = { 0 };
> +
> +	ret = mount("name", self->mount_path, "tmpfs", 0, "huge=always");
> +	ASSERT_EQ(ret, 0);
> +
> +	snprintf(tmp_file_path, PATH_MAX, "%s/tmp-file", self->mount_path);
> +	ret = write_string_to_file(tmp_file_path, "filler\n");
> +	ASSERT_EQ(ret, 0);
> +
> +	ffd = open(tmp_file_path, O_RDWR);
> +	ASSERT_GT(ffd, 0);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, ffd);
> +	ASSERT_LT(fd, 0);
> +	ASSERT_EQ(errno, EINVAL);
> +
> +	ret = close(ffd);
> +	ASSERT_EQ(ret, 0);
> +
> +	close(fd);
> +	remove(tmp_file_path);
> +}
> +
> +/* The fd of files on the mount cannot be provided as mount_fd */
> +TEST_F(tmpfs_hugepage_mount_path, restrictedmem_provide_fd_of_file_in_subdir)
> +{
> +	int ret = -1;
> +	int fd = -1;
> +	int ffd = -1;
> +	char tmp_dir_path[PATH_MAX] = { 0 };
> +	char tmp_file_path[PATH_MAX] = { 0 };
> +
> +	ret = mount("name", self->mount_path, "tmpfs", 0, "huge=always");
> +	ASSERT_EQ(ret, 0);
> +
> +	snprintf(tmp_dir_path, PATH_MAX, "%s/tmp-subdir", self->mount_path);
> +	ret = mkdir(tmp_dir_path, 0777);
> +	ASSERT_EQ(ret, 0);
> +
> +	snprintf(tmp_file_path, PATH_MAX, "%s/tmp-subdir/tmp-file",
> +		 self->mount_path);
> +	ret = write_string_to_file(tmp_file_path, "filler\n");
> +	ASSERT_EQ(ret, 0);
> +
> +	ffd = open(tmp_file_path, O_RDWR);
> +	ASSERT_NE(ffd, -1);
> +
> +	fd = memfd_restricted(RMFD_USERMNT, ffd);
> +	ASSERT_LT(fd, 0);
> +	ASSERT_EQ(errno, EINVAL);
> +
> +	ret = close(ffd);
> +	ASSERT_EQ(ret, 0);
> +
> +	close(fd);
> +	remove(tmp_file_path);
> +	rmdir(tmp_dir_path);
> +}
> +
> +TEST_HARNESS_MAIN

-- 
Thanks,

David / dhildenb


  reply	other threads:[~2023-04-03  8:25 UTC|newest]

Thread overview: 398+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-31 23:50 [RFC PATCH v3 0/2] Providing mount in memfd_restricted() syscall Ackerley Tng
2023-03-31 23:50 ` [RFC PATCH v3 1/2] mm: restrictedmem: Allow userspace to specify mount for memfd_restricted Ackerley Tng
2023-04-03  8:21   ` David Hildenbrand
2023-04-05 22:29     ` Ackerley Tng
2023-04-04  8:25   ` Kirill A. Shutemov
2023-04-05 22:32     ` Ackerley Tng
2023-04-04 13:53   ` Christian Brauner
2023-04-04 14:58     ` Christian Brauner
2023-04-05 21:58       ` Ackerley Tng
2023-04-12  9:59         ` Christian Brauner
2023-04-13 22:53           ` Ackerley Tng
2023-04-13 23:07             ` Sean Christopherson
2023-03-31 23:50 ` [RFC PATCH v3 2/2] selftests: restrictedmem: Check hugepage-ness of shmem file backing restrictedmem fd Ackerley Tng
2023-04-03  8:24   ` David Hildenbrand [this message]
2023-04-11  1:35     ` Ackerley Tng
  -- strict thread matches above, loose matches on Subject: below --
2022-12-02  6:13 [PATCH v10 0/9] KVM: mm: fd-based approach for supporting KVM Chao Peng
2022-12-02  6:13 ` [PATCH v10 1/9] mm: Introduce memfd_restricted system call to create restricted user memory Chao Peng
2022-12-06 14:57   ` Fuad Tabba
2022-12-07 13:50     ` Chao Peng
2022-12-13 23:49   ` Huang, Kai
2022-12-19  7:53     ` Chao Peng
2022-12-19  8:48       ` Huang, Kai
2022-12-20  7:22         ` Chao Peng
2022-12-20  8:33           ` Huang, Kai
2022-12-21 13:39             ` Chao Peng
2022-12-22  0:37               ` Huang, Kai
2022-12-23  8:20                 ` Chao Peng
2023-01-23 14:03                 ` Vlastimil Babka
2023-01-23 15:18                   ` Kirill A. Shutemov
2023-02-13 14:23                     ` Vlastimil Babka
2023-01-23 23:01                   ` Huang, Kai
2023-01-23 23:38                     ` Sean Christopherson
2023-01-24  7:51                       ` Vlastimil Babka
2022-12-22 18:15               ` Sean Christopherson
2022-12-23  0:50                 ` Huang, Kai
2022-12-23  8:24                 ` Chao Peng
2023-01-23 15:43                 ` Kirill A. Shutemov
2023-02-13 11:43                   ` Vlastimil Babka
2023-02-13 13:10                   ` Michael Roth
2023-01-13 21:54   ` Sean Christopherson
2023-01-17 12:41     ` Chao Peng
2023-01-17 16:34       ` Sean Christopherson
2023-01-18  8:16         ` Chao Peng
2023-01-18 10:17           ` Isaku Yamahata
2023-02-22  2:07     ` Alexey Kardashevskiy
2023-02-24  5:42       ` Chao Peng
2023-01-30  5:26   ` Ackerley Tng
2023-01-30  6:04     ` Wang, Wei W
2023-02-16  9:51   ` Nikunj A. Dadhania
2023-03-20 19:08     ` Michael Roth
2023-04-13 15:25   ` [PATCH v7 00/14] KVM: mm: fd-based approach for supporting KVM guest private memory Christian Brauner
2023-04-13 22:28     ` Sean Christopherson
2023-04-14 22:38       ` Ackerley Tng
2023-04-14 23:26         ` Sean Christopherson
2023-04-15  0:06           ` Sean Christopherson
2023-04-19  8:29       ` Christian Brauner
2023-04-20  0:49         ` Sean Christopherson
2023-04-20  8:35           ` Christian Brauner
2023-04-13 17:22   ` [PATCH v10 1/9] mm: Introduce memfd_restricted system call to create restricted user memory Ackerley Tng
2022-12-02  6:13 ` [PATCH v10 2/9] KVM: Introduce per-page memory attributes Chao Peng
2022-12-06 13:34   ` Fabiano Rosas
2022-12-07 14:31     ` Chao Peng
2022-12-06 15:07   ` Fuad Tabba
2022-12-07 14:51     ` Chao Peng
2022-12-16 15:09   ` Borislav Petkov
2022-12-19  8:15     ` Chao Peng
2022-12-19 10:17       ` Borislav Petkov
2022-12-20  7:24         ` Chao Peng
2022-12-28  8:28   ` Chenyi Qiang
2023-01-03  1:39     ` Chao Peng
2023-01-03  3:32       ` Wang, Wei W
2023-01-03 23:06         ` Sean Christopherson
2023-01-05  4:39           ` Chao Peng
2023-01-13 22:02   ` Sean Christopherson
2023-01-17  3:21   ` Binbin Wu
2023-01-17 13:30     ` Chao Peng
2023-01-17 17:25       ` Sean Christopherson
2023-02-09  7:25   ` Isaku Yamahata
2023-02-10  0:35     ` Sean Christopherson
2023-02-13 23:53       ` Isaku Yamahata
2023-02-14 18:07         ` Sean Christopherson
2023-05-19 17:32   ` Nicolas Saenz Julienne
2023-05-19 18:23     ` Sean Christopherson
2023-05-19 19:49       ` Nicolas Saenz Julienne
2023-05-19 19:57         ` Sean Christopherson
2023-05-23 18:59       ` Nicolas Saenz Julienne
2022-12-02  6:13 ` [PATCH v10 3/9] KVM: Extend the memslot to support fd-based private memory Chao Peng
2022-12-05  9:03   ` Fuad Tabba
2022-12-06 11:53     ` Chao Peng
2022-12-06 12:39       ` Fuad Tabba
2022-12-07 15:10         ` Chao Peng
2022-12-08  8:37   ` Xiaoyao Li
2022-12-08 11:30     ` Chao Peng
2022-12-13 12:04       ` Xiaoyao Li
2022-12-19  7:50         ` Chao Peng
2022-12-19 14:36   ` Borislav Petkov
2022-12-20  7:43     ` Chao Peng
2022-12-20  9:55       ` Borislav Petkov
2022-12-21 13:42         ` Chao Peng
2023-01-05 11:23   ` Jarkko Sakkinen
2023-01-06  9:40     ` Chao Peng
2023-01-09 19:32       ` Sean Christopherson
2023-01-10  9:14         ` Chao Peng
2023-01-10 22:51           ` Vishal Annapurve
2023-01-13 22:37           ` Sean Christopherson
2023-01-17 12:42             ` Chao Peng
2023-01-20 23:42           ` Jarkko Sakkinen
2023-01-20 23:28         ` Jarkko Sakkinen
2022-12-02  6:13 ` [PATCH v10 4/9] KVM: Add KVM_EXIT_MEMORY_FAULT exit Chao Peng
2022-12-06 15:47   ` Fuad Tabba
2022-12-07 15:11     ` Chao Peng
2023-01-13 23:13   ` Sean Christopherson
2022-12-02  6:13 ` [PATCH v10 5/9] KVM: Use gfn instead of hva for mmu_notifier_retry Chao Peng
2022-12-05  9:23   ` Fuad Tabba
2022-12-06 11:56     ` Chao Peng
2022-12-06 15:48       ` Fuad Tabba
2022-12-09  6:24         ` Chao Peng
2022-12-07  6:34       ` Isaku Yamahata
2022-12-07 15:14         ` Chao Peng
2022-12-02  6:13 ` [PATCH v10 6/9] KVM: Unmap existing mappings when change the memory attributes Chao Peng
2022-12-07  8:13   ` Yuan Yao
2022-12-08 11:20     ` Chao Peng
2022-12-09  5:43       ` Yuan Yao
2022-12-07 17:16   ` Fuad Tabba
2022-12-08 11:13     ` Chao Peng
2022-12-09  8:57       ` Fuad Tabba
2022-12-12  7:22         ` Chao Peng
2022-12-13 23:51   ` Huang, Kai
2022-12-19  7:54     ` Chao Peng
2023-01-13 22:50   ` Sean Christopherson
2022-12-02  6:13 ` [PATCH v10 7/9] KVM: Update lpage info when private/shared memory are mixed Chao Peng
2022-12-05 22:49   ` Isaku Yamahata
2022-12-06 12:02     ` Chao Peng
2022-12-07  6:42       ` Isaku Yamahata
2022-12-08 11:17         ` Chao Peng
2023-01-13 23:12   ` Sean Christopherson
2023-01-13 23:16   ` Sean Christopherson
2023-01-28 13:54     ` Chao Peng
2022-12-02  6:13 ` [PATCH v10 8/9] KVM: Handle page fault for private memory Chao Peng
2022-12-08  2:29   ` Yuan Yao
2022-12-08 11:23     ` Chao Peng
2022-12-09  5:45       ` Yuan Yao
2022-12-09  9:01   ` Fuad Tabba
2022-12-12  7:23     ` Chao Peng
2023-01-13 23:29   ` Sean Christopherson
2022-12-02  6:13 ` [PATCH v10 9/9] KVM: Enable and expose KVM_MEM_PRIVATE Chao Peng
2022-12-09  9:11   ` Fuad Tabba
2023-01-05 20:38   ` Vishal Annapurve
2023-01-06  4:13     ` Chao Peng
2023-01-14  0:01   ` Sean Christopherson
2023-01-17 13:12     ` Chao Peng
2023-01-17 19:35       ` Sean Christopherson
2023-01-18  8:23         ` Chao Peng
2023-01-28 14:00     ` Chao Peng
2023-03-08  0:13       ` Ackerley Tng
2023-03-08  7:40         ` Chao Peng
2023-03-23  0:41           ` Isaku Yamahata
2023-03-24  2:10             ` Chao Peng
2023-03-24  2:29               ` Xiaoyao Li
2023-03-28 10:41                 ` Chao Peng
2023-04-14 21:08                   ` Sean Christopherson
2023-04-18 23:38                     ` Ackerley Tng
2023-04-25 23:01                       ` Sean Christopherson
2023-03-07 19:14   ` Ackerley Tng
2023-03-07 20:27     ` Sean Christopherson
2023-01-14  0:37 ` [PATCH v10 0/9] KVM: mm: fd-based approach for supporting KVM Sean Christopherson
2023-01-16 13:48   ` Kirill A. Shutemov
2023-01-17 13:19   ` Chao Peng
2023-01-17 14:32   ` Fuad Tabba
2023-01-19 11:13   ` Isaku Yamahata
2023-01-19 15:25     ` Sean Christopherson
2023-01-19 22:37       ` Isaku Yamahata
2023-01-24  1:27         ` Sean Christopherson
2023-02-08 12:24           ` Isaku Yamahata
2023-02-13 13:01           ` Michael Roth
2023-02-21 12:11             ` Chao Peng
2023-03-23  1:27               ` Michael Roth
2023-03-24  2:13                 ` Chao Peng
2023-04-12 22:01                 ` Sean Christopherson
2023-04-17 14:37           ` Chao Peng
2023-04-17 15:01             ` Sean Christopherson
2023-01-24 16:08   ` Liam Merwick
2023-01-25  0:20     ` Sean Christopherson
2023-01-25 12:53       ` Kirill A. Shutemov
2023-01-25 16:01         ` Liam Merwick
2023-04-13  1:07         ` Sean Christopherson
2023-04-13 16:04           ` Kirill A. Shutemov
2023-02-16  5:13 ` Mike Rapoport
2023-02-16  9:41   ` David Hildenbrand
2023-02-22 21:53     ` Sean Christopherson
2023-04-17 15:40 ` Rename restrictedmem => guardedmem? (was: Re: [PATCH v10 0/9] KVM: mm: fd-based approach for supporting KVM) Sean Christopherson
2023-04-17 15:48   ` David Hildenbrand
2023-04-17 16:40     ` Sean Christopherson
2023-04-17 17:09       ` David Hildenbrand
2023-04-17 19:16         ` Sean Christopherson
2023-04-18  8:53           ` Fuad Tabba
2023-04-18  9:10           ` David Hildenbrand
2023-04-19  0:47             ` Sean Christopherson
2023-04-19  7:21               ` David Hildenbrand
2023-04-19 15:17                 ` Sean Christopherson
2023-04-19 15:27                   ` David Hildenbrand
2023-04-22  1:33                 ` Sean Christopherson
2023-05-05 19:39                   ` Ackerley Tng
2023-05-06  0:55                     ` Sean Christopherson
2023-05-06  1:17                       ` Vishal Annapurve
2023-05-15 23:46                       ` Sean Christopherson
2023-07-13 22:46                       ` Ackerley Tng
2023-07-14 19:29                         ` Sean Christopherson
2023-07-14 23:09                           ` Vishal Annapurve
2023-07-15  0:30                             ` Sean Christopherson
2023-05-09 12:44                     ` Chao Peng
2023-05-10 17:26                   ` Vishal Annapurve
2023-05-10 20:23                     ` Vishal Annapurve
2023-05-10 21:39                     ` Sean Christopherson
2023-05-10 23:03                       ` Vishal Annapurve
2023-05-11 20:22                         ` Sean Christopherson
2023-05-19  1:07                           ` Vishal Annapurve
2023-05-12  0:21                   ` Michael Roth
2023-05-12 18:01                     ` Sean Christopherson
2023-05-22 13:50                       ` Michael Roth
2023-05-22 17:09                         ` Sean Christopherson
2023-05-22 23:58                           ` Michael Roth
2023-05-23  0:21                             ` Sean Christopherson
2023-06-06 19:14                   ` Ackerley Tng
2023-06-06 23:25                     ` Sean Christopherson
2023-06-08 17:13                       ` Ackerley Tng
2023-04-17 17:11       ` Ackerley Tng
2023-04-17 18:17         ` Sean Christopherson
2023-04-18 17:01       ` Ackerley Tng
2023-04-23 13:28     ` Jarkko Sakkinen
2023-05-05 20:00       ` David Hildenbrand
2023-05-06  7:44         ` Vlastimil Babka
2023-05-06  9:16           ` David Hildenbrand
2023-04-23 13:14   ` Jarkko Sakkinen
2022-07-06  8:20 [PATCH v7 00/14] KVM: mm: fd-based approach for supporting KVM guest private memory Chao Peng
2022-07-06  8:20 ` [PATCH v7 01/14] mm: Add F_SEAL_AUTO_ALLOCATE seal to memfd Chao Peng
2022-07-21  9:44   ` David Hildenbrand
2022-07-21  9:50     ` David Hildenbrand
2022-07-21 15:05       ` Sean Christopherson
2022-07-25 13:46         ` Chao Peng
2022-07-21 10:27     ` Gupta, Pankaj
2022-07-25 13:54       ` Chao Peng
2022-07-25 14:49         ` Gupta, Pankaj
2022-07-25 13:42     ` Chao Peng
2022-08-05 17:55     ` Paolo Bonzini
2022-08-05 18:06       ` David Hildenbrand
2022-08-10  9:40         ` Chao Peng
2022-08-10  9:38       ` Chao Peng
2022-08-17 23:41       ` Kirill A. Shutemov
2022-08-18  9:09         ` Paolo Bonzini
2022-08-23  7:36         ` David Hildenbrand
2022-08-24 10:20           ` Chao Peng
2022-08-26 15:19   ` Fuad Tabba
2022-08-29 15:18     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 02/14] selftests/memfd: Add tests for F_SEAL_AUTO_ALLOCATE Chao Peng
2022-08-05 13:11   ` David Hildenbrand
2022-07-06  8:20 ` [PATCH v7 03/14] mm: Introduce memfile_notifier Chao Peng
2022-08-05 13:22   ` David Hildenbrand
2022-08-10  9:22     ` Chao Peng
2022-08-10 10:05       ` David Hildenbrand
2022-08-10 14:38         ` Sean Christopherson
2022-08-11 12:27           ` Quentin Perret
2022-08-11 13:39             ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 04/14] mm/shmem: Support memfile_notifier Chao Peng
2022-07-12 18:02   ` Gupta, Pankaj
2022-07-13  7:44     ` Chao Peng
2022-07-13 10:01       ` Gupta, Pankaj
2022-07-13 23:49         ` Chao Peng
2022-07-14  4:15           ` Gupta, Pankaj
2022-08-05 13:26   ` David Hildenbrand
2022-08-10  9:25     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 05/14] mm/memfd: Introduce MFD_INACCESSIBLE flag Chao Peng
2022-08-05 13:28   ` David Hildenbrand
2022-08-10  9:37     ` Chao Peng
2022-08-10  9:55       ` David Hildenbrand
2022-08-11 13:17         ` Chao Peng
2022-09-07 16:18     ` Kirill A. Shutemov
2022-07-06  8:20 ` [PATCH v7 06/14] KVM: Rename KVM_PRIVATE_MEM_SLOTS to KVM_INTERNAL_MEM_SLOTS Chao Peng
2022-07-06  8:20 ` [PATCH v7 07/14] KVM: Use gfn instead of hva for mmu_notifier_retry Chao Peng
2022-07-15 11:36   ` Gupta, Pankaj
2022-07-18 13:29     ` Chao Peng
2022-07-18 15:26       ` Sean Christopherson
2022-07-19 14:02         ` Chao Peng
2022-08-04  7:10   ` Isaku Yamahata
2022-08-10  8:19     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 08/14] KVM: Rename mmu_notifier_* Chao Peng
2022-07-29 19:02   ` Sean Christopherson
2022-08-03 10:13     ` Chao Peng
2022-08-05 19:54     ` Paolo Bonzini
2022-08-10  8:09       ` Chao Peng
2023-05-23  7:19   ` Kautuk Consul
2023-05-23 14:19     ` Sean Christopherson
2023-05-24  6:12       ` Kautuk Consul
2023-05-24 20:16         ` Sean Christopherson
2023-05-24 20:33           ` Peter Zijlstra
2023-05-24 21:39             ` Sean Christopherson
2023-05-25  8:54               ` Peter Zijlstra
2023-05-25  3:52             ` Kautuk Consul
2023-05-24 20:28         ` Peter Zijlstra
2022-07-06  8:20 ` [PATCH v7 09/14] KVM: Extend the memslot to support fd-based private memory Chao Peng
2022-07-29 19:51   ` Sean Christopherson
2022-08-03 10:08     ` Chao Peng
2022-08-03 14:42       ` Sean Christopherson
2022-07-06  8:20 ` [PATCH v7 10/14] KVM: Add KVM_EXIT_MEMORY_FAULT exit Chao Peng
2022-07-06  8:20 ` [PATCH v7 11/14] KVM: Register/unregister the guest private memory regions Chao Peng
2022-07-19  8:00   ` Gupta, Pankaj
2022-07-19 14:08     ` Chao Peng
2022-07-19 14:23       ` Gupta, Pankaj
2022-07-20 15:07         ` Chao Peng
2022-07-20 15:31           ` Gupta, Pankaj
2022-07-20 16:21             ` Sean Christopherson
2022-07-20 17:41               ` Gupta, Pankaj
2022-07-21  7:34               ` Wei Wang
2022-07-21  9:29                 ` Chao Peng
2022-07-21 17:58                   ` Sean Christopherson
2022-07-25 13:04                     ` Chao Peng
2022-07-29 19:54                       ` Sean Christopherson
2022-08-02  0:49                         ` Sean Christopherson
2022-08-02 16:38                           ` Sean Christopherson
2022-08-03  9:48                             ` Chao Peng
2022-08-03 15:51                               ` Sean Christopherson
2022-08-04  7:58                                 ` Chao Peng
2022-07-20 16:44   ` Sean Christopherson
2022-07-21  9:37     ` Chao Peng
2022-08-19 19:37   ` Vishal Annapurve
2022-08-24 10:37     ` Chao Peng
2022-08-26 15:19   ` Fuad Tabba
2022-08-29 15:21     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 12/14] KVM: Handle page fault for private memory Chao Peng
2022-07-29 20:58   ` Sean Christopherson
2022-08-03  9:52     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 13/14] KVM: Enable and expose KVM_MEM_PRIVATE Chao Peng
2022-07-19  9:55   ` Gupta, Pankaj
2022-07-19 14:12     ` Chao Peng
2022-07-06  8:20 ` [PATCH v7 14/14] memfd_create.2: Describe MFD_INACCESSIBLE flag Chao Peng
2022-08-01 14:40   ` Dave Hansen
2022-08-03  9:53     ` Chao Peng
2022-07-13  3:58 ` [PATCH v7 00/14] KVM: mm: fd-based approach for supporting KVM guest private memory Gupta, Pankaj
2022-07-13  7:57   ` Chao Peng
2022-07-13 10:35     ` Gupta, Pankaj
2022-07-13 23:59       ` Chao Peng
2022-07-14  4:39         ` Gupta, Pankaj
2022-07-14  5:06           ` Gupta, Pankaj
2022-07-14  4:29       ` Andy Lutomirski
2022-07-14  5:13         ` Gupta, Pankaj
2022-08-11 10:02 ` Nikunj A. Dadhania
2022-08-11 11:30   ` Gupta, Pankaj
2022-08-11 13:32     ` Chao Peng
2022-08-11 17:28       ` Nikunj A. Dadhania
2022-08-12  3:22       ` Nikunj A. Dadhania
2022-08-11 17:18     ` Nikunj A. Dadhania
2022-08-11 23:02       ` Gupta, Pankaj
2022-08-12  6:02         ` Gupta, Pankaj
2022-08-12  7:18           ` Gupta, Pankaj
2022-08-12  8:48             ` Nikunj A. Dadhania
2022-08-12  9:33               ` Gupta, Pankaj
2022-08-15 13:04               ` Chao Peng
2022-08-16  4:28                 ` Nikunj A. Dadhania
2022-08-16 11:33                 ` Gupta, Pankaj
2022-08-16 12:24                   ` Kirill A . Shutemov
2022-08-16 13:03                     ` Gupta, Pankaj
2022-08-16 15:38                       ` Sean Christopherson
2022-08-17 15:27                         ` Michael Roth
2022-08-23  1:25                           ` Isaku Yamahata
2022-08-23 17:41                         ` Gupta, Pankaj
2022-08-18  5:40 ` Hugh Dickins
2022-08-18 13:24   ` Kirill A . Shutemov
2022-08-19  0:20     ` Sean Christopherson
2022-08-19  3:38       ` Hugh Dickins
2022-08-19 22:53         ` Sean Christopherson
2022-08-23  7:55         ` David Hildenbrand
2022-08-23 16:05           ` Sean Christopherson
2022-08-24  9:41             ` Chao Peng
2022-09-09  4:55               ` Andy Lutomirski
2022-08-19  3:00     ` Hugh Dickins
2022-08-20  0:27       ` Kirill A. Shutemov
2022-08-21  5:15         ` Hugh Dickins
2022-08-31 14:24           ` Kirill A . Shutemov
2022-09-02 10:27             ` Chao Peng
2022-09-02 12:30               ` Kirill A . Shutemov
2022-09-08  1:10             ` Kirill A. Shutemov
2022-09-13  9:44               ` Sean Christopherson
2022-09-13 13:28                 ` Kirill A. Shutemov
2022-09-13 14:53                   ` Sean Christopherson
2022-09-13 16:00                     ` Kirill A. Shutemov
2022-09-13 16:12                       ` Sean Christopherson
2022-09-09  4:48         ` Andy Lutomirski
2022-09-09 14:32           ` Kirill A . Shutemov
2022-09-09 19:11             ` Andy Lutomirski
2022-09-09 23:02               ` Kirill A . Shutemov
2022-08-21 10:27       ` Matthew Wilcox
2022-08-24 10:27         ` Chao Peng
2022-09-09  4:44     ` Andy Lutomirski
2022-08-26 15:19 ` Fuad Tabba
2022-08-29 15:17   ` Chao Peng
2022-08-31  9:12     ` Fuad Tabba
2022-09-02 10:19       ` Chao Peng
2022-09-09 15:35 ` Michael Roth

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=9bbdc378-e66e-0a44-244b-33dffe888a2b@redhat.com \
    --to=david@redhat.com \
    --cc=aarcange@redhat.com \
    --cc=ackerleytng@google.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=bfields@fieldses.org \
    --cc=bp@alien8.de \
    --cc=chao.p.peng@linux.intel.com \
    --cc=corbet@lwn.net \
    --cc=dave.hansen@intel.com \
    --cc=ddutile@redhat.com \
    --cc=dhildenb@redhat.com \
    --cc=hpa@zytor.com \
    --cc=hughd@google.com \
    --cc=jlayton@kernel.org \
    --cc=jmattson@google.com \
    --cc=joro@8bytes.org \
    --cc=jun.nakajima@intel.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linmiaohe@huawei.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=mail@maciej.szmigiero.name \
    --cc=mhocko@suse.com \
    --cc=michael.roth@amd.com \
    --cc=mingo@redhat.com \
    --cc=naoya.horiguchi@nec.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qperret@google.com \
    --cc=rppt@kernel.org \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=steven.price@arm.com \
    --cc=tabba@google.com \
    --cc=tglx@linutronix.de \
    --cc=vannapurve@google.com \
    --cc=vbabka@suse.cz \
    --cc=vkuznets@redhat.com \
    --cc=wanpengli@tencent.com \
    --cc=wei.w.wang@intel.com \
    --cc=x86@kernel.org \
    --cc=yu.c.zhang@linux.intel.com \
    /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;
as well as URLs for NNTP newsgroup(s).