Pavel Tatashin
13ae9eaae0
mm: call cond_resched() from deferred_init_memmap()
commit da97f2d56bbd880b4138916a7ef96f9881a551b2 upstream.
Now that deferred pages are initialized with interrupts enabled we can
replace touch_nmi_watchdog() with cond_resched(), as it was before
3a2d7fa8a3.
For now, we cannot do the same in deferred_grow_zone() as it is still
initializes pages with interrupts disabled.
This change fixes RCU problem described in
https://lkml.kernel.org/r/20200401104156.11564-2-david@redhat.com
[ 60.474005] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 60.475000] rcu: 1-...0: (0 ticks this GP) idle=02a/1/0x4000000000000000 softirq=1/1 fqs=15000
[ 60.475000] rcu: (detected by 0, t=60002 jiffies, g=-1199, q=1)
[ 60.475000] Sending NMI from CPU 0 to CPUs 1:
[ 1.760091] NMI backtrace for cpu 1
[ 1.760091] CPU: 1 PID: 20 Comm: pgdatinit0 Not tainted 4.18.0-147.9.1.el8_1.x86_64 #1
[ 1.760091] Hardware name: Red Hat KVM, BIOS 1.13.0-1.module+el8.2.0+5520+4e5817f3 04/01/2014
[ 1.760091] RIP: 0010:__init_single_page.isra.65+0x10/0x4f
[ 1.760091] Code: 48 83 cf 63 48 89 f8 0f 1f 40 00 48 89 c6 48 89 d7 e8 6b 18 80 ff 66 90 5b c3 31 c0 b9 10 00 00 00 49 89 f8 48 c1 e6 33 f3 ab <b8> 07 00 00 00 48 c1 e2 36 41 c7 40 34 01 00 00 00 48 c1 e0 33 41
[ 1.760091] RSP: 0000:ffffba783123be40 EFLAGS: 00000006
[ 1.760091] RAX: 0000000000000000 RBX: fffffad34405e300 RCX: 0000000000000000
[ 1.760091] RDX: 0000000000000000 RSI: 0010000000000000 RDI: fffffad34405e340
[ 1.760091] RBP: 0000000033f3177e R08: fffffad34405e300 R09: 0000000000000002
[ 1.760091] R10: 000000000000002b R11: ffff98afb691a500 R12: 0000000000000002
[ 1.760091] R13: 0000000000000000 R14: 000000003f03ea00 R15: 000000003e10178c
[ 1.760091] FS: 0000000000000000(0000) GS:ffff9c9ebeb00000(0000) knlGS:0000000000000000
[ 1.760091] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1.760091] CR2: 00000000ffffffff CR3: 000000a1cf20a001 CR4: 00000000003606e0
[ 1.760091] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 1.760091] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 1.760091] Call Trace:
[ 1.760091] deferred_init_pages+0x8f/0xbf
[ 1.760091] deferred_init_memmap+0x184/0x29d
[ 1.760091] ? deferred_free_pages.isra.97+0xba/0xba
[ 1.760091] kthread+0x112/0x130
[ 1.760091] ? kthread_flush_work_fn+0x10/0x10
[ 1.760091] ret_from_fork+0x35/0x40
[ 89.123011] node 0 initialised, 1055935372 pages in 88650ms
Fixes: 3a2d7fa8a3 ("mm: disable interrupts while initializing deferred pages")
Reported-by: Yiqian Wei <yiwei@redhat.com>
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Tested-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Daniel Jordan <daniel.m.jordan@oracle.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: James Morris <jmorris@namei.org>
Cc: Kirill Tkhai <ktkhai@virtuozzo.com>
Cc: Sasha Levin <sashal@kernel.org>
Cc: Shile Zhang <shile.zhang@linux.alibaba.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: <stable@vger.kernel.org> [4.17+]
Link: http://lkml.kernel.org/r/20200403140952.17177-4-pasha.tatashin@soleen.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
2020-06-22 09:31:14 +02:00 |
| .. |
|
kasan
|
kasan: disable branch tracing for core runtime
|
2020-05-27 17:46:48 +02:00 |
|
backing-dev.c
|
bdi: add a ->dev_name field to struct backing_dev_info
|
2020-05-14 07:58:30 +02:00 |
|
balloon_compaction.c
|
|
|
|
cleancache.c
|
|
|
|
cma.c
|
|
|
|
cma.h
|
|
|
|
cma_debug.c
|
|
|
|
compaction.c
|
mm, compaction: fix wrong pfn handling in __reset_isolation_pfn()
|
2019-10-14 15:04:01 -07:00 |
|
debug.c
|
mm/debug.c: always print flags in dump_page()
|
2020-03-05 16:43:51 +01:00 |
|
debug_page_ref.c
|
|
|
|
dmapool.c
|
|
|
|
early_ioremap.c
|
|
|
|
fadvise.c
|
|
|
|
failslab.c
|
|
|
|
filemap.c
|
mm: drop mmap_sem before calling balance_dirty_pages() in write fault
|
2020-01-09 10:19:55 +01:00 |
|
frame_vector.c
|
mm: untag user pointers in get_vaddr_frames
|
2019-09-25 17:51:41 -07:00 |
|
frontswap.c
|
|
|
|
gup.c
|
gup: document and work around "COW can break either way" issue
|
2020-06-17 16:40:30 +02:00 |
|
gup_benchmark.c
|
mm/gup: fix memory leak in __gup_benchmark_ioctl
|
2020-01-09 10:20:00 +01:00 |
|
highmem.c
|
|
|
|
hmm.c
|
|
|
|
huge_memory.c
|
mm: thp: make the THP mapcount atomic against __split_huge_pmd_locked()
|
2020-06-22 09:31:14 +02:00 |
|
hugetlb.c
|
mm/hugetlb: fix a addressing exception caused by huge_pte_offset
|
2020-04-29 16:33:14 +02:00 |
|
hugetlb_cgroup.c
|
mm: hugetlb: switch to css_tryget() in hugetlb_cgroup_charge_cgroup()
|
2019-11-15 18:34:00 -08:00 |
|
hwpoison-inject.c
|
|
|
|
init-mm.c
|
mm/init-mm.c: include <linux/mman.h> for vm_committed_as_batch
|
2019-10-19 06:32:32 -04:00 |
|
internal.h
|
mm: drop mmap_sem before calling balance_dirty_pages() in write fault
|
2020-01-09 10:19:55 +01:00 |
|
interval_tree.c
|
|
|
|
Kconfig
|
mm,thp: add read-only THP support for (non-shmem) FS
|
2019-09-24 15:54:11 -07:00 |
|
Kconfig.debug
|
mm, page_owner, debug_pagealloc: save and dump freeing stack trace
|
2019-09-24 15:54:08 -07:00 |
|
khugepaged.c
|
mm,thp: stop leaking unreleased file pages
|
2020-06-03 08:21:26 +02:00 |
|
kmemleak-test.c
|
|
|
|
kmemleak.c
|
kmemleak: Do not corrupt the object_list during clean-up
|
2019-10-14 08:56:16 -07:00 |
|
ksm.c
|
mm/ksm: fix NULL pointer dereference when KSM zero page is enabled
|
2020-04-29 16:33:15 +02:00 |
|
list_lru.c
|
|
|
|
maccess.c
|
uaccess: Add non-pagefault user-space write function
|
2020-01-17 19:48:40 +01:00 |
|
madvise.c
|
mm: do not allow MADV_PAGEOUT for CoW pages
|
2020-03-25 08:25:57 +01:00 |
|
Makefile
|
mm: silence -Woverride-init/initializer-overrides
|
2019-09-24 15:54:10 -07:00 |
|
memblock.c
|
mm: memblock: do not enforce current limit for memblock_phys* family
|
2019-10-19 06:32:32 -04:00 |
|
memcontrol.c
|
mm, memcg: fix error return value of mem_cgroup_css_alloc()
|
2020-05-14 07:58:30 +02:00 |
|
memfd.c
|
mm: page cache: store only head pages in i_pages
|
2019-09-24 15:54:08 -07:00 |
|
memory-failure.c
|
mm/memory-failure.c: don't access uninitialized memmaps in memory_failure()
|
2019-10-19 06:32:31 -04:00 |
|
memory.c
|
mm: drop mmap_sem before calling balance_dirty_pages() in write fault
|
2020-01-09 10:19:55 +01:00 |
|
memory_hotplug.c
|
mm, hotplug: fix page online with DEBUG_PAGEALLOC compiled but not enabled
|
2020-03-12 13:00:19 +01:00 |
|
mempolicy.c
|
mm: mempolicy: require at least one nodeid for MPOL_PREFERRED
|
2020-04-08 09:08:47 +02:00 |
|
mempool.c
|
|
|
|
memremap.c
|
mm/memory_hotplug: shrink zones when offlining memory
|
2020-01-09 10:19:56 +01:00 |
|
memtest.c
|
|
|
|
migrate.c
|
mm: move_pages: report the number of non-attempted pages
|
2020-02-11 04:35:13 -08:00 |
|
mincore.c
|
mm: untag user pointers passed to memory syscalls
|
2019-09-25 17:51:41 -07:00 |
|
mlock.c
|
mm: untag user pointers passed to memory syscalls
|
2019-09-25 17:51:41 -07:00 |
|
mm_init.c
|
|
|
|
mmap.c
|
mm: Avoid creating virtual address aliases in brk()/mmap()/mremap()
|
2020-02-28 17:22:21 +01:00 |
|
mmu_context.c
|
|
|
|
mmu_gather.c
|
mm/mmu_gather: invalidate TLB correctly on batch allocation failure and flush
|
2020-02-11 04:35:42 -08:00 |
|
mmu_notifier.c
|
mm/mmu_notifiers: use the right return code for WARN_ON
|
2019-11-06 08:47:50 -08:00 |
|
mmzone.c
|
|
|
|
mprotect.c
|
mm, numa: fix bad pmd by atomically check for pmd_trans_huge when marking page tables prot_numa
|
2020-03-12 13:00:19 +01:00 |
|
mremap.c
|
mm: Fix mremap not considering huge pmd devmap
|
2020-06-07 13:18:46 +02:00 |
|
msync.c
|
mm: untag user pointers passed to memory syscalls
|
2019-09-25 17:51:41 -07:00 |
|
nommu.c
|
x86/mm: split vmalloc_sync_all()
|
2020-03-25 08:25:58 +01:00 |
|
oom_kill.c
|
mm/oom: fix pgtables units mismatch in Killed process message
|
2020-01-09 10:19:57 +01:00 |
|
page-writeback.c
|
mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio()
|
2020-01-23 08:22:41 +01:00 |
|
page_alloc.c
|
mm: call cond_resched() from deferred_init_memmap()
|
2020-06-22 09:31:14 +02:00 |
|
page_counter.c
|
|
|
|
page_ext.c
|
mm, page_owner: fix off-by-one error in __set_page_owner_handle()
|
2019-10-14 15:04:00 -07:00 |
|
page_idle.c
|
|
|
|
page_io.c
|
mm/page_io.c: do not free shared swap slots
|
2019-11-15 18:34:00 -08:00 |
|
page_isolation.c
|
|
|
|
page_owner.c
|
mm/page_owner: don't access uninitialized memmaps when reading /proc/pagetypeinfo
|
2019-10-19 06:32:31 -04:00 |
|
page_poison.c
|
mm/page_poison.c: fix a typo in a comment
|
2019-09-24 15:54:08 -07:00 |
|
page_vma_mapped.c
|
mm: introduce page_size()
|
2019-09-24 15:54:08 -07:00 |
|
pagewalk.c
|
|
|
|
percpu-internal.h
|
|
|
|
percpu-km.c
|
|
|
|
percpu-stats.c
|
|
|
|
percpu-vm.c
|
|
|
|
percpu.c
|
|
|
|
pgtable-generic.c
|
|
|
|
process_vm_access.c
|
|
|
|
readahead.c
|
|
|
|
rmap.c
|
mm: include <linux/huge_mm.h> for is_vma_temporary_stack
|
2019-10-19 06:32:32 -04:00 |
|
rodata_test.c
|
|
|
|
shmem.c
|
shmem: fix possible deadlocks on shmlock_user_lock
|
2020-05-20 08:20:03 +02:00 |
|
shuffle.c
|
mm: fix -Wmissing-prototypes warnings
|
2019-10-07 15:47:19 -07:00 |
|
shuffle.h
|
|
|
|
slab.c
|
mm, debug_pagealloc: don't rely on static keys too early
|
2020-01-23 08:22:40 +01:00 |
|
slab.h
|
mm: slab: make page_cgroup_ino() to recognize non-compound slab pages properly
|
2019-11-06 08:47:50 -08:00 |
|
slab_common.c
|
mm: memcg/slab: call flush_memcg_workqueue() only if memcg workqueue is valid
|
2020-01-23 08:22:39 +01:00 |
|
slob.c
|
mm, sl[aou]b: guarantee natural alignment for kmalloc(power-of-two)
|
2019-10-07 15:47:20 -07:00 |
|
slub.c
|
mm/slub: fix a memory leak in sysfs_slab_add()
|
2020-06-17 16:40:36 +02:00 |
|
sparse-vmemmap.c
|
|
|
|
sparse.c
|
mm/sparse: fix kernel crash with pfn_section_valid check
|
2020-04-01 11:02:03 +02:00 |
|
swap.c
|
mm: introduce MADV_COLD
|
2019-09-25 17:51:41 -07:00 |
|
swap_cgroup.c
|
|
|
|
swap_slots.c
|
|
|
|
swap_state.c
|
mm: page cache: store only head pages in i_pages
|
2019-09-24 15:54:08 -07:00 |
|
swapfile.c
|
mm/swapfile.c: move inode_lock out of claim_swapfile
|
2020-04-01 11:02:02 +02:00 |
|
truncate.c
|
mm/thp: allow dropping THP from page cache
|
2019-10-19 06:32:33 -04:00 |
|
usercopy.c
|
|
|
|
userfaultfd.c
|
|
|
|
util.c
|
mm: add kvfree_sensitive() for freeing sensitive data objects
|
2020-06-17 16:40:23 +02:00 |
|
vmacache.c
|
|
|
|
vmalloc.c
|
vmalloc: fix remap_vmalloc_range() bounds checks
|
2020-04-29 16:33:14 +02:00 |
|
vmpressure.c
|
mm/vmpressure.c: fix a signedness bug in vmpressure_register_event()
|
2019-10-07 15:47:19 -07:00 |
|
vmscan.c
|
mm/vmscan.c: don't round up scan size for online memory cgroup
|
2020-02-28 17:22:20 +01:00 |
|
vmstat.c
|
mm, vmstat: reduce zone->lock holding time by /proc/pagetypeinfo
|
2019-11-06 08:47:50 -08:00 |
|
workingset.c
|
|
|
|
z3fold.c
|
mm/z3fold.c: claim page in the beginning of free
|
2019-10-07 15:47:19 -07:00 |
|
zbud.c
|
|
|
|
zpool.c
|
zpool: add malloc_support_movable to zpool_driver
|
2019-09-24 15:54:12 -07:00 |
|
zsmalloc.c
|
mm/zsmalloc.c: fix the migrated zspage statistics.
|
2020-01-09 10:19:56 +01:00 |
|
zswap.c
|
zswap: do not map same object twice
|
2019-09-24 15:54:12 -07:00 |