From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com> Cc: Andi Kleen <ak@linux.intel.com>, Dave Hansen <dave.hansen@intel.com>, Andy Lutomirski <luto@amacapital.net>, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Subject: [PATCH 0/8] x86: 5-level paging enabling for v4.12, Part 4 Date: Thu, 6 Apr 2017 17:00:58 +0300 [thread overview] Message-ID: <20170406140106.78087-1-kirill.shutemov@linux.intel.com> (raw) Here's the fourth and the last bunch of of patches that brings initial 5-level paging enabling. Please review and consider applying. As Ingo requested I've tried to rewrite assembly parts of boot process into C before bringing 5-level paging support. The only part where I succeed is startup_64 in arch/x86/kernel/head_64.S. Most of the logic is now in C. I failed to rewrite startup_32 in arch/x86/boot/compressed/head_64.S in C. The code I need to modify in still in 32-bit mode, but if I would move it to C it will be compiled as 64-bit. I've tried to move it into separate translation unit and compile it with -m32, but then linking phase fails due to type mismatch of object files. I also have trouble with rewriting secondary_startup_64. Stack breaks as soon as we switch to new page tables when onlining secondary CPUs. I don't know how to get around this. I hope it's not show-stopper. If you know how to get around these issues, let me know. Kirill A. Shutemov (8): x86/boot/64: Rewrite startup_64 in C x86/boot/64: Rename init_level4_pgt and early_level4_pgt x86/boot/64: Add support of additional page table level during early boot x86/mm: Add sync_global_pgds() for configuration with 5-level paging x86/mm: Make kernel_physical_mapping_init() support 5-level paging x86/mm: Add support for 5-level paging for KASLR x86: Enable 5-level paging support x86/mm: Allow to have userspace mappings above 47-bits arch/x86/Kconfig | 5 + arch/x86/boot/compressed/head_64.S | 23 ++++- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/mpx.h | 9 ++ arch/x86/include/asm/pgtable.h | 2 +- arch/x86/include/asm/pgtable_64.h | 6 +- arch/x86/include/asm/processor.h | 9 +- arch/x86/include/uapi/asm/processor-flags.h | 2 + arch/x86/kernel/espfix_64.c | 2 +- arch/x86/kernel/head64.c | 137 +++++++++++++++++++++++++--- arch/x86/kernel/head_64.S | 132 ++++++--------------------- arch/x86/kernel/machine_kexec_64.c | 2 +- arch/x86/kernel/sys_x86_64.c | 28 +++++- arch/x86/mm/dump_pagetables.c | 2 +- arch/x86/mm/hugetlbpage.c | 27 +++++- arch/x86/mm/init_64.c | 104 +++++++++++++++++++-- arch/x86/mm/kasan_init_64.c | 12 +-- arch/x86/mm/kaslr.c | 81 ++++++++++++---- arch/x86/mm/mmap.c | 2 +- arch/x86/mm/mpx.c | 33 ++++++- arch/x86/realmode/init.c | 2 +- arch/x86/xen/Kconfig | 1 + arch/x86/xen/mmu.c | 18 ++-- arch/x86/xen/xen-pvh.S | 2 +- 24 files changed, 463 insertions(+), 180 deletions(-) -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> To: Linus Torvalds <torvalds@linux-foundation.org>, Andrew Morton <akpm@linux-foundation.org>, x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com> Cc: Andi Kleen <ak@linux.intel.com>, Dave Hansen <dave.hansen@intel.com>, Andy Lutomirski <luto@amacapital.net>, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Subject: [PATCH 0/8] x86: 5-level paging enabling for v4.12, Part 4 Date: Thu, 6 Apr 2017 17:00:58 +0300 [thread overview] Message-ID: <20170406140106.78087-1-kirill.shutemov@linux.intel.com> (raw) Here's the fourth and the last bunch of of patches that brings initial 5-level paging enabling. Please review and consider applying. As Ingo requested I've tried to rewrite assembly parts of boot process into C before bringing 5-level paging support. The only part where I succeed is startup_64 in arch/x86/kernel/head_64.S. Most of the logic is now in C. I failed to rewrite startup_32 in arch/x86/boot/compressed/head_64.S in C. The code I need to modify in still in 32-bit mode, but if I would move it to C it will be compiled as 64-bit. I've tried to move it into separate translation unit and compile it with -m32, but then linking phase fails due to type mismatch of object files. I also have trouble with rewriting secondary_startup_64. Stack breaks as soon as we switch to new page tables when onlining secondary CPUs. I don't know how to get around this. I hope it's not show-stopper. If you know how to get around these issues, let me know. Kirill A. Shutemov (8): x86/boot/64: Rewrite startup_64 in C x86/boot/64: Rename init_level4_pgt and early_level4_pgt x86/boot/64: Add support of additional page table level during early boot x86/mm: Add sync_global_pgds() for configuration with 5-level paging x86/mm: Make kernel_physical_mapping_init() support 5-level paging x86/mm: Add support for 5-level paging for KASLR x86: Enable 5-level paging support x86/mm: Allow to have userspace mappings above 47-bits arch/x86/Kconfig | 5 + arch/x86/boot/compressed/head_64.S | 23 ++++- arch/x86/include/asm/elf.h | 2 +- arch/x86/include/asm/mpx.h | 9 ++ arch/x86/include/asm/pgtable.h | 2 +- arch/x86/include/asm/pgtable_64.h | 6 +- arch/x86/include/asm/processor.h | 9 +- arch/x86/include/uapi/asm/processor-flags.h | 2 + arch/x86/kernel/espfix_64.c | 2 +- arch/x86/kernel/head64.c | 137 +++++++++++++++++++++++++--- arch/x86/kernel/head_64.S | 132 ++++++--------------------- arch/x86/kernel/machine_kexec_64.c | 2 +- arch/x86/kernel/sys_x86_64.c | 28 +++++- arch/x86/mm/dump_pagetables.c | 2 +- arch/x86/mm/hugetlbpage.c | 27 +++++- arch/x86/mm/init_64.c | 104 +++++++++++++++++++-- arch/x86/mm/kasan_init_64.c | 12 +-- arch/x86/mm/kaslr.c | 81 ++++++++++++---- arch/x86/mm/mmap.c | 2 +- arch/x86/mm/mpx.c | 33 ++++++- arch/x86/realmode/init.c | 2 +- arch/x86/xen/Kconfig | 1 + arch/x86/xen/mmu.c | 18 ++-- arch/x86/xen/xen-pvh.S | 2 +- 24 files changed, 463 insertions(+), 180 deletions(-) -- 2.11.0 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2017-04-06 14:01 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-04-06 14:00 Kirill A. Shutemov [this message] 2017-04-06 14:00 ` [PATCH 0/8] x86: 5-level paging enabling for v4.12, Part 4 Kirill A. Shutemov 2017-04-06 14:00 ` [PATCH 1/8] x86/boot/64: Rewrite startup_64 in C Kirill A. Shutemov 2017-04-06 14:00 ` Kirill A. Shutemov 2017-04-11 7:58 ` [tip:x86/mm] x86/boot/64: Rewrite startup_64() " tip-bot for Kirill A. Shutemov 2017-04-11 8:54 ` Ingo Molnar 2017-04-11 12:29 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 2/8] x86/boot/64: Rename init_level4_pgt and early_level4_pgt Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-11 7:59 ` [tip:x86/mm] x86/boot/64: Rename init_level4_pgt() and early_level4_pgt[] tip-bot for Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 3/8] x86/boot/64: Add support of additional page table level during early boot Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-11 7:02 ` Ingo Molnar 2017-04-11 7:02 ` Ingo Molnar 2017-04-11 10:51 ` Kirill A. Shutemov 2017-04-11 10:51 ` Kirill A. Shutemov 2017-04-11 11:28 ` Ingo Molnar 2017-04-11 11:28 ` Ingo Molnar 2017-04-11 11:46 ` Kirill A. Shutemov 2017-04-11 11:46 ` Kirill A. Shutemov 2017-04-11 14:09 ` Andi Kleen 2017-04-11 14:09 ` Andi Kleen 2017-04-12 10:18 ` Kirill A. Shutemov 2017-04-12 10:18 ` Kirill A. Shutemov 2017-04-17 10:32 ` Ingo Molnar 2017-04-17 10:32 ` Ingo Molnar 2017-04-18 8:59 ` Kirill A. Shutemov 2017-04-18 8:59 ` Kirill A. Shutemov 2017-04-18 10:15 ` Kirill A. Shutemov 2017-04-18 10:15 ` Kirill A. Shutemov 2017-04-18 11:10 ` Kirill A. Shutemov 2017-04-18 11:10 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 4/8] x86/mm: Add sync_global_pgds() for configuration with 5-level paging Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 5/8] x86/mm: Make kernel_physical_mapping_init() support " Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 6/8] x86/mm: Add support for 5-level paging for KASLR Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:01 ` [PATCH 7/8] x86: Enable 5-level paging support Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 14:52 ` Juergen Gross 2017-04-06 14:52 ` Juergen Gross 2017-04-06 15:24 ` Kirill A. Shutemov 2017-04-06 15:24 ` Kirill A. Shutemov 2017-04-06 15:56 ` Juergen Gross 2017-04-06 15:56 ` Juergen Gross 2017-04-06 14:01 ` [PATCH 8/8] x86/mm: Allow to have userspace mappings above 47-bits Kirill A. Shutemov 2017-04-06 14:01 ` Kirill A. Shutemov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 18:43 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 19:15 ` Dmitry Safonov 2017-04-06 23:21 ` Kirill A. Shutemov 2017-04-06 23:21 ` Kirill A. Shutemov 2017-04-06 23:24 ` [PATCHv2 " Kirill A. Shutemov 2017-04-06 23:24 ` Kirill A. Shutemov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 11:32 ` Dmitry Safonov 2017-04-07 15:44 ` [PATCHv3 " Kirill A. Shutemov 2017-04-07 15:44 ` Kirill A. Shutemov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-07 16:37 ` Dmitry Safonov 2017-04-13 11:30 ` [PATCHv4 0/9] x86: 5-level paging enabling for v4.12, Part 4 Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 1/9] x86/asm: Fix comment in return_from_SYSCALL_64 Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 2/9] x86/boot/64: Rewrite startup_64 in C Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 3/9] x86/boot/64: Rename init_level4_pgt and early_level4_pgt Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 4/9] x86/boot/64: Add support of additional page table level during early boot Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 5/9] x86/mm: Add sync_global_pgds() for configuration with 5-level paging Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 6/9] x86/mm: Make kernel_physical_mapping_init() support " Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 7/9] x86/mm: Add support for 5-level paging for KASLR Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 8/9] x86: Enable 5-level paging support Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-13 11:30 ` [PATCHv4 9/9] x86/mm: Allow to have userspace mappings above 47-bits Kirill A. Shutemov 2017-04-13 11:30 ` Kirill A. Shutemov 2017-04-07 10:06 ` [PATCH 8/8] " Dmitry Safonov 2017-04-07 10:06 ` Dmitry Safonov 2017-04-07 10:06 ` Dmitry Safonov 2017-04-07 13:35 ` Anshuman Khandual 2017-04-07 13:35 ` Anshuman Khandual 2017-04-07 15:59 ` Kirill A. Shutemov 2017-04-07 15:59 ` Kirill A. Shutemov 2017-04-07 16:09 ` hpa 2017-04-07 16:09 ` hpa 2017-04-07 16:20 ` Kirill A. Shutemov 2017-04-07 16:20 ` Kirill A. Shutemov 2017-04-12 10:41 ` Michael Ellerman 2017-04-12 10:41 ` Michael Ellerman 2017-04-12 11:11 ` Kirill A. Shutemov 2017-04-12 11:11 ` Kirill A. Shutemov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170406140106.78087-1-kirill.shutemov@linux.intel.com \ --to=kirill.shutemov@linux.intel.com \ --cc=ak@linux.intel.com \ --cc=akpm@linux-foundation.org \ --cc=dave.hansen@intel.com \ --cc=hpa@zytor.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=luto@amacapital.net \ --cc=mingo@redhat.com \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.