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
next prev parent reply other threads:[~2020-05-20 23:31 UTC|newest]
Thread overview: 189+ 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 ` [patch 6/7] kasan: consistently disable debugging features 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-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-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 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 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
[not found] <20200522222217.ee14ad7eda7aab1e6697da6c@linux-foundation.org>
2020-05-27 21:48 ` + padata-allocate-work-structures-for-parallel-jobs-from-a-pool.patch " 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 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).