Re: [tip:x86/mm] x86: Convert the rest of the code to support p4d_t

From: Dan Williams
Date: Sun Apr 23 2017 - 15:58:18 EST


On Mon, Mar 27, 2017 at 3:25 AM, tip-bot for Kirill A. Shutemov
<tipbot@xxxxxxxxx> wrote:
> Commit-ID: f2a6a7050109e0a5c7a84c70aa6010f682b2f1ee
> Gitweb: http://git.kernel.org/tip/f2a6a7050109e0a5c7a84c70aa6010f682b2f1ee
> Author: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> AuthorDate: Fri, 17 Mar 2017 21:55:15 +0300
> Committer: Ingo Molnar <mingo@xxxxxxxxxx>
> CommitDate: Mon, 27 Mar 2017 08:56:58 +0200
>
> x86: Convert the rest of the code to support p4d_t
>
> This patch converts x86 to use proper folding of a new (fifth) page table level
> with <asm-generic/pgtable-nop4d.h>.
>
> That's a bit of a kitchen sink patch, but I don't see how to split it further
> without hurting bisectability.
>
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Acked-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
> Cc: Andy Lutomirski <luto@xxxxxxxxxxxxxx>
> Cc: Andy Lutomirski <luto@xxxxxxxxxx>
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> Cc: Borislav Petkov <bp@xxxxxxxxx>
> Cc: Brian Gerst <brgerst@xxxxxxxxx>
> Cc: Dave Hansen <dave.hansen@xxxxxxxxx>
> Cc: Denys Vlasenko <dvlasenk@xxxxxxxxxx>
> Cc: H. Peter Anvin <hpa@xxxxxxxxx>
> Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> Cc: Michal Hocko <mhocko@xxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Cc: linux-arch@xxxxxxxxxxxxxxx
> Cc: linux-mm@xxxxxxxxx
> Link: http://lkml.kernel.org/r/20170317185515.8636-7-kirill.shutemov@xxxxxxxxxxxxxxx
> Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>

Following Ingo's revert of commit 2947ba054a4d "x86/mm/gup: Switch GUP
to the generic get_user_page_fast() implementation", I gave
tip.git/master a try to see if it resolved the original failing
signature I was seeing with the "device-dax" regression test [1] on
next/master. It turns out that there are two failing signatures and I
need to use the revert during the bisect to find this other
regression. This new bisect points to commit f2a6a7050109 "x86:
Convert the rest of the code to support p4d_t" as the culprit.

[ 43.194330] BUG: unable to handle kernel paging request at ffff880300000000
[ 43.196312] IP: memchr_inv+0x60/0x110
[ 43.197352] PGD 317d067
[ 43.197354] P4D 317d067
[ 43.198110] PUD 3180067
[ 43.198872] PMD 33f102067
[ 43.199639] PTE 8000000300000060
[ 43.200448]
[ 43.201878] Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
[ 43.203122] Dumping ftrace buffer:
[ 43.204090] (ftrace buffer empty)
[ 43.205067] Modules linked in: ip6t_rpfilter ip6t_REJECT
nf_reject_ipv6 xt_conntrack ebtable_nat ebtable_broute bridge stp llc
ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6 ip
6table_mangle ip6table_raw ip6table_security iptable_nat
nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack
iptable_mangle iptable_raw iptable_security ebtable_filter ebtables
ip6table_filter ip6_tables crct10dif_pclmul crc32_pclmul crc32c_intel
ghash_clmulni_intel nd_pmem(O) dax_pmem(O) nd_btt(O) dax(O) tpm_tis
serio_raw nd_e820(O) tpm_tis_core tpm nfit(O) libnvd
imm(O) nfit_test_iomap(O) nfsd nfs_acl
[ 43.214795] CPU: 28 PID: 1894 Comm: lt-device-dax Tainted: G
O 4.11.0-rc2+ #73
[ 43.217240] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS 1.9.3-1.fc25 04/01/2014
[ 43.219727] task: ffff8803250e9880 task.stack: ffffc90003160000
[ 43.221273] RIP: 0010:memchr_inv+0x60/0x110
[ 43.222517] RSP: 0018:ffffc90003163aa8 EFLAGS: 00010a83
[ 43.223902] RAX: fdfdfdfdfdfdfdfd RBX: 00003fffc0000000 RCX: 0000000008000000
[ 43.225598] RDX: 0000000040000000 RSI: 00000000000000fd RDI: ffff880300000000
[ 43.227271] RBP: ffffc90003163aa8 R08: 00000000000000fd R09: 0101010101010101
[ 43.228952] R10: 0000000000000000 R11: 0000000000000000 R12: 00003ffffffff000
[ 43.230640] R13: ffffea0008000000 R14: ffff88033e7e7000 R15: ffffea0008000000
[ 43.232342] FS: 00007f3f72935380(0000) GS:ffff880336300000(0000)
knlGS:0000000000000000
[ 43.234601] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 43.235964] CR2: ffff880300000000 CR3: 0000000323c7c000 CR4: 00000000000406e0
[ 43.237536] Call Trace:
[ 43.238409] remove_pagetable+0x214/0x783
[ 43.239519] ? sparse_remove_one_section+0xeb/0x180
[ 43.240749] vmemmap_free+0x10/0x20
[ 43.241776] sparse_remove_one_section+0xff/0x180
[ 43.242979] __remove_pages+0x33f/0x590
[ 43.244054] ? arch_remove_memory+0x80/0xe0
[ 43.245182] arch_remove_memory+0x80/0xe0
[ 43.246296] devm_memremap_pages_release+0x1af/0x3a0
[ 43.247539] ? devm_memremap_pages_release+0x5/0x3a0
[ 43.248784] release_nodes+0x16d/0x2b0
[ 43.249849] devres_release_all+0x3c/0x60
[ 43.250953] device_release_driver_internal+0x16d/0x210
[ 43.252243] device_release_driver+0x12/0x20
[ 43.253386] unbind_store+0x10f/0x160
[ 43.254435] drv_attr_store+0x25/0x30

[1]: https://github.com/pmem/ndctl/blob/pending/test/device-dax.c