b64679781a
[ Upstream commit 131b8db78558120f58c5dc745ea9655f6b854162 ] Adding/removing large amount of pages at once to/from the CMM balloon can result in rcu_sched stalls or workqueue lockups, because of busy looping w/o cond_resched(). Prevent this by adding a cond_resched(). cmm_free_pages() holds a spin_lock while looping, so it cannot be added directly to the existing loop. Instead, introduce a wrapper function that operates on maximum 256 pages at once, and add it there. Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Sasha Levin <sashal@kernel.org> |
||
---|---|---|
.. | ||
cmm.c | ||
dump_pagetables.c | ||
extmem.c | ||
fault.c | ||
gmap.c | ||
hugetlbpage.c | ||
init.c | ||
kasan_init.c | ||
maccess.c | ||
Makefile | ||
mmap.c | ||
page-states.c | ||
pageattr.c | ||
pgalloc.c | ||
pgtable.c | ||
vmem.c |