mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-21 10:05:00 +08:00
74e081797b
CONFIG_DEBUG_RODATA chops the large pages spanning boundaries of kernel text/rodata/data to small 4KB pages as they are mapped with different attributes (text as RO, RODATA as RO and NX etc). On x86_64, preserve the large page mappings for kernel text/rodata/data boundaries when CONFIG_DEBUG_RODATA is enabled. This is done by allowing the RODATA section to be hugepage aligned and having same RWX attributes for the 2MB page boundaries Extra Memory pages padding the sections will be freed during the end of the boot and the kernel identity mappings will have different RWX permissions compared to the kernel text mappings. Kernel identity mappings to these physical pages will be mapped with smaller pages but large page mappings are still retained for kernel text,rodata,data mappings. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> LKML-Reference: <20091014220254.190119924@sbs-t61.sc.intel.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
15 lines
356 B
C
15 lines
356 B
C
#ifndef _ASM_X86_SECTIONS_H
|
|
#define _ASM_X86_SECTIONS_H
|
|
|
|
#include <asm-generic/sections.h>
|
|
#include <asm/uaccess.h>
|
|
|
|
extern char __brk_base[], __brk_limit[];
|
|
extern struct exception_table_entry __stop___ex_table[];
|
|
|
|
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
|
|
extern char __end_rodata_hpage_align[];
|
|
#endif
|
|
|
|
#endif /* _ASM_X86_SECTIONS_H */
|