All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: alex.williamson@redhat.com, alexander.h.duyck@linux.intel.com,
	corbet@lwn.net, dan.j.williams@intel.com,
	daniel.m.jordan@oracle.com, dave.hansen@linux.intel.com,
	david@redhat.com, elliott@hpe.com, herbert@gondor.apana.org.au,
	jgg@ziepe.ca, josh@joshtriplett.org, ktkhai@virtuozzo.com,
	mhocko@kernel.org, mm-commits@vger.kernel.org,
	pasha.tatashin@soleen.com, pavel@ucw.cz, peterz@infradead.org,
	rdunlap@infradead.org, shile.zhang@linux.alibaba.com,
	steffen.klassert@secunet.com, steven.sistare@oracle.com,
	tj@kernel.org, ziy@nvidia.com
Subject: + padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch added to -mm tree
Date: Wed, 20 May 2020 16:31:23 -0700	[thread overview]
Message-ID: <20200520233123.XxkjRWSJ5%akpm@linux-foundation.org> (raw)
In-Reply-To: <20200513175005.1f4839360c18c0238df292d1@linux-foundation.org>


The patch titled
     Subject: padata: allocate work structures for parallel jobs from a pool
has been added to the -mm tree.  Its filename is
     padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Daniel Jordan <daniel.m.jordan@oracle.com>
Subject: padata: allocate work structures for parallel jobs from a pool

padata allocates per-CPU, per-instance work structs for parallel jobs.  A
do_parallel call assigns a job to a sequence number and hashes the number
to a CPU, where the job will eventually run using the corresponding work.

This approach fit with how padata used to bind a job to each CPU
round-robin, makes less sense after commit bfde23ce200e6 ("padata: unbind
parallel jobs from specific CPUs") because a work isn't bound to a
particular CPU anymore, and isn't needed at all for multithreaded jobs
because they don't have sequence numbers.

Replace the per-CPU works with a preallocated pool, which allows sharing
them between existing padata users and the upcoming multithreaded user. 
The pool will also facilitate setting NUMA-aware concurrency limits with
later users.

The pool is sized according to the number of possible CPUs.  With this
limit, MAX_OBJ_NUM no longer makes sense, so remove it.

If the global pool is exhausted, a parallel job is run in the current task
instead to throttle a system trying to do too much in parallel.

Link: http://lkml.kernel.org/r/20200520182645.1658949-4-daniel.m.jordan@oracle.com
Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Robert Elliott <elliott@hpe.com>
Cc: Shile Zhang <shile.zhang@linux.alibaba.com>
Cc: Steffen Klassert <steffen.klassert@secunet.com>
Cc: Steven Sistare <steven.sistare@oracle.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 include/linux/padata.h |    8 --
 kernel/padata.c        |  118 +++++++++++++++++++++++++--------------
 2 files changed, 78 insertions(+), 48 deletions(-)

--- a/include/linux/padata.h~padata-allocate-work-structures-for-parallel-jobs-from-a-pool
+++ a/include/linux/padata.h
@@ -24,7 +24,6 @@
  * @list: List entry, to attach to the padata lists.
  * @pd: Pointer to the internal control structure.
  * @cb_cpu: Callback cpu for serializatioon.
- * @cpu: Cpu for parallelization.
  * @seq_nr: Sequence number of the parallelized data object.
  * @info: Used to pass information from the parallel to the serial function.
  * @parallel: Parallel execution function.
@@ -34,7 +33,6 @@ struct padata_priv {
 	struct list_head	list;
 	struct parallel_data	*pd;
 	int			cb_cpu;
-	int			cpu;
 	unsigned int		seq_nr;
 	int			info;
 	void                    (*parallel)(struct padata_priv *padata);
@@ -68,15 +66,11 @@ struct padata_serial_queue {
 /**
  * struct padata_parallel_queue - The percpu padata parallel queue
  *
- * @parallel: List to wait for parallelization.
  * @reorder: List to wait for reordering after parallel processing.
- * @work: work struct for parallelization.
  * @num_obj: Number of objects that are processed by this cpu.
  */
 struct padata_parallel_queue {
-       struct padata_list    parallel;
        struct padata_list    reorder;
-       struct work_struct    work;
        atomic_t              num_obj;
 };
 
@@ -111,7 +105,7 @@ struct parallel_data {
 	struct padata_parallel_queue	__percpu *pqueue;
 	struct padata_serial_queue	__percpu *squeue;
 	atomic_t			refcnt;
-	atomic_t			seq_nr;
+	unsigned int			seq_nr;
 	unsigned int			processed;
 	int				cpu;
 	struct padata_cpumask		cpumask;
--- a/kernel/padata.c~padata-allocate-work-structures-for-parallel-jobs-from-a-pool
+++ a/kernel/padata.c
@@ -32,7 +32,15 @@
 #include <linux/sysfs.h>
 #include <linux/rcupdate.h>
 
-#define MAX_OBJ_NUM 1000
+struct padata_work {
+	struct work_struct	pw_work;
+	struct list_head	pw_list;  /* padata_free_works linkage */
+	void			*pw_data;
+};
+
+static DEFINE_SPINLOCK(padata_works_lock);
+static struct padata_work *padata_works;
+static LIST_HEAD(padata_free_works);
 
 static void padata_free_pd(struct parallel_data *pd);
 
@@ -58,30 +66,44 @@ static int padata_cpu_hash(struct parall
 	return padata_index_to_cpu(pd, cpu_index);
 }
 
-static void padata_parallel_worker(struct work_struct *parallel_work)
+static struct padata_work *padata_work_alloc(void)
 {
-	struct padata_parallel_queue *pqueue;
-	LIST_HEAD(local_list);
+	struct padata_work *pw;
 
-	local_bh_disable();
-	pqueue = container_of(parallel_work,
-			      struct padata_parallel_queue, work);
+	lockdep_assert_held(&padata_works_lock);
 
-	spin_lock(&pqueue->parallel.lock);
-	list_replace_init(&pqueue->parallel.list, &local_list);
-	spin_unlock(&pqueue->parallel.lock);
+	if (list_empty(&padata_free_works))
+		return NULL;	/* No more work items allowed to be queued. */
 
-	while (!list_empty(&local_list)) {
-		struct padata_priv *padata;
+	pw = list_first_entry(&padata_free_works, struct padata_work, pw_list);
+	list_del(&pw->pw_list);
+	return pw;
+}
 
-		padata = list_entry(local_list.next,
-				    struct padata_priv, list);
+static void padata_work_init(struct padata_work *pw, work_func_t work_fn,
+			     void *data)
+{
+	INIT_WORK(&pw->pw_work, work_fn);
+	pw->pw_data = data;
+}
 
-		list_del_init(&padata->list);
+static void padata_work_free(struct padata_work *pw)
+{
+	lockdep_assert_held(&padata_works_lock);
+	list_add(&pw->pw_list, &padata_free_works);
+}
 
-		padata->parallel(padata);
-	}
+static void padata_parallel_worker(struct work_struct *parallel_work)
+{
+	struct padata_work *pw = container_of(parallel_work, struct padata_work,
+					      pw_work);
+	struct padata_priv *padata = pw->pw_data;
 
+	local_bh_disable();
+	padata->parallel(padata);
+	spin_lock(&padata_works_lock);
+	padata_work_free(pw);
+	spin_unlock(&padata_works_lock);
 	local_bh_enable();
 }
 
@@ -105,9 +127,9 @@ int padata_do_parallel(struct padata_she
 		       struct padata_priv *padata, int *cb_cpu)
 {
 	struct padata_instance *pinst = ps->pinst;
-	int i, cpu, cpu_index, target_cpu, err;
-	struct padata_parallel_queue *queue;
+	int i, cpu, cpu_index, err;
 	struct parallel_data *pd;
+	struct padata_work *pw;
 
 	rcu_read_lock_bh();
 
@@ -135,25 +157,25 @@ int padata_do_parallel(struct padata_she
 	if ((pinst->flags & PADATA_RESET))
 		goto out;
 
-	if (atomic_read(&pd->refcnt) >= MAX_OBJ_NUM)
-		goto out;
-
-	err = 0;
 	atomic_inc(&pd->refcnt);
 	padata->pd = pd;
 	padata->cb_cpu = *cb_cpu;
 
-	padata->seq_nr = atomic_inc_return(&pd->seq_nr);
-	target_cpu = padata_cpu_hash(pd, padata->seq_nr);
-	padata->cpu = target_cpu;
-	queue = per_cpu_ptr(pd->pqueue, target_cpu);
-
-	spin_lock(&queue->parallel.lock);
-	list_add_tail(&padata->list, &queue->parallel.list);
-	spin_unlock(&queue->parallel.lock);
+	rcu_read_unlock_bh();
 
-	queue_work(pinst->parallel_wq, &queue->work);
+	spin_lock(&padata_works_lock);
+	padata->seq_nr = ++pd->seq_nr;
+	pw = padata_work_alloc();
+	spin_unlock(&padata_works_lock);
+	if (pw) {
+		padata_work_init(pw, padata_parallel_worker, padata);
+		queue_work(pinst->parallel_wq, &pw->pw_work);
+	} else {
+		/* Maximum works limit exceeded, run in the current task. */
+		padata->parallel(padata);
+	}
 
+	return 0;
 out:
 	rcu_read_unlock_bh();
 
@@ -324,8 +346,9 @@ static void padata_serial_worker(struct
 void padata_do_serial(struct padata_priv *padata)
 {
 	struct parallel_data *pd = padata->pd;
+	int hashed_cpu = padata_cpu_hash(pd, padata->seq_nr);
 	struct padata_parallel_queue *pqueue = per_cpu_ptr(pd->pqueue,
-							   padata->cpu);
+							   hashed_cpu);
 	struct padata_priv *cur;
 
 	spin_lock(&pqueue->reorder.lock);
@@ -416,8 +439,6 @@ static void padata_init_pqueues(struct p
 		pqueue = per_cpu_ptr(pd->pqueue, cpu);
 
 		__padata_list_init(&pqueue->reorder);
-		__padata_list_init(&pqueue->parallel);
-		INIT_WORK(&pqueue->work, padata_parallel_worker);
 		atomic_set(&pqueue->num_obj, 0);
 	}
 }
@@ -451,7 +472,7 @@ static struct parallel_data *padata_allo
 
 	padata_init_pqueues(pd);
 	padata_init_squeues(pd);
-	atomic_set(&pd->seq_nr, -1);
+	pd->seq_nr = -1;
 	atomic_set(&pd->refcnt, 1);
 	spin_lock_init(&pd->lock);
 	pd->cpu = cpumask_first(pd->cpumask.pcpu);
@@ -1051,6 +1072,7 @@ EXPORT_SYMBOL(padata_free_shell);
 
 void __init padata_init(void)
 {
+	unsigned int i, possible_cpus;
 #ifdef CONFIG_HOTPLUG_CPU
 	int ret;
 
@@ -1062,13 +1084,27 @@ void __init padata_init(void)
 
 	ret = cpuhp_setup_state_multi(CPUHP_PADATA_DEAD, "padata:dead",
 				      NULL, padata_cpu_dead);
-	if (ret < 0) {
-		cpuhp_remove_multi_state(hp_online);
-		goto err;
-	}
+	if (ret < 0)
+		goto remove_online_state;
+#endif
+
+	possible_cpus = num_possible_cpus();
+	padata_works = kmalloc_array(possible_cpus, sizeof(struct padata_work),
+				     GFP_KERNEL);
+	if (!padata_works)
+		goto remove_dead_state;
+
+	for (i = 0; i < possible_cpus; ++i)
+		list_add(&padata_works[i].pw_list, &padata_free_works);
 
 	return;
+
+remove_dead_state:
+#ifdef CONFIG_HOTPLUG_CPU
+	cpuhp_remove_multi_state(CPUHP_PADATA_DEAD);
+remove_online_state:
+	cpuhp_remove_multi_state(hp_online);
 err:
-	pr_warn("padata: initialization failed\n");
 #endif
+	pr_warn("padata: initialization failed\n");
 }
_

Patches currently in -mm which might be from daniel.m.jordan@oracle.com are

mm-call-touch_nmi_watchdog-on-max-order-boundaries-in-deferred-init.patch
padata-remove-exit-routine.patch
padata-initialize-earlier.patch
padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch
padata-add-basic-support-for-multithreaded-jobs.patch
mm-parallelize-deferred_init_memmap.patch
mm-make-deferred-inits-max-threads-arch-specific.patch
padata-document-multithreaded-jobs.patch

  parent reply	other threads:[~2020-05-20 23:31 UTC|newest]

Thread overview: 218+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-14  0:50 incoming Andrew Morton
2020-05-14  0:50 ` [patch 1/7] mm, memcg: fix inconsistent oom event behavior Andrew Morton
2020-05-14  0:50 ` [patch 2/7] epoll: call final ep_events_available() check under the lock Andrew Morton
2020-05-14  0:50 ` [patch 3/7] mm/gup: fix fixup_user_fault() on multiple retries Andrew Morton
2020-05-14  0:50 ` [patch 4/7] userfaultfd: fix remap event with MREMAP_DONTUNMAP Andrew Morton
2020-05-14  0:50 ` [patch 5/7] ipc/util.c: sysvipc_find_ipc() incorrectly updates position index Andrew Morton
2020-05-14  0:50   ` Andrew Morton
2020-05-14  0:50 ` [patch 6/7] kasan: consistently disable debugging features Andrew Morton
2020-05-14  0:50   ` Andrew Morton
2020-05-14  0:50 ` [patch 7/7] kasan: add missing functions declarations to kasan.h Andrew Morton
2020-05-14  2:26 ` [failures] vfs-keep-inodes-with-page-cache-off-the-inode-shrinker-lru.patch removed from -mm tree Andrew Morton
2020-05-14  3:31 ` mmotm 2020-05-13-20-30 uploaded Andrew Morton
2020-05-14 15:30   ` mmotm 2020-05-13-20-30 uploaded (gpu/drm/bridge/sil-sii8620) Randy Dunlap
2020-05-14 15:30     ` Randy Dunlap
2020-05-14 15:32   ` mmotm 2020-05-13-20-30 uploaded (objtool warnings) Randy Dunlap
2020-05-14 15:33     ` Randy Dunlap
2020-05-28 15:54     ` Josh Poimboeuf
2020-05-28 17:04       ` Josh Poimboeuf
2020-05-28 17:20     ` Peter Zijlstra
2020-05-29 13:57       ` Christoph Hellwig
2020-05-29 14:35         ` Peter Zijlstra
2020-05-29 14:53           ` Peter Zijlstra
2020-05-29 15:33             ` Peter Zijlstra
2020-05-29 16:05               ` Josh Poimboeuf
2020-05-29 16:12                 ` Peter Zijlstra
2020-05-29 16:50                   ` Josh Poimboeuf
2020-05-29 16:54                     ` Peter Zijlstra
2020-05-29 17:25                       ` [PATCH] x86/uaccess: Remove redundant likely/unlikely annotations Josh Poimboeuf
2020-05-29 18:29                         ` Randy Dunlap
2020-05-29 19:31                     ` mmotm 2020-05-13-20-30 uploaded (objtool warnings) Linus Torvalds
2020-05-29 19:31                       ` Linus Torvalds
2020-05-29 20:08                       ` Al Viro
2020-05-29 20:14                         ` Al Viro
2020-05-15 19:25 ` + get_maintainer-fix-unexpected-behavior-for-path-to-file-double-slashes.patch added to -mm tree Andrew Morton
2020-05-15 19:29 ` + lib-test_sysctl-support-testing-of-sysctl-boot-parameter-fix.patch " Andrew Morton
2020-05-15 20:05 ` + mm-add-functions-to-track-page-directory-modifications.patch " Andrew Morton
2020-05-15 20:05 ` + mm-vmalloc-track-which-page-table-levels-were-modified.patch " Andrew Morton
2020-05-15 20:06 ` + mm-ioremap-track-which-page-table-levels-were-modified.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-64-implement-arch_sync_kernel_mappings.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-32-implement-arch_sync_kernel_mappings.patch " Andrew Morton
2020-05-15 20:06 ` + mm-remove-vmalloc_sync_unmappings.patch " Andrew Morton
2020-05-15 20:06 ` + x86-mm-remove-vmalloc-faulting.patch " Andrew Morton
2020-05-15 20:53 ` + x86-bitops-fix-build-regression.patch " Andrew Morton
2020-05-15 21:12 ` + mm-dont-include-asm-pgtableh-if-linux-mmh-is-already-included.patch " Andrew Morton
2020-05-15 21:13 ` + mm-introduce-include-linux-pgtableh.patch " Andrew Morton
2020-05-15 21:14 ` + mm-reorder-includes-after-introduction-of-linux-pgtableh.patch " Andrew Morton
2020-05-15 21:15 ` + csky-replace-definitions-of-__pxd_offset-with-pxd_index.patch " Andrew Morton
2020-05-15 21:15 ` + m68k-mm-motorola-move-comment-about-page-table-allocation-funcitons.patch " Andrew Morton
2020-05-15 21:15 ` + m68k-mm-move-cachenocahe_page-definitions-close-to-their-user.patch " Andrew Morton
2020-05-15 21:15 ` + x86-mm-simplify-init_trampoline-and-surrounding-logic.patch " Andrew Morton
2020-05-15 21:15 ` + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte.patch " Andrew Morton
2020-05-15 21:15 ` + mm-consolidate-pte_index-and-pte_offset_-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pmd_index-and-pmd_offset-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pud_index-and-pud_offset-definitions.patch " Andrew Morton
2020-05-15 21:16 ` + mm-consolidate-pgd_index-and-pgd_offset_k-definitions.patch " Andrew Morton
2020-05-15 21:35 ` + mm-page_alloc-reset-the-zone-watermark_boost-early.patch " Andrew Morton
2020-05-15 23:30 ` mmotm 2020-05-15-16-29 uploaded Andrew Morton
2020-05-16  5:53   ` Stephen Rothwell
2020-05-18 23:15     ` Stephen Rothwell
2020-05-18 19:41 ` + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte-fix.patch added to -mm tree Andrew Morton
2020-05-18 19:44 ` + arch-kunmap_atomic-consolidate-duplicate-code-fix.patch " Andrew Morton
2020-05-18 20:25 ` + khugepaged-allow-to-collapse-a-page-shared-across-fork-fix.patch " Andrew Morton
2020-05-18 20:27 ` + mm-page_alloc-restrict-and-formalize-compound_page_dtors.patch " Andrew Morton
2020-05-18 20:32 ` + hugetlbfs-get-unmapped-area-below-task_unmapped_base-for-hugetlbfs.patch " Andrew Morton
2020-05-18 20:34 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split.patch " Andrew Morton
2020-05-18 20:41 ` + exec-change-uselib2-is_sreg-failure-to-eacces.patch " Andrew Morton
2020-05-18 20:42 ` + exec-relocate-s_isreg-check.patch " Andrew Morton
2020-05-18 20:42 ` + exec-relocate-path_noexec-check.patch " Andrew Morton
2020-05-18 20:42 ` + fs-include-fmode_exec-when-converting-flags-to-f_mode.patch " Andrew Morton
2020-05-18 21:25 ` + mm-gup-introduce-pin_user_pages_unlocked.patch " Andrew Morton
2020-05-18 21:25 ` + ivtv-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-18 21:37 ` + rapidio-fix-an-error-in-get_user_pages_fast-error-handling.patch " Andrew Morton
2020-05-18 21:38 ` + rapidio-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-18 21:46 ` + include-linux-pagemaph-introduce-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + md-remove-__clear_page_buffers-and-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + btrfs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + fs-bufferc-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + f2fs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + iomap-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + ntfs-replace-attach_page_buffers-with-attach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + orangefs-use-attach-detach_page_private.patch " Andrew Morton
2020-05-18 21:46 ` + buffer_headh-remove-attach_page_buffers.patch " Andrew Morton
2020-05-18 21:46 ` + mm-migratec-call-detach_page_private-to-cleanup-code.patch " Andrew Morton
2020-05-18 21:49 ` + mm-simplify-calling-a-compound-page-destructor.patch " Andrew Morton
2020-05-18 22:04 ` + selftests-vm-gitignore-add-mremap_dontunmap.patch " Andrew Morton
2020-05-18 22:05 ` + khugepaged-add-self-test-fix-3.patch " Andrew Morton
2020-05-18 22:06 ` + selftests-vm-write_to_hugetlbfsc-fix-unused-variable-warning.patch " Andrew Morton
2020-05-18 22:18 ` + mm-vmalloc-track-which-page-table-levels-were-modified-fix.patch " Andrew Morton
2020-05-18 22:41 ` + proc-meminfo-avoid-open-coded-reading-of-vm_committed_as.patch " Andrew Morton
2020-05-18 22:41 ` + mm-utilc-make-vm_memory_committed-more-accurate.patch " Andrew Morton
2020-05-18 22:41 ` + mm-adjust-vm_committed_as_batch-according-to-vm-overcommit-policy.patch " Andrew Morton
2020-05-18 22:52 ` + mm-pgtable-add-shortcuts-for-accessing-kernel-pmd-and-pte-fix-2.patch " Andrew Morton
2020-05-18 23:07 ` + mm-use-only-pidfd-for-process_madvise-syscall.patch " Andrew Morton
2020-05-18 23:16 ` + kernel-add-panic_on_taint.patch " Andrew Morton
2020-05-18 23:16 ` + kernel-add-panic_on_taint-fix.patch " Andrew Morton
2020-05-19  1:12 ` + arm-fix-the-flush_icache_range-arguments-in-set_fiq_handler.patch " Andrew Morton
2020-05-19  1:12 ` + nds32-unexport-flush_icache_page.patch " Andrew Morton
2020-05-19  1:12 ` + powerpc-unexport-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:12 ` + unicore32-remove-flush_cache_user_range.patch " Andrew Morton
2020-05-19  1:12 ` + asm-generic-fix-the-inclusion-guards-for-cacheflushh.patch " Andrew Morton
2020-05-19  1:12 ` + asm-generic-dont-include-linux-mmh-in-cacheflushh.patch " Andrew Morton
2020-05-19  1:12 ` + asm-generic-improve-the-flush_dcache_page-stub.patch " Andrew Morton
2020-05-19  1:12 ` + alpha-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:12 ` + arm64-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + c6x-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + hexagon-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + ia64-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + microblaze-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + m68knommu-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + openrisc-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + powerpc-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + riscv-use-asm-generic-cacheflushh.patch " Andrew Morton
2020-05-19  1:13 ` + armsparcunicore32-remove-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + mm-rename-flush_icache_user_range-to-flush_icache_user_page.patch " Andrew Morton
2020-05-19  1:13 ` + asm-generic-add-a-flush_icache_user_range-stub.patch " Andrew Morton
2020-05-19  1:13 ` + sh-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + xtensa-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + arm-rename-flush_cache_user_range-to-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + m68k-implement-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + exec-only-build-read_code-when-needed.patch " Andrew Morton
2020-05-19  1:13 ` + exec-use-flush_icache_user_range-in-read_code.patch " Andrew Morton
2020-05-19  1:13 ` + binfmt_flat-use-flush_icache_user_range.patch " Andrew Morton
2020-05-19  1:13 ` + nommu-use-flush_icache_user_range-in-brk-and-mmap.patch " Andrew Morton
2020-05-19  1:13 ` + module-move-the-set_fs-hack-for-flush_icache_range-to-m68k.patch " Andrew Morton
2020-05-19  3:12 ` [alternative-merged] mm-slub-add-panic_on_error-to-the-debug-facilities.patch removed from " Andrew Morton
2020-05-19  3:22 ` + mm-gup-move-__get_user_pages_fast-down-a-few-lines-in-gupc.patch added to " Andrew Morton
2020-05-19  3:22 ` + mm-gup-refactor-and-de-duplicate-gup_fast-code.patch " Andrew Morton
2020-05-19  3:22 ` + mm-gup-introduce-pin_user_pages_fast_only.patch " Andrew Morton
2020-05-19  3:22 ` + drm-i915-convert-get_user_pages-pin_user_pages.patch " Andrew Morton
2020-05-19  3:47 ` + mm-vmalloc-track-which-page-table-levels-were-modified-fix-fix.patch " Andrew Morton
     [not found]   ` <20200519123429.GN8135@suse.de>
2020-05-19 21:35     ` Andrew Morton
2020-05-19 21:36 ` [withdrawn] mm-vmalloc-track-which-page-table-levels-were-modified-fix-fix.patch removed from " Andrew Morton
2020-05-19 23:45 ` + mm-migratec-call-detach_page_private-to-cleanup-code.patch added to " Andrew Morton
2020-05-20  0:08 ` + mm-free_area_init-allow-defining-max_zone_pfn-in-descending-order-fix-2-fix.patch " Andrew Morton
2020-05-20  0:10 ` + kasan-disable-branch-tracing-for-core-runtime.patch " Andrew Morton
2020-05-20  1:11 ` + sh-include-linux-time_typesh-for-sockios.patch " Andrew Morton
2020-05-20  1:15 ` + powerpc-add-support-for-folded-p4d-page-tables-fix-2.patch " Andrew Morton
2020-05-20  1:40 ` + mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations.patch " Andrew Morton
2020-05-20  1:41 ` + mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations-fix.patch " Andrew Morton
2020-05-20  2:43 ` + mm-use-only-pidfd-for-process_madvise-syscall-fix.patch " Andrew Morton
2020-05-20  2:45 ` + maintainers-update-email-address-for-naoya-horiguchi.patch " Andrew Morton
2020-05-20  4:48 ` mmotm 2020-05-19-21-47 uploaded Andrew Morton
2020-05-20  4:48 ` Andrew Morton
2020-05-20 22:55 ` + mm-add-comments-on-pglist_data-zones.patch added to -mm tree Andrew Morton
2020-05-20 23:11 ` + mm-consolidate-pgd_index-and-pgd_offset_k-definitions-fix.patch " Andrew Morton
2020-05-20 23:22 ` + makefile-support-compressed-debug-info.patch " Andrew Morton
2020-05-20 23:31 ` + padata-remove-exit-routine.patch " Andrew Morton
2020-05-20 23:31 ` + padata-initialize-earlier.patch " Andrew Morton
2020-05-20 23:31 ` Andrew Morton [this message]
2020-05-20 23:31 ` + padata-add-basic-support-for-multithreaded-jobs.patch " Andrew Morton
2020-05-20 23:31 ` + mm-parallelize-deferred_init_memmap.patch " Andrew Morton
2020-05-20 23:31 ` + mm-make-deferred-inits-max-threads-arch-specific.patch " Andrew Morton
2020-05-20 23:31 ` + padata-document-multithreaded-jobs.patch " Andrew Morton
2020-05-20 23:46 ` + sparc32-use-pud-rather-than-pgd-to-get-pmd-in-srmmu_nocache_init.patch " Andrew Morton
2020-05-20 23:53 ` + padata-initialize-earlier-fix.patch " Andrew Morton
2020-05-20 23:57 ` + asm-generic-dont-include-linux-mmh-in-cacheflushh-fix.patch " Andrew Morton
2020-05-21  0:47 ` + z3fold-fix-use-after-free-when-freeing-handles.patch " Andrew Morton
2020-05-21  0:47 ` + maintainers-add-files-related-to-kdump.patch " Andrew Morton
2020-05-21  2:39 ` + mm-memmap_init-iterate-over-memblock-regions-rather-that-check-each-pfn-fix-2.patch " Andrew Morton
2020-05-21  2:51 ` + swap-reduce-lock-contention-on-swap-cache-from-swap-slots-allocation.patch " Andrew Morton
2020-05-21  3:23 ` + mmap-locking-api-initial-implementation-as-rwsem-wrappers.patch " Andrew Morton
2020-05-21  3:23 ` + mmu-notifier-use-the-new-mmap-locking-api.patch " Andrew Morton
2020-05-21  3:23 ` + dma-reservations-use-the-new-mmap-locking-api.patch " Andrew Morton
2020-05-21  3:23 ` + mmap-locking-api-use-coccinelle-to-convert-mmap_sem-rwsem-call-sites.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-convert-nested-write-lock-sites.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-add-mmap_read_trylock_non_owner.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-add-mmap_lock_initializer.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-add-mmap_assert_locked-and-mmap_assert_write_locked.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-rename-mmap_sem-to-mmap_lock.patch " Andrew Morton
2020-05-21  3:24 ` + mmap-locking-api-convert-mmap_sem-api-comments.patch " Andrew Morton
2020-05-21  3:25 ` + mmap-locking-api-convert-mmap_sem-comments.patch " Andrew Morton
2020-05-21  3:25 ` + mmap-locking-api-convert-mmap_sem-comments-fix.patch " Andrew Morton
2020-05-21  3:31 ` + mm-fix-lru-balancing-effect-of-new-transparent-huge-pages.patch " Andrew Morton
2020-05-21  3:31 ` + mm-keep-separate-anon-and-file-statistics-on-page-reclaim-activity.patch " Andrew Morton
2020-05-21  3:31 ` + mm-allow-swappiness-that-prefers-reclaiming-anon-over-the-file-workingset.patch " Andrew Morton
2020-05-21  3:31 ` + mm-fold-and-remove-lru_cache_add_anon-and-lru_cache_add_file.patch " Andrew Morton
2020-05-21  3:31 ` + mm-workingset-let-cache-workingset-challenge-anon.patch " Andrew Morton
2020-05-21  3:31 ` + mm-remove-use-once-cache-bias-from-lru-balancing.patch " Andrew Morton
2020-05-21  3:32 ` + mm-vmscan-drop-unnecessary-div0-avoidance-rounding-in-get_scan_count.patch " Andrew Morton
2020-05-21  3:32 ` + mm-base-lru-balancing-on-an-explicit-cost-model.patch " Andrew Morton
2020-05-21  3:32 ` + mm-deactivations-shouldnt-bias-the-lru-balance.patch " Andrew Morton
2020-05-21  3:32 ` + mm-only-count-actual-rotations-as-lru-reclaim-cost.patch " Andrew Morton
2020-05-21  3:32 ` + mm-balance-lru-lists-based-on-relative-thrashing.patch " Andrew Morton
2020-05-21  3:32 ` + mm-vmscan-determine-anon-file-pressure-balance-at-the-reclaim-root.patch " Andrew Morton
2020-05-21  3:32 ` + mm-vmscan-reclaim-writepage-is-io-cost.patch " Andrew Morton
2020-05-21  3:32 ` + mm-vmscan-limit-the-range-of-lru-type-balancing.patch " Andrew Morton
2020-05-21  3:46 ` [failures] makefile-support-compressed-debug-info.patch removed from " Andrew Morton
2020-05-21 17:25 ` + mmap-locking-api-convert-mmap_sem-comments-fix-fix.patch added to " Andrew Morton
2020-05-21 17:28 ` [nacked] scripts-add-a-intermediate-file-for-make-gtags.patch removed from " Andrew Morton
2020-05-21 17:28 ` [nacked] scripts-support-compiled-source-improved-precise.patch " Andrew Morton
2020-05-21 18:30 ` + arch-parisc-include-asm-pgtableh-remove-unused-old_pte.patch added to " Andrew Morton
2020-05-21 19:00 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split-fix.patch " Andrew Morton
2020-05-21 19:55 ` + mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix.patch " Andrew Morton
2020-05-22  1:05 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix-fix.patch " Andrew Morton
2020-05-22  3:01 ` + mmap-locking-api-convert-mmap_sem-call-sites-missed-by-coccinelle-fix-fix-fix.patch " Andrew Morton
     [not found]   ` <CANN689HdE5d9ADE=8uRajTRL47oUcEV5mtCO0kRRWR8Jy_J3hg@mail.gmail.com>
2020-05-23  0:54     ` Andrew Morton
2020-05-22  3:10 ` + mm-migratec-call-detach_page_private-to-cleanup-code-fix.patch " Andrew Morton
2020-05-22  3:43 ` mmotm 2020-05-21-20-42 uploaded Andrew Morton
2020-05-22 16:26   ` mmotm 2020-05-21-20-42 uploaded (atomisp) Randy Dunlap
2020-05-22 23:29 ` + mm-z3fold-silence-kmemleak-false-positives-of-slots.patch added to -mm tree Andrew Morton
2020-05-22 23:32 ` + init-allow-distribution-configuration-of-default-init.patch " Andrew Morton
2020-05-22 23:38 ` + mm-deactivations-shouldnt-bias-the-lru-balance-fix.patch " Andrew Morton
2020-05-22 23:40 ` [to-be-updated] mm-memcg-avoid-stale-protection-values-when-cgroup-is-above-protection.patch removed from " Andrew Morton
2020-05-22 23:40 ` [to-be-updated] mm-memcg-decouple-elowmin-state-mutations-from-protection-checks.patch " Andrew Morton
2020-05-22 23:45 ` + kasan-disable-branch-tracing-for-core-runtime-v2.patch added to " Andrew Morton
2020-05-23  0:00 ` + mm-swapfile-fix-proc-swaps-heading-and-size-used-priority-alignment.patch " Andrew Morton
2020-05-23  0:24 ` + mm-memcontrol-charge-swapin-pages-on-instantiation-fix.patch " Andrew Morton
2020-05-23  0:51 ` + mm-vmstat-add-events-for-pmd-based-thp-migration-without-split-update.patch " Andrew Morton
2020-05-23  0:56 ` + mm-gup-might_lock_readmmap_sem-in-get_user_pages_fast.patch " Andrew Morton
2020-05-23  1:02 ` + mmap-locking-api-rename-mmap_sem-to-mmap_lock-fix.patch " Andrew Morton
2020-05-23  1:03 ` + mm-migratec-call-detach_page_private-to-cleanup-code-fix-fix.patch " Andrew Morton
2020-05-23  1:06 ` [to-be-updated] mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix.patch removed from " Andrew Morton
2020-05-23  1:09 ` + mm-memcontrol-make-swap-tracking-an-integral-part-of-memory-control-fix-v2.patch added to " Andrew Morton
2020-05-23  3:36 ` mmotm 2020-05-22-20-35 uploaded Andrew Morton
2020-05-23 15:08   ` mmotm 2020-05-22-20-35 uploaded (phy/intel/phy-intel-combo.c) Randy Dunlap
2020-05-23  5:22 incoming Andrew Morton
2020-05-27 21:48 ` + padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch added to -mm tree Andrew Morton

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=20200520233123.XxkjRWSJ5%akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=alex.williamson@redhat.com \
    --cc=alexander.h.duyck@linux.intel.com \
    --cc=corbet@lwn.net \
    --cc=dan.j.williams@intel.com \
    --cc=daniel.m.jordan@oracle.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@redhat.com \
    --cc=elliott@hpe.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=jgg@ziepe.ca \
    --cc=josh@joshtriplett.org \
    --cc=ktkhai@virtuozzo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhocko@kernel.org \
    --cc=mm-commits@vger.kernel.org \
    --cc=pasha.tatashin@soleen.com \
    --cc=pavel@ucw.cz \
    --cc=peterz@infradead.org \
    --cc=rdunlap@infradead.org \
    --cc=shile.zhang@linux.alibaba.com \
    --cc=steffen.klassert@secunet.com \
    --cc=steven.sistare@oracle.com \
    --cc=tj@kernel.org \
    --cc=ziy@nvidia.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.