linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: akpm@linux-foundation.org, linux-mm@kvack.org,
	mm-commits@vger.kernel.org, naoya.horiguchi@nec.com,
	osalvador@suse.de, qcai@redhat.com,
	torvalds@linux-foundation.org, vbabka@suse.cz
Subject: [patch 142/200] mm,hwpoison: disable pcplists before grabbing a refcount
Date: Mon, 14 Dec 2020 19:11:41 -0800	[thread overview]
Message-ID: <20201215031141.VV_tQ7dmx%akpm@linux-foundation.org> (raw)
In-Reply-To: <20201214190237.a17b70ae14f129e2dca3d204@linux-foundation.org>

From: Oscar Salvador <osalvador@suse.de>
Subject: mm,hwpoison: disable pcplists before grabbing a refcount

Currently, we have a sort of retry mechanism to make sure pages in
pcp-lists are spilled to the buddy system, so we can handle those.

We can save us this extra checks with the new disable-pcplist mechanism
that is available with [1].

zone_pcplist_disable makes sure to 1) disable pcplists, so any page that
is freed up from that point onwards will end up in the buddy system and 2)
drain pcplists, so those pages that already in pcplists are spilled to
buddy.

With that, we can make a common entry point for grabbing a refcount from
both soft_offline and memory_failure paths that is guarded by
zone_pcplist_disable/zone_pcplist_enable.

[1] https://patchwork.kernel.org/project/linux-mm/cover/20201111092812.11329-1-vbabka@suse.cz/

Link: https://lkml.kernel.org/r/20201204102558.31607-3-osalvador@suse.de
Signed-off-by: Oscar Salvador <osalvador@suse.de>
Acked-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Qian Cai <qcai@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/memory-failure.c |  132 ++++++++++++++++++++----------------------
 1 file changed, 65 insertions(+), 67 deletions(-)

--- a/mm/memory-failure.c~mmhwpoison-disable-pcplists-before-grabbing-a-refcount
+++ a/mm/memory-failure.c
@@ -985,26 +985,73 @@ static int __get_hwpoison_page(struct pa
 	return 0;
 }
 
