• Aneesh Kumar K.V's avatar
    powerpc/mm: Fix WARN_ON with THP NUMA migration · dd0e144a
    Aneesh Kumar K.V authored
    WARNING: CPU: 12 PID: 4322 at /arch/powerpc/mm/pgtable-book3s64.c:76 set_pmd_at+0x4c/0x2b0
     Modules linked in:
     CPU: 12 PID: 4322 Comm: qemu-system-ppc Tainted: G        W         4.19.0-rc3-00758-g8f0c636b0542 #36
     NIP:  c0000000000872fc LR: c000000000484eec CTR: 0000000000000000
     REGS: c000003fba876fe0 TRAP: 0700   Tainted: G        W          (4.19.0-rc3-00758-g8f0c636b0542)
     MSR:  900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>  CR: 24282884  XER: 00000000
     CFAR: c000000000484ee8 IRQMASK: 0
     GPR00: c000000000484eec c000003fba877268 c000000001f0ec00 c000003fbd229f80
     GPR04: 00007c8fe8e00000 c000003f864c5a38 860300853e0000c0 0000000000000080
     GPR08: 0000000080000000 0000000000000001 0401000000000080 0000000000000001
     GPR12: 0000000000002000 c000003fffff5400 c000003fce292000 00007c9024570000
     GPR16: 0000000000000000 0000000000ffffff 0000000000000001 c000000001885950
     GPR20: 0000000000000000 001ffffc0004807c 0000000000000008 c000000001f49d05
     GPR24: 00007c8fe8e00000 c0000000020f2468 ffffffffffffffff c000003fcd33b090
     GPR28: 00007c8fe8e00000 c000003fbd229f80 c000003f864c5a38 860300853e0000c0
     NIP [c0000000000872fc] set_pmd_at+0x4c/0x2b0
     LR [c000000000484eec] do_huge_pmd_numa_page+0xb1c/0xc20
     Call Trace:
     [c000003fba877268] [c00000000045931c] mpol_misplaced+0x1bc/0x230 (unreliable)
     [c000003fba8772c8] [c000000000484eec] do_huge_pmd_numa_page+0xb1c/0xc20
     [c000003fba877398] [c00000000040d344] __handle_mm_fault+0x5e4/0x2300
     [c000003fba8774d8] [c00000000040f400] handle_mm_fault+0x3a0/0x420
     [c000003fba877528] [c0000000003ff6f4] __get_user_pages+0x2e4/0x560
     [c000003fba877628] [c000000000400314] get_user_pages_unlocked+0x104/0x2a0
     [c000003fba8776c8] [c000000000118f44] __gfn_to_pfn_memslot+0x284/0x6a0
     [c000003fba877748] [c0000000001463a0] kvmppc_book3s_radix_page_fault+0x360/0x12d0
     [c000003fba877838] [c000000000142228] kvmppc_book3s_hv_page_fault+0x48/0x1300
     [c000003fba877988] [c00000000013dc08] kvmppc_vcpu_run_hv+0x1808/0x1b50
     [c000003fba877af8] [c000000000126b44] kvmppc_vcpu_run+0x34/0x50
     [c000003fba877b18] [c000000000123268] kvm_arch_vcpu_ioctl_run+0x288/0x2d0
     [c000003fba877b98] [c00000000011253c] kvm_vcpu_ioctl+0x1fc/0x8c0
     [c000003fba877d08] [c0000000004e9b24] do_vfs_ioctl+0xa44/0xae0
     [c000003fba877db8] [c0000000004e9c44] ksys_ioctl+0x84/0xf0
     [c000003fba877e08] [c0000000004e9cd8] sys_ioctl+0x28/0x80
    
    We removed the pte_protnone check earlier with the understanding that we
    mark the pte invalid before the set_pte/set_pmd usage. But the huge pmd
    autonuma still use the set_pmd_at directly. This is ok because a protnone pte
    won't have translation cache in TLB.
    
    Fixes: da7ad366 ("powerpc/mm/book3s: Update pmd_present to look at _PAGE_PRESENT bit")
    Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    dd0e144a
pgtable.c 7.73 KB