Messages in this thread | | | Date | Mon, 22 Nov 2010 11:29:04 +0100 | From | castet.matthieu@free ... | Subject | Re: -tip tree resume fail, bisect to 5bd5a45(x86: Add NX protection for kernel data) |
| |
Hi Andi,
Quoting Andi Kleen <andi@firstfloor.org>:
> On Mon, Nov 22, 2010 at 09:07:10AM +0100, Ingo Molnar wrote: > > > ---[ High Kernel Mapping ]--- > > > .... > > > 0xffffffff81a00000-0xffffffff81c00000 2M ro PSE GLB > NX pmd > > > 0xffffffff81c00000-0xffffffff81d91000 1604K ro GLB > NX pte > > > 0xffffffff81d91000-0xffffffff81e00000 444K ro GLB > NX pte > > > 0xffffffff81e00000-0xffffffff82000000 2M RW PSE GLB > NX pmd > > > 0xffffffff82000000-0xffffffff8200c000 48K RW GLB > NX pte > > > 0xffffffff8200c000-0xffffffff82100000 976K RW GLB > NX pte > > > 0xffffffff82100000-0xffffffff82200000 1M RW GLB > NX pte > > > ..... > > > > > > The only difference is 0xffffffff81e00000(end) to > 0xffffffff82200000(kernel_end) is set to NX. > > > > > > I guess this range code is used by resume wakeup code. So setting it to > NX causes problem. > > > > > > Any idea? > > > > Yeah, the resume area is a trampoline, it needs to be executable. > > Also it looks like most of the kernel linker supplied data is now not > 2MB mapped anymore? That will surely cost TLB entries. > Any idea where it comes from ?
The mapping is still not 2MB mapped without the commit.
The patch only add
+#if defined(CONFIG_DEBUG_RODATA) + /* .text should occupy whole number of pages */ + . = ALIGN(PAGE_SIZE); +#endif X64_ALIGN_DEBUG_RODATA_BEGIN RO_DATA(PAGE_SIZE) X64_ALIGN_DEBUG_RODATA_END
But X64_ALIGN_DEBUG_RODATA_BEGIN is aligned on 2M, so it shouldn't change nothing on x64 ?
Matthieu
| |