Mailing List Archive

[xen-unstable] linux/x86-64: force _PAGE_NX on the 1:1 mapping (matching native)
# HG changeset patch
# User kfraser@localhost.localdomain
# Date 1180015951 -3600
# Node ID 1fde9ebb8019c0f7079ffbc5ba800abcc9b1f882
# Parent 965bf43c9f1139135c2956cf90f916c335fd8e77
linux/x86-64: force _PAGE_NX on the 1:1 mapping (matching native)
Signed-off-by: Jan Beulich <jbeulich@novell.com>
---
linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c | 17 +++++++----------
1 files changed, 7 insertions(+), 10 deletions(-)

diff -r 965bf43c9f11 -r 1fde9ebb8019 linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c
--- a/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c Thu May 24 14:07:40 2007 +0100
+++ b/linux-2.6-xen-sparse/arch/x86_64/mm/init-xen.c Thu May 24 15:12:31 2007 +0100
@@ -479,18 +479,15 @@ phys_pmd_init(pmd_t *pmd, unsigned long
pte = alloc_static_page(&pte_phys);
pte_save = pte;
for (k = 0; k < PTRS_PER_PTE; pte++, k++, address += PTE_SIZE) {
+ unsigned long pteval = address | _PAGE_NX | _KERNPG_TABLE;
+
if ((address >= end) ||
((address >> PAGE_SHIFT) >=
- xen_start_info->nr_pages)) {
- __set_pte(pte, __pte(0));
- continue;
- }
- if (make_readonly(address)) {
- __set_pte(pte,
- __pte(address | (_KERNPG_TABLE & ~_PAGE_RW)));
- continue;
- }
- __set_pte(pte, __pte(address | _KERNPG_TABLE));
+ xen_start_info->nr_pages))
+ pteval = 0;
+ else if (make_readonly(address))
+ pteval &= ~_PAGE_RW;
+ __set_pte(pte, __pte(pteval & __supported_pte_mask));
}
pte = pte_save;
early_make_page_readonly(pte, XENFEAT_writable_page_tables);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@lists.xensource.com
http://lists.xensource.com/xen-changelog