Hi Aneesh, On Thu, Apr 22, 2021 at 11:13:17AM +0530, Aneesh Kumar K.V wrote: > pmd/pud_populate is the right interface to be used to set the respective > page table entries. Some architectures like ppc64 do assume that set_pmd/pud_at > can only be used to set a hugepage PTE. Since we are not setting up a hugepage > PTE here, use the pmd/pud_populate interface. > > Signed-off-by: Aneesh Kumar K.V > --- > mm/mremap.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/mm/mremap.c b/mm/mremap.c > index ec8f840399ed..574287f9bb39 100644 > --- a/mm/mremap.c > +++ b/mm/mremap.c > @@ -26,6 +26,7 @@ > > #include > #include > +#include > > #include "internal.h" > > @@ -257,9 +258,8 @@ static bool move_normal_pmd(struct vm_area_struct *vma, unsigned long old_addr, > pmd_clear(old_pmd); > > VM_BUG_ON(!pmd_none(*new_pmd)); > + pmd_populate(mm, new_pmd, (pgtable_t)pmd_page_vaddr(pmd)); > > - /* Set the new pmd */ > - set_pmd_at(mm, new_addr, new_pmd, pmd); > flush_tlb_range(vma, old_addr, old_addr + PMD_SIZE); > if (new_ptl != old_ptl) > spin_unlock(new_ptl); > @@ -306,8 +306,7 @@ static bool move_normal_pud(struct vm_area_struct *vma, unsigned long old_addr, > > VM_BUG_ON(!pud_none(*new_pud)); > > - /* Set the new pud */ > - set_pud_at(mm, new_addr, new_pud, pud); > + pud_populate(mm, new_pud, (pmd_t *)pud_page_vaddr(pud)); > flush_tlb_range(vma, old_addr, old_addr + PUD_SIZE); > if (new_ptl != old_ptl) > spin_unlock(new_ptl); > -- > 2.30.2 > > This commit causes my WSL2 VM to close when compiling something memory intensive, such as an x86_64_defconfig + CONFIG_LTO_CLANG_FULL=y kernel or LLVM/Clang. Unfortunately, I do not have much further information to provide since I do not see any sort of splat in dmesg right before it closes and I have found zero information about getting the previous kernel message in WSL2 (custom init so no systemd or anything). The config file is the stock one from Microsoft: https://github.com/microsoft/WSL2-Linux-Kernel/blob/a571dc8cedc8e0e56487c0dc93243e0b5db8960a/Microsoft/config-wsl I have attached my .config anyways, which includes CONFIG_DEBUG_VM, which does not appear to show anything out of the ordinary. I have also attached a dmesg just in case anything sticks out. I am happy to provide any additional information or perform additional debugging steps as needed. Cheers, Nathan $ git bisect log # bad: [cd557f1c605fc5a2c0eb0b540610f50dc67dd849] Add linux-next specific files for 20210514 # good: [315d99318179b9cd5077ccc9f7f26a164c9fa998] Merge tag 'pm-5.13-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm git bisect start 'cd557f1c605fc5a2c0eb0b540610f50dc67dd849' '315d99318179b9cd5077ccc9f7f26a164c9fa998' # good: [9634d7cb3c506ae886a5136d12b4af696b9cee8a] Merge remote-tracking branch 'drm-misc/for-linux-next' git bisect good 9634d7cb3c506ae886a5136d12b4af696b9cee8a # good: [294636a24ae819a7caf0807d05d8eb5b964ec06f] Merge remote-tracking branch 'rcu/rcu/next' git bisect good 294636a24ae819a7caf0807d05d8eb5b964ec06f # good: [cb753d0611f912439c8e814f4254d15fa8fa1d75] Merge remote-tracking branch 'gpio-brgl/gpio/for-next' git bisect good cb753d0611f912439c8e814f4254d15fa8fa1d75 # bad: [b1e7389449084b74a044a70860c6a1c7466781cb] lib/string_helpers: switch to use BIT() macro git bisect bad b1e7389449084b74a044a70860c6a1c7466781cb # bad: [bf5570ed0654a21000e5dad9243ea1ba30bfe208] kasan: use dump_stack_lvl(KERN_ERR) to print stacks git bisect bad bf5570ed0654a21000e5dad9243ea1ba30bfe208 # good: [4a292ff7a819404039588c7a9af272aca22c869e] fixup! mm: gup: pack has_pinned in MMF_HAS_PINNED git bisect good 4a292ff7a819404039588c7a9af272aca22c869e # good: [5ed68c90c7fb884c3c493d5529aca79dcf125848] mm: memcontrol: move obj_cgroup_uncharge_pages() out of css_set_lock git bisect good 5ed68c90c7fb884c3c493d5529aca79dcf125848 # good: [f96ae2c1e63b71134e216e9940df3f2793a9a4b1] mm/memory.c: fix comment of finish_mkwrite_fault() git bisect good f96ae2c1e63b71134e216e9940df3f2793a9a4b1 # bad: [5b0a28a7f9f5fdc2fe5a5e2cce7ea17b98e5eaeb] mm/mremap: use range flush that does TLB and page walk cache flush git bisect bad 5b0a28a7f9f5fdc2fe5a5e2cce7ea17b98e5eaeb # bad: [dbee97d1f49a2f2f1f5c26bf15151cc998572e89] mm/mremap: use pmd/pud_poplulate to update page table entries git bisect bad dbee97d1f49a2f2f1f5c26bf15151cc998572e89 # good: [c4c8a76d96a7d38d1ec8732e3f852418d18a7424] selftest/mremap_test: avoid crash with static build git bisect good c4c8a76d96a7d38d1ec8732e3f852418d18a7424 # first bad commit: [dbee97d1f49a2f2f1f5c26bf15151cc998572e89] mm/mremap: use pmd/pud_poplulate to update page table entries