Re: [PATCH 1/1] mm/page_alloc: add scheduling point to free_unref_page_list

From: Andrew Morton
Date: Wed Mar 02 2022 - 18:51:50 EST


On Tue, 1 Mar 2022 20:38:25 -0500 wangjianxing <wangjianxing@xxxxxxxxxxx> wrote:

> free a large list of pages maybe cause rcu_sched starved on
> non-preemptible kernels
>
> rcu: rcu_sched kthread starved for 5359 jiffies! g454793 f0x0
> RCU_GP_WAIT_FQS(5) ->state=0x0 ->cpu=19
> [...]
> Call Trace:
> free_unref_page_list+0x19c/0x270
> release_pages+0x3cc/0x498
> tlb_flush_mmu_free+0x44/0x70
> zap_pte_range+0x450/0x738
> unmap_page_range+0x108/0x240
> unmap_vmas+0x74/0xf0
> unmap_region+0xb0/0x120
> do_munmap+0x264/0x438
> vm_munmap+0x58/0xa0
> sys_munmap+0x10/0x20
> syscall_common+0x24/0x38

Thanks.

How did this large list of pages come about?

Will people be seeing this message in upstream kernels, or is it
specific to some caller code which you have added?

Please always include details such as this so that others can determine
whether the fix should be backported into -stable kernels.