-static int get_hwpoison_page(struct page *p)
+/*
+ * Safely get reference count of an arbitrary page.
+ *
+ * Returns 0 for a free page, 1 for an in-use page,
+ * -EIO for a page-type we cannot handle and -EBUSY if we raced with an
+ * allocation.
+ * We only incremented refcount in case the page was already in-use and it
+ * is a known type we can handle.
+ */
+static int get_any_page(struct page *p, unsigned long flags)
 {
-	int ret;
-	bool drained = false;
+	int ret = 0, pass = 0;
+	bool count_increased = false;
 
-retry:
-	ret = __get_hwpoison_page(p);
-	if (!ret && !is_free_buddy_page(p) && !page_count(p) && !drained) {
-		/*
-		 * The page might be in a pcplist, so try to drain those
-		 * and see if we are lucky.
-		 */
-		drain_all_pages(page_zone(p));
-		drained = true;
-		goto retry;
+	if (flags & MF_COUNT_INCREASED)
+		count_increased = true;
+
+try_again:
+	if (!count_increased && !__get_hwpoison_page(p)) {
+		if (page_count(p)) {
+			/* We raced with an allocation, retry. */
+			if (pass++ < 3)
+				goto try_again;
+			ret = -EBUSY;
+		} else if (!PageHuge(p) && !is_free_buddy_page(p)) {
+			/* We raced with put_page, retry. */
+			if (pass++ < 3)
+				goto try_again;
+			ret = -EIO;
+		}
+	} else {
+		if (PageHuge(p) || PageLRU(p) || __PageMovable(p)) {
+			ret = 1;
+		} else {
+			/*
+			 * A page we cannot handle. Check whether we can turn
+			 * it into something we can handle.
+			 */
+			if (pass++ < 3) {
+				put_page(p);
+				shake_page(p, 1);
+				count_increased = false;
+				goto try_again;
+			}
+			put_page(p);
+			ret = -EIO;
+		}
 	}
 
 	return ret;
 }
 
+static int get_hwpoison_page(struct page *p, unsigned long flags,
+			     enum mf_flags ctxt)
+{
+	int ret;
+
+	zone_pcp_disable(page_zone(p));
+	if (ctxt == MF_SOFT_OFFLINE)
+		ret = get_any_page(p, flags);
+	else
+		ret = __get_hwpoison_page(p);
+	zone_pcp_enable(page_zone(p));
+
+	return ret;
+}
+
 /*
  * Do all that is necessary to remove user space mappings. Unmap
  * the pages and send SIGBUS to the processes if the data was dirty.
@@ -1185,7 +1232,7 @@ static int memory_failure_hugetlb(unsign
 
 	num_poisoned_pages_inc();
 
-	if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) {
+	if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p, flags, 0)) {
 		/*
 		 * Check "filter hit" and "race with other subpage."
 		 */
@@ -1387,7 +1434,7 @@ try_again:
 	 * In fact it's dangerous to directly bump up page count from 0,
 	 * that may make page_ref_freeze()/page_ref_unfreeze() mismatch.
 	 */
-	if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p)) {
+	if (!(flags & MF_COUNT_INCREASED) && !get_hwpoison_page(p, flags, 0)) {
 		if (is_free_buddy_page(p)) {
 			if (take_page_off_buddy(p)) {
 				page_ref_inc(p);
@@ -1630,6 +1677,7 @@ int unpoison_memory(unsigned long pfn)
 	struct page *page;
 	struct page *p;
 	int freeit = 0;
+	unsigned long flags = 0;
 	static DEFINE_RATELIMIT_STATE(unpoison_rs, DEFAULT_RATELIMIT_INTERVAL,
 					DEFAULT_RATELIMIT_BURST);
 
@@ -1674,7 +1722,7 @@ int unpoison_memory(unsigned long pfn)
 		return 0;
 	}
 
-	if (!get_hwpoison_page(p)) {
+	if (!get_hwpoison_page(p, flags, 0)) {
 		if (TestClearPageHWPoison(p))
 			num_poisoned_pages_dec();
 		unpoison_pr_info("Unpoison: Software-unpoisoned free page %#lx\n",
@@ -1705,56 +1753,6 @@ int unpoison_memory(unsigned long pfn)
 }
 EXPORT_SYMBOL(unpoison_memory);
 
-/*
- * Safely get reference count of an arbitrary page.
- * Returns 0 for a free page, 1 for an in-use page, -EIO for a page-type we
- * cannot handle and -EBUSY if we raced with an allocation.
- * We only incremented refcount in case the page was already in-use and it is
- * a known type we can handle.
- */
-static int get_any_page(struct page *p, int flags)
-{
-	int ret = 0, pass = 0;
-	bool count_increased = false;
-
-	if (flags & MF_COUNT_INCREASED)
-		count_increased = true;
-
-try_again:
-	if (!count_increased && !get_hwpoison_page(p)) {
-		if (page_count(p)) {
-			/* We raced with an allocation, retry. */
-			if (pass++ < 3)
-				goto try_again;
-			ret = -EBUSY;
-		} else if (!PageHuge(p) && !is_free_buddy_page(p)) {
-			/* We raced with put_page, retry. */
-			if (pass++ < 3)
-				goto try_again;
-			ret = -EIO;
-		}
-	} else {
-		if (PageHuge(p) || PageLRU(p) || __PageMovable(p)) {
-			ret = 1;
-		} else {
-			/*
-			 * A page we cannot handle. Check whether we can turn
-			 * it into something we can handle.
-			 */
-			if (pass++ < 3) {
-				put_page(p);
-				shake_page(p, 1);
-				count_increased = false;
-				goto try_again;
-			}
-			put_page(p);
-			ret = -EIO;
-		}
-	}
-
-	return ret;
-}
-
 static bool isolate_page(struct page *page, struct list_head *pagelist)
 {
 	bool isolated = false;
@@ -1928,7 +1926,7 @@ int soft_offline_page(unsigned long pfn,
 
 retry:
 	get_online_mems();
-	ret = get_any_page(page, flags);
+	ret = get_hwpoison_page(page, flags, MF_SOFT_OFFLINE);
 	put_online_mems();
 
 	if (ret > 0) {
_


  parent reply	other threads:[~2020-12-15  3:11 UTC|newest]

Thread overview: 215+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-15  3:02 incoming Andrew Morton
2020-12-15  3:03 ` [patch 001/200] kthread: add kthread_work tracepoints Andrew Morton
2020-12-15  3:03 ` [patch 002/200] kthread_worker: document CPU hotplug handling Andrew Morton
2020-12-15  3:03 ` [patch 003/200] uapi: move constants from <linux/kernel.h> to <linux/const.h> Andrew Morton
2020-12-15  3:03 ` [patch 004/200] ide/falcon: remove in_interrupt() usage Andrew Morton
2020-12-15  3:03 ` [patch 005/200] ide: remove BUG_ON(in_interrupt() || irqs_disabled()) from ide_unregister() Andrew Morton
2020-12-15  3:03 ` [patch 006/200] fs/ntfs: remove unused varibles Andrew Morton
2020-12-15  3:03 ` [patch 007/200] fs/ntfs: remove unused variable attr_len Andrew Morton
2020-12-15  3:03 ` [patch 008/200] fs/ocfs2/cluster/tcp.c: remove unneeded break Andrew Morton
2020-12-15  3:03 ` [patch 009/200] ocfs2: ratelimit the 'max lookup times reached' notice Andrew Morton
2020-12-15  3:03 ` [patch 010/200] arch/Kconfig: fix spelling mistakes Andrew Morton
2020-12-15  3:03 ` [patch 011/200] mm/slab_common.c: use list_for_each_entry in dump_unreclaimable_slab() Andrew Morton
2020-12-15  3:03 ` [patch 012/200] mm: slab: clarify krealloc()'s behavior with __GFP_ZERO Andrew Morton
2020-12-15 14:30   ` Christian König
2020-12-15 19:08     ` Andy Shevchenko
2020-12-16  7:47       ` Christian König
2020-12-16 11:23         ` Andy Shevchenko
2020-12-15  3:03 ` [patch 013/200] mm: slab: provide krealloc_array() Andrew Morton
2020-12-15  3:03 ` [patch 014/200] ALSA: pcm: use krealloc_array() Andrew Morton
2020-12-15  3:04 ` [patch 015/200] vhost: vringh: " Andrew Morton
2020-12-15  3:04 ` [patch 016/200] pinctrl: " Andrew Morton
2020-12-15  3:04 ` [patch 017/200] edac: ghes: " Andrew Morton
2020-12-15  3:04 ` [patch 018/200] drm: atomic: " Andrew Morton
2020-12-15  3:04 ` [patch 019/200] hwtracing: intel: " Andrew Morton
2020-12-15  3:04 ` [patch 020/200] dma-buf: " Andrew Morton
2020-12-15  7:42   ` Christian König
2020-12-15  3:04 ` [patch 021/200] mm, slab, slub: clear the slab_cache field when freeing page Andrew Morton
2020-12-15  3:04 ` [patch 022/200] mm/slab: rerform init_on_free earlier Andrew Morton
2020-12-15 16:45   ` Alexander Potapenko
2020-12-15 20:46     ` Alexander Popov
2020-12-15 21:08       ` Alexander Popov
2020-12-15  3:04 ` [patch 023/200] mm, slub: use kmem_cache_debug_flags() in deactivate_slab() Andrew Morton
2020-12-15  3:04 ` [patch 024/200] mm/slub: let number of online CPUs determine the slub page order Andrew Morton
2020-12-15  3:04 ` [patch 025/200] device-dax/kmem: use struct_size() Andrew Morton
2020-12-15  3:04 ` [patch 026/200] mm: fix page_owner initializing issue for arm32 Andrew Morton
2020-12-15  3:04 ` [patch 027/200] mm/page_owner: record timestamp and pid Andrew Morton
2020-12-15  3:04 ` [patch 028/200] mm/filemap/c: break generic_file_buffered_read up into multiple functions Andrew Morton
2020-12-15  3:04 ` [patch 029/200] mm/filemap.c: generic_file_buffered_read() now uses find_get_pages_contig Andrew Morton
2020-12-15  3:04 ` [patch 030/200] mm/truncate: add parameter explanation for invalidate_mapping_pagevec Andrew Morton
2020-12-15  3:05 ` [patch 031/200] mm/filemap.c: remove else after a return Andrew Morton
2020-12-15  3:05 ` [patch 032/200] mm/gup_benchmark: rename to mm/gup_test Andrew Morton
2020-12-15  3:05 ` [patch 033/200] selftests/vm: use a common gup_test.h Andrew Morton
2020-12-15  3:05 ` [patch 034/200] selftests/vm: rename run_vmtests --> run_vmtests.sh Andrew Morton
2020-12-15  3:05 ` [patch 035/200] selftests/vm: minor cleanup: Makefile and gup_test.c Andrew Morton
2020-12-15  3:05 ` [patch 036/200] selftests/vm: only some gup_test items are really benchmarks Andrew Morton
2020-12-15  3:05 ` [patch 037/200] selftests/vm: gup_test: introduce the dump_pages() sub-test Andrew Morton
2020-12-15  3:05 ` [patch 038/200] selftests/vm: run_vmtests.sh: update and clean up gup_test invocation Andrew Morton
2020-12-15  3:05 ` [patch 039/200] selftests/vm: hmm-tests: remove the libhugetlbfs dependency Andrew Morton
2020-12-15  3:05 ` [patch 040/200] selftests/vm: 2x speedup for run_vmtests.sh Andrew Morton
2020-12-15  3:05 ` [patch 041/200] mm/gup_test.c: mark gup_test_init as __init function Andrew Morton
2020-12-15  3:05 ` [patch 042/200] mm/gup_test: GUP_TEST depends on DEBUG_FS Andrew Morton
2020-12-15  3:05 ` [patch 043/200] mm/gup: reorganize internal_get_user_pages_fast() Andrew Morton
2020-12-15  3:05 ` [patch 044/200] mm/gup: prevent gup_fast from racing with COW during fork Andrew Morton
2020-12-15  3:05 ` [patch 045/200] mm/gup: remove the vma allocation from gup_longterm_locked() Andrew Morton
2020-12-15  3:05 ` [patch 046/200] mm/gup: combine put_compound_head() and unpin_user_page() Andrew Morton
2020-12-15  3:05 ` [patch 047/200] mm: handle zone device pages in release_pages() Andrew Morton
2020-12-15  3:05 ` [patch 048/200] mm/swapfile.c: use helper function swap_count() in add_swap_count_continuation() Andrew Morton
2020-12-15  3:06 ` [patch 049/200] mm/swap_state: skip meaningless swap cache readahead when ra_info.win == 0 Andrew Morton
2020-12-15  3:06 ` [patch 050/200] mm/swapfile.c: remove unnecessary out label in __swap_duplicate() Andrew Morton
2020-12-15  3:06 ` [patch 051/200] mm/swapfile.c: use memset to fill the swap_map with SWAP_HAS_CACHE Andrew Morton
2020-12-15  3:06 ` [patch 052/200] mm: remove pagevec_lookup_range_nr_tag() Andrew Morton
2020-12-15  3:06 ` [patch 053/200] mm/shmem.c: make shmem_mapping() inline Andrew Morton
2020-12-15  3:06 ` [patch 054/200] tmpfs: fix Documentation nits Andrew Morton
2020-12-15  3:06 ` [patch 055/200] mm: memcontrol: add file_thp, shmem_thp to memory.stat Andrew Morton
2020-12-15  3:06 ` [patch 056/200] mm: memcontrol: remove unused mod_memcg_obj_state() Andrew Morton
2020-12-15  3:06 ` [patch 057/200] mm: memcontrol: eliminate redundant check in __mem_cgroup_insert_exceeded() Andrew Morton
2020-12-15  3:06 ` [patch 058/200] mm: memcg/slab: fix return of child memcg objcg for root memcg Andrew Morton
2020-12-15  3:06 ` [patch 059/200] mm: memcg/slab: fix use after free in obj_cgroup_charge Andrew Morton
2020-12-15  3:06 ` [patch 060/200] mm/rmap: always do TTU_IGNORE_ACCESS Andrew Morton
2020-12-15  3:06 ` [patch 061/200] mm/memcg: update page struct member in comments Andrew Morton
2020-12-15  3:06 ` [patch 062/200] mm: memcg: fix obsolete code comments Andrew Morton
2020-12-15  3:06 ` [patch 063/200] mm: memcg: deprecate the non-hierarchical mode Andrew Morton
2020-12-15  3:06 ` [patch 064/200] docs: cgroup-v1: reflect the deprecation of " Andrew Morton
2020-12-15  3:06 ` [patch 065/200] cgroup: remove obsoleted broken_hierarchy and warned_broken_hierarchy Andrew Morton
2020-12-15  3:06 ` [patch 066/200] mm/page_counter: use page_counter_read in page_counter_set_max Andrew Morton
2020-12-15  3:07 ` [patch 067/200] mm: memcg: remove obsolete memcg_has_children() Andrew Morton
2020-12-15  3:07 ` [patch 068/200] mm: memcg/slab: rename *_lruvec_slab_state to *_lruvec_kmem_state Andrew Morton
2020-12-15  3:07 ` [patch 069/200] mm: memcontrol: sssign boolean values to a bool variable Andrew Morton
2020-12-15  3:07 ` [patch 070/200] mm/memcg: remove incorrect comment Andrew Morton
2020-12-15  3:07 ` [patch 071/200] mm: move lruvec stats update functions to vmstat.h Andrew Morton
2020-12-15  3:07 ` [patch 072/200] mm: memcontrol: account pagetables per node Andrew Morton
2020-12-15  3:07 ` [patch 073/200] xen/unpopulated-alloc: consolidate pgmap manipulation Andrew Morton
2020-12-15  3:07 ` [patch 074/200] kselftests: vm: add mremap tests Andrew Morton
2020-12-15  3:07 ` [patch 075/200] mm: speedup mremap on 1GB or larger regions Andrew Morton
2020-12-15 19:52   ` Linus Torvalds
2020-12-15 23:16     ` Kalesh Singh
2020-12-15  3:07 ` [patch 076/200] arm64: mremap speedup - enable HAVE_MOVE_PUD Andrew Morton
2020-12-15  3:07 ` [patch 077/200] x86: mremap speedup - Enable HAVE_MOVE_PUD Andrew Morton
2020-12-15  3:07 ` [patch 078/200] mm: cleanup: remove unused tsk arg from __access_remote_vm Andrew Morton
2020-12-15  3:07 ` [patch 079/200] mm/mapping_dirty_helpers: enhance the kernel-doc markups Andrew Morton
2020-12-15  3:07 ` [patch 080/200] mm/page_vma_mapped.c: add colon to fix kernel-doc markups error for check_pte Andrew Morton
2020-12-15  3:07 ` [patch 081/200] mm: mmap_lock: add tracepoints around lock acquisition Andrew Morton
2020-12-15  3:07 ` [patch 082/200] sparc: fix handling of page table constructor failure Andrew Morton
2020-12-15  3:08 ` [patch 083/200] mm: move free_unref_page to mm/internal.h Andrew Morton
2020-12-15  3:08 ` [patch 084/200] mm/mremap: account memory on do_munmap() failure Andrew Morton
2020-12-15  3:08 ` [patch 085/200] mm/mremap: for MREMAP_DONTUNMAP check security_vm_enough_memory_mm() Andrew Morton
2020-12-15  3:08 ` [patch 086/200] mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio Andrew Morton
2020-12-28 17:59   ` Brian Geffon
2020-12-15  3:08 ` [patch 087/200] vm_ops: rename .split() callback to .may_split() Andrew Morton
2020-12-15  3:08 ` [patch 088/200] mremap: check if it's possible to split original vma Andrew Morton
2020-12-15  3:08 ` [patch 089/200] mm: forbid splitting special mappings Andrew Morton
2020-12-15  3:08 ` [patch 090/200] mm: track mmu notifiers in fs_reclaim_acquire/release Andrew Morton
2020-12-15  3:08 ` [patch 091/200] mm: extract might_alloc() debug check Andrew Morton
2020-12-15  3:08 ` [patch 092/200] locking/selftests: add testcases for fs_reclaim Andrew Morton
2020-12-15  3:08 ` [patch 093/200] mm/vmalloc.c:__vmalloc_area_node(): avoid 32-bit overflow Andrew Morton
2020-12-15  3:08 ` [patch 094/200] mm/vmalloc: use free_vm_area() if an allocation fails Andrew Morton
2020-12-15  3:08 ` [patch 095/200] mm/vmalloc: rework the drain logic Andrew Morton
2020-12-15  3:08 ` [patch 096/200] mm/vmalloc: add 'align' parameter explanation for pvm_determine_end_from_reverse Andrew Morton
2020-12-15  3:08 ` [patch 097/200] mm/vmalloc.c: remove unnecessary return statement Andrew Morton
2020-12-15  3:08 ` [patch 098/200] mm/vmalloc: Fix unlock order in s_stop() Andrew Morton
2020-12-15  3:09 ` [patch 099/200] docs/vm: remove unused 3 items explanation for /proc/vmstat Andrew Morton
2020-12-15  3:09 ` [patch 100/200] mm/vmalloc.c: fix kasan shadow poisoning size Andrew Morton
2020-12-15  3:09 ` [patch 101/200] workqueue: kasan: record workqueue stack Andrew Morton
2020-12-15  3:09 ` [patch 102/200] kasan: print " Andrew Morton
2020-12-15  3:09 ` [patch 103/200] lib/test_kasan.c: add workqueue test case Andrew Morton
2020-12-15  3:09 ` [patch 104/200] kasan: update documentation for generic kasan Andrew Morton
2020-12-15  3:09 ` [patch 105/200] lkdtm: disable KASAN for rodata.o Andrew Morton
2020-12-15  3:09 ` [patch 106/200] alpha: switch from DISCONTIGMEM to SPARSEMEM Andrew Morton
2020-12-15  3:09 ` [patch 107/200] ia64: remove custom __early_pfn_to_nid() Andrew Morton
2020-12-15  3:09 ` [patch 108/200] ia64: remove 'ifdef CONFIG_ZONE_DMA32' statements Andrew Morton
2020-12-15  3:09 ` [patch 109/200] ia64: discontig: paging_init(): remove local max_pfn calculation Andrew Morton
2020-12-15  3:09 ` [patch 110/200] ia64: split virtual map initialization out of paging_init() Andrew Morton
2020-12-15  3:09 ` [patch 111/200] ia64: forbid using VIRTUAL_MEM_MAP with FLATMEM Andrew Morton
2020-12-15  3:09 ` [patch 112/200] ia64: make SPARSEMEM default and disable DISCONTIGMEM Andrew Morton
2020-12-15  3:09 ` [patch 113/200] arm: remove CONFIG_ARCH_HAS_HOLES_MEMORYMODEL Andrew Morton
2020-12-15  3:09 ` [patch 114/200] arm, arm64: move free_unused_memmap() to generic mm Andrew Morton
2020-12-15  3:10 ` [patch 115/200] arc: use FLATMEM with freeing of unused memory map instead of DISCONTIGMEM Andrew Morton
2020-12-15  3:10 ` [patch 116/200] m68k/mm: make node data and node setup depend on CONFIG_DISCONTIGMEM Andrew Morton
2020-12-15  3:10 ` [patch 117/200] m68k/mm: enable use of generic memory_model.h for !DISCONTIGMEM Andrew Morton
2020-12-15  3:10 ` [patch 118/200] m68k: deprecate DISCONTIGMEM Andrew Morton
2020-12-15  3:10 ` [patch 119/200] mm: introduce debug_pagealloc_{map,unmap}_pages() helpers Andrew Morton
2020-12-15  3:10 ` [patch 120/200] PM: hibernate: make direct map manipulations more explicit Andrew Morton
2020-12-15  3:10 ` [patch 121/200] arch, mm: restore dependency of __kernel_map_pages() on DEBUG_PAGEALLOC Andrew Morton
2020-12-15  3:10 ` [patch 122/200] arch, mm: make kernel_page_present() always available Andrew Morton
2020-12-15  3:10 ` [patch 123/200] mm, page_alloc: clean up pageset high and batch update Andrew Morton
2020-12-15  3:10 ` [patch 124/200] mm, page_alloc: calculate pageset high and batch once per zone Andrew Morton
2020-12-15  3:10 ` [patch 125/200] mm, page_alloc: remove setup_pageset() Andrew Morton
2020-12-15  3:10 ` [patch 126/200] mm, page_alloc: simplify pageset_update() Andrew Morton
2020-12-15  3:10 ` [patch 127/200] mm, page_alloc: cache pageset high and batch in struct zone Andrew Morton
2020-12-15  3:10 ` [patch 128/200] mm, page_alloc: move draining pcplists to page isolation users Andrew Morton
2020-12-15  3:10 ` [patch 129/200] mm, page_alloc: disable pcplists during memory offline Andrew Morton
2020-12-15  3:11 ` [patch 130/200] include/linux/page-flags.h: remove unused __[Set|Clear]PagePrivate Andrew Morton
2020-12-15  3:11 ` [patch 131/200] mm/page-flags: fix comment Andrew Morton
2020-12-15  3:11 ` [patch 132/200] mm/page_alloc: add __free_pages() documentation Andrew Morton
2020-12-15  3:11 ` [patch 133/200] mm/page_alloc: mark some symbols with static keyword Andrew Morton
2020-12-15  3:11 ` [patch 134/200] mm/page_alloc: clear all pages in post_alloc_hook() with init_on_alloc=1 Andrew Morton
2020-12-15  3:11 ` [patch 135/200] init/main: fix broken buffer_init when DEFERRED_STRUCT_PAGE_INIT set Andrew Morton
2020-12-15  3:11 ` [patch 136/200] mm: page_alloc: refactor setup_per_zone_lowmem_reserve() Andrew Morton
2020-12-15  3:11 ` [patch 137/200] mm/page_alloc: speed up the iteration of max_order Andrew Morton
2020-12-15  3:11 ` [patch 138/200] mm,hwpoison: drain pcplists before bailing out for non-buddy zero-refcount page Andrew Morton
2020-12-15  3:11 ` [patch 139/200] mm,hwpoison: take free pages off the buddy freelists Andrew Morton
2020-12-15  3:11 ` [patch 140/200] mm,hwpoison: drop unneeded pcplist draining Andrew Morton
2020-12-15  3:11 ` [patch 141/200] mm,hwpoison: refactor get_any_page Andrew Morton
2020-12-15  3:11 ` Andrew Morton [this message]
2020-12-15  3:11 ` [patch 143/200] mm,hwpoison: remove drain_all_pages from shake_page Andrew Morton
2020-12-15  3:11 ` [patch 144/200] mm,memory_failure: always pin the page in madvise_inject_error Andrew Morton
2020-12-15  3:11 ` [patch 145/200] mm,hwpoison: return -EBUSY when migration fails Andrew Morton
2020-12-15  3:11 ` [patch 146/200] mm/hugetlb.c: just use put_page_testzero() instead of page_count() Andrew Morton
2020-12-15  3:11 ` [patch 147/200] include/linux/huge_mm.h: remove extern keyword Andrew Morton
2020-12-15  3:12 ` [patch 148/200] khugepaged: add parameter explanations for kernel-doc markup Andrew Morton
2020-12-15  3:12 ` [patch 149/200] mm: hugetlb: fix type of delta parameter and related local variables in gather_surplus_pages() Andrew Morton
2020-12-15  3:12 ` [patch 150/200] mm,hugetlb: remove unneeded initialization Andrew Morton
2020-12-15  3:12 ` [patch 151/200] hugetlb: fix an error code in hugetlb_reserve_pages() Andrew Morton
2020-12-15  3:12 ` [patch 152/200] mm: don't wake kswapd prematurely when watermark boosting is disabled Andrew Morton
2020-12-15  3:12 ` [patch 153/200] mm/vmscan: drop unneeded assignment in kswapd() Andrew Morton
2020-12-15  3:12 ` [patch 154/200] mm/vmscan.c: remove the filename in the top of file comment Andrew Morton
2020-12-15  3:12 ` [patch 155/200] mm/page_isolation: do not isolate the max order page Andrew Morton
2020-12-15  3:12 ` [patch 156/200] z3fold: simplify freeing slots Andrew Morton
2020-12-15  3:12 ` [patch 157/200] z3fold: stricter locking and more careful reclaim Andrew Morton
2020-12-15  3:12 ` [patch 158/200] z3fold: remove preempt disabled sections for RT Andrew Morton
2020-12-15  3:12 ` [patch 159/200] mm/compaction: rename 'start_pfn' to 'iteration_start_pfn' in compact_zone() Andrew Morton
2020-12-15  3:12 ` [patch 160/200] mm/compaction: move compaction_suitable's comment to right place Andrew Morton
2020-12-15  3:12 ` [patch 161/200] mm/compaction: make defer_compaction and compaction_deferred static Andrew Morton
2020-12-15  3:12 ` [patch 162/200] mm/oom_kill: change comment and rename is_dump_unreclaim_slabs() Andrew Morton
2020-12-15  3:12 ` [patch 163/200] mm/migrate.c: fix comment spelling Andrew Morton
2020-12-15  3:12 ` [patch 164/200] mm/migrate.c: optimize migrate_vma_pages() mmu notifier Andrew Morton
2020-12-15  3:12 ` [patch 165/200] mm: support THPs in zero_user_segments Andrew Morton
2020-12-15  3:13 ` [patch 166/200] mm: truncate_complete_page() does not exist any more Andrew Morton
2020-12-15  3:13 ` [patch 167/200] mm: migrate: simplify the logic for handling permanent failure Andrew Morton
2020-12-15  3:13 ` [patch 168/200] mm: migrate: skip shared exec THP for NUMA balancing Andrew Morton
2020-12-15  3:13 ` [patch 169/200] mm: migrate: clean up migrate_prep{_local} Andrew Morton
2020-12-15  3:13 ` [patch 170/200] mm: migrate: return -ENOSYS if THP migration is unsupported Andrew Morton
2020-12-15  3:13 ` [patch 171/200] mm: migrate: remove unused parameter in migrate_vma_insert_page() Andrew Morton
2020-12-15  3:13 ` [patch 172/200] mm/cma.c: remove redundant cma_mutex lock Andrew Morton
2020-12-15  3:13 ` [patch 173/200] mm: cma: improve pr_debug log in cma_release() Andrew Morton
2020-12-15  3:13 ` [patch 174/200] mm, page_alloc: do not rely on the order of page_poison and init_on_alloc/free parameters Andrew Morton
2020-12-15  3:13 ` [patch 175/200] mm, page_poison: use static key more efficiently Andrew Morton
2020-12-15  3:13 ` [patch 176/200] kernel/power: allow hibernation with page_poison sanity checking Andrew Morton
2020-12-15  3:13 ` [patch 177/200] mm, page_poison: remove CONFIG_PAGE_POISONING_NO_SANITY Andrew Morton
2020-12-15  3:13 ` [patch 178/200] mm, page_poison: remove CONFIG_PAGE_POISONING_ZERO Andrew Morton
2020-12-15  3:13 ` [patch 179/200] userfaultfd: add UFFD_USER_MODE_ONLY Andrew Morton
2020-12-15  3:13 ` [patch 180/200] userfaultfd: add user-mode only option to unprivileged_userfaultfd sysctl knob Andrew Morton
2020-12-15  3:13 ` [patch 181/200] userfaultfd: selftests: make __{s,u}64 format specifiers portable Andrew Morton
2020-12-15  3:14 ` [patch 182/200] userfaultfd/selftests: always dump something in modes Andrew Morton
2020-12-15  3:14 ` [patch 183/200] userfaultfd/selftests: fix retval check for userfaultfd_open() Andrew Morton
2020-12-15  3:14 ` [patch 184/200] userfaultfd/selftests: hint the test runner on required privilege Andrew Morton
2020-12-15  3:14 ` [patch 185/200] mm/zswap: make struct kernel_param_ops definitions const Andrew Morton
2020-12-15  3:14 ` [patch 186/200] mm/zswap: fix passing zero to 'PTR_ERR' warning Andrew Morton
2020-12-15  3:14 ` [patch 187/200] mm/zswap: move to use crypto_acomp API for hardware acceleration Andrew Morton
2020-12-15  3:14 ` [patch 188/200] mm/zsmalloc.c: rework the list_add code in insert_zspage() Andrew Morton
2020-12-15  3:14 ` [patch 189/200] mm/process_vm_access: remove redundant initialization of iov_r Andrew Morton
2020-12-15  3:14 ` [patch 190/200] zram: support page writeback Andrew Morton
2020-12-15  3:14 ` [patch 191/200] zram: add stat to gather incompressible pages since zram set up Andrew Morton
2020-12-15  3:14 ` [patch 192/200] zram: break the strict dependency from lzo Andrew Morton
2020-12-15  3:14 ` [patch 193/200] mm: fix kernel-doc markups Andrew Morton
2020-12-15  3:14 ` [patch 194/200] mm: use sysfs_emit for struct kobject * uses Andrew Morton
2020-12-15  3:14 ` [patch 195/200] mm: huge_memory: convert remaining use of sprintf to sysfs_emit and neatening Andrew Morton
2020-12-15  3:14 ` [patch 196/200] mm:backing-dev: use sysfs_emit in macro defining functions Andrew Morton
2020-12-15  3:14 ` [patch 197/200] mm: shmem: convert shmem_enabled_show to use sysfs_emit_at Andrew Morton
2020-12-15  3:14 ` [patch 198/200] mm: slub: convert sysfs sprintf family to sysfs_emit/sysfs_emit_at Andrew Morton
2020-12-15  3:15 ` [patch 199/200] mm: fix fall-through warnings for Clang Andrew Morton
2020-12-15  3:15 ` [patch 200/200] mm: cleanup kstrto*() usage Andrew Morton
2020-12-15  3:25 ` incoming Linus Torvalds
2020-12-15  3:30   ` incoming Linus Torvalds
2020-12-15 14:04     ` incoming Konstantin Ryabitsev

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=20201215031141.VV_tQ7dmx%akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=mm-commits@vger.kernel.org \
    --cc=naoya.horiguchi@nec.com \
    --cc=osalvador@suse.de \
    --cc=qcai@redhat.com \
    --cc=torvalds@linux-foundation.org \
    --cc=vbabka@suse.cz \
    --subject='Re: [patch 142/200] mm,hwpoison: disable pcplists before grabbing a refcount' \
    /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

This is a public inbox, see mirroring instructions
on how to clone and mirror all data and code used for this inbox