On Tue, 1 Jun 2021, Hugh Dickins wrote: > Here is a batch of long-standing THP bug fixes that I had not got > around to sending before, but prompted now by Wang Yugui's report > https://lore.kernel.org/linux-mm/20210412180659.B9E3.409509F4@e16-tech.com/ > > Wang Yugui has tested a rollup of these fixes applied to 5.10.39, > and they have done no harm, but have *not* fixed that issue: > something more is needed and I have no idea of what. > > But at least these clear up related issues, and should go to stable > (except for the last, which is just an optimization: it would be > fine in stable, but it's not required there). > > These are against 5.13-rc4: easy for others to try out, but my next > task is to work out how to shoehorn them into mmotm and linux-next. > > I would have said just before Yang Shi's related > mm-thp-replace-debug_vm-bug-with-vm_warn-when-unmap-fails-for-split.patch > except that (which should also go to stable) is currently placed after > Alistair Popple's "Add support for SVM atomics in Nouveau" series, > mm-rmap-split-try_to_munlock-from-try_to_unmap.patch etc. > I expect I shall offer you some rediffs of Alistair's, we'll see. And here's my attempt to rewrite history: mmotm-adjust.tar contains before/series before/mm-remove-special-swap-entry-functions.patch before/mm-rmap-split-try_to_munlock-from-try_to_unmap.patch before/mm-huge_memoryc-remove-unnecessary-tlb_remove_page_size-for-huge-zero-pmd.patch after/series after/mm-remove-special-swap-entry-functions.patch after/mm-rmap-split-try_to_munlock-from-try_to_unmap.patch after/mm-huge_memoryc-remove-unnecessary-tlb_remove_page_size-for-huge-zero-pmd.patch "before" contains the originals from mmotm .DATE=2021-06-01-19-57: your series file, two patches from Alistair and one from Miaohe, which gave rejects when I inserted this 1-7/7 patchset and Yang Shi's 1-2/2 earlier. All other patches applied cleanly, but could be refreshed. "after" contains my replacements to those: adjusting them to how they would have been written if this patchset and Yang Shi's went first (and in adjusting some of the comments in Alistair's, I did not recognize the reason given for unmap_page() using try_to_unmap() on file THPs, so substituted my own explanation). As diff'ing the series will show, first thing is to delete the old mm-rmap-make-try_to_unmap-void-function-fix-fix.patch mm-rmap-make-try_to_unmap-void-function-fix.patch mm-rmap-make-try_to_unmap-void-function.patch mm-thp-replace-debug_vm-bug-with-vm_warn-when-unmap-fails-for-split.patch mm-thp-check-total_mapcount-instead-of-page_mapcount-fix-fix-fix.patch Then insert, from the mailing list hughd1.patch hughd2.patch hughd3.patch hughd4.patch hughd5.patch hughd6.patch yangshi1.patch yangshi2.patch hughd7.patch You'll name those differently of course. I have just posted a v2 of hughd3.patch, with small changes suggested by Matthew; and after sending this, I shall reply to it with a 6.1/7 and 6.2/7 which are rediffs of Yang Shi's related patches to fit in here: 1/7 through 6.1/7 are Cc'ed to stable, 6.2/7 and 7/7 are cleanup and optimization. I've placed them all together early, in the "mainline-later" section; I expect you to be more cautious and place them later - anywhere before mm-remove-special-swap-entry-functions.patch works (but even the two not-for-stable ones need to come before that). Then please replace those three "before" patches by their "after"s, unless Alistair or someone else objects. I've probably forgotten something, but can't remember what it is :) Let me know if I've screwed up. Thanks, Hugh > > 1/7 mm/thp: fix __split_huge_pmd_locked() on shmem migration entry > 2/7 mm/thp: try_to_unmap() use TTU_SYNC for safe DEBUG_VM splitting > 3/7 mm/thp: fix vma_address() if virtual address below file offset > 4/7 mm/thp: fix page_address_in_vma() on file THP tails > 5/7 mm/thp: fix page_vma_mapped_walk() if huge page mapped by ptes > 6/7 mm/thp: unmap_mapping_page() to fix THP truncate_cleanup_page() > 7/7 mm/thp: remap_page() is only needed on anonymous THP > > include/linux/mm.h | 3 > include/linux/rmap.h | 3 > mm/huge_memory.c | 47 ++++++++---- > mm/internal.h | 54 ++++++++++---- > mm/memory.c | 40 ++++++++++ > mm/page_vma_mapped.c | 163 ++++++++++++++++++++++++++----------------- > mm/pgtable-generic.c | 5 - > mm/rmap.c | 39 +++++++--- > mm/truncate.c | 43 +++++------ > 9 files changed, 266 insertions(+), 131 deletions(-) > > Hugh