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@linux.intel.com> Acked-by: Thomas Gleixner <tglx@linutronix.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Andy Lutomirski <luto@kernel.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Denys Vlasenko <dvlasenk@redhat.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: linux-arch@vger.kernel.org Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/20170317185515.8636-7-kirill.shutemov@linux.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
此提交包含在:
@@ -241,21 +241,21 @@ TRACE_EVENT(xen_mmu_set_pud,
|
||||
(int)sizeof(pudval_t) * 2, (unsigned long long)__entry->pudval)
|
||||
);
|
||||
|
||||
TRACE_EVENT(xen_mmu_set_pgd,
|
||||
TP_PROTO(pgd_t *pgdp, pgd_t *user_pgdp, pgd_t pgdval),
|
||||
TP_ARGS(pgdp, user_pgdp, pgdval),
|
||||
TRACE_EVENT(xen_mmu_set_p4d,
|
||||
TP_PROTO(p4d_t *p4dp, p4d_t *user_p4dp, p4d_t p4dval),
|
||||
TP_ARGS(p4dp, user_p4dp, p4dval),
|
||||
TP_STRUCT__entry(
|
||||
__field(pgd_t *, pgdp)
|
||||
__field(pgd_t *, user_pgdp)
|
||||
__field(pgdval_t, pgdval)
|
||||
__field(p4d_t *, p4dp)
|
||||
__field(p4d_t *, user_p4dp)
|
||||
__field(p4dval_t, p4dval)
|
||||
),
|
||||
TP_fast_assign(__entry->pgdp = pgdp;
|
||||
__entry->user_pgdp = user_pgdp;
|
||||
__entry->pgdval = pgdval.pgd),
|
||||
TP_printk("pgdp %p user_pgdp %p pgdval %0*llx (raw %0*llx)",
|
||||
__entry->pgdp, __entry->user_pgdp,
|
||||
(int)sizeof(pgdval_t) * 2, (unsigned long long)pgd_val(native_make_pgd(__entry->pgdval)),
|
||||
(int)sizeof(pgdval_t) * 2, (unsigned long long)__entry->pgdval)
|
||||
TP_fast_assign(__entry->p4dp = p4dp;
|
||||
__entry->user_p4dp = user_p4dp;
|
||||
__entry->p4dval = p4d_val(p4dval)),
|
||||
TP_printk("p4dp %p user_p4dp %p p4dval %0*llx (raw %0*llx)",
|
||||
__entry->p4dp, __entry->user_p4dp,
|
||||
(int)sizeof(p4dval_t) * 2, (unsigned long long)pgd_val(native_make_pgd(__entry->p4dval)),
|
||||
(int)sizeof(p4dval_t) * 2, (unsigned long long)__entry->p4dval)
|
||||
);
|
||||
|
||||
TRACE_EVENT(xen_mmu_pud_clear,
|
||||
|
新增問題並參考
封鎖使用者