The patch titled Subject: mm/huge_memory.c: reduce critical section protected by split_queue_lock has been added to the -mm tree. Its filename is mm-huge_memoryc-reduce-critical-section-protected-by-split_queue_lock.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-huge_memoryc-reduce-critical-section-protected-by-split_queue_lock.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-huge_memoryc-reduce-critical-section-protected-by-split_queue_lock.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: Wei Yang <richardw.yang@xxxxxxxxxxxxxxx> Subject: mm/huge_memory.c: reduce critical section protected by split_queue_lock split_queue_lock protects data in struct deferred_split. We can release the lock after delete the page from deferred_split_queue. This patch moves the THP accounting out of the lock protection, which is introduced in commit 65c453778aea ("mm, rmap: account shmem thp pages"). Link: http://lkml.kernel.org/r/20200110025516.23996-1-richardw.yang@xxxxxxxxxxxxxxx Signed-off-by: Wei Yang <richardw.yang@xxxxxxxxxxxxxxx> Reviewed-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/huge_memory.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/mm/huge_memory.c~mm-huge_memoryc-reduce-critical-section-protected-by-split_queue_lock +++ a/mm/huge_memory.c @@ -2799,6 +2799,7 @@ int split_huge_page_to_list(struct page ds_queue->split_queue_len--; list_del(page_deferred_list(head)); } + spin_unlock(&ds_queue->split_queue_lock); if (mapping) { if (PageSwapBacked(head)) __dec_node_page_state(head, NR_SHMEM_THPS); @@ -2806,7 +2807,6 @@ int split_huge_page_to_list(struct page __dec_node_page_state(head, NR_FILE_THPS); } - spin_unlock(&ds_queue->split_queue_lock); __split_huge_page(page, list, end, flags); if (PageSwapCache(head)) { swp_entry_t entry = { .val = page_private(head) }; _ Patches currently in -mm which might be from richardw.yang@xxxxxxxxxxxxxxx are mm-thp-grab-the-lock-before-manipulation-defer-list.patch mm-huge_memoryc-use-head-to-check-huge-zero-page.patch mm-huge_memoryc-use-head-to-emphasize-the-purpose-of-page.patch mm-huge_memoryc-reduce-critical-section-protected-by-split_queue_lock.patch mm-remove-dead-code-totalram_pages_set.patch