From 59bbc6eaf240bc9d0d42136171134915be26df9e Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Mon, 15 Oct 2007 21:05:53 +0000 Subject: Add the real fix for CONFIG_HIGHPTE, remove the disable patch svn path=/patches/; revision=54 --- trunk/2.6.18/00000_README | 8 ++++---- ...i386-fix-xen_l1_entry_update-for-highptes.patch | 24 ++++++++++++++++++++++ trunk/2.6.18/50007_disable-highpte.patch | 13 ------------ 3 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 trunk/2.6.18/10002_i386-fix-xen_l1_entry_update-for-highptes.patch delete mode 100644 trunk/2.6.18/50007_disable-highpte.patch diff --git a/trunk/2.6.18/00000_README b/trunk/2.6.18/00000_README index 2f9cf30..756a4ca 100644 --- a/trunk/2.6.18/00000_README +++ b/trunk/2.6.18/00000_README @@ -22,6 +22,10 @@ Patches 10001_xen-3.1.1.patch Upstream 3.1.1 patch +10002_i386-fix-xen_l1_entry_update-for-highptes.patch + Fix for kernels compiled with CONFIG_HIGHPTE. + Pulled from linux-2.6.18-xen.hg, changeset e79729740288. + 30001_nfnetlink_log-null-deref.patch [SECURITY] Fix remotely exploitable NULL pointer dereference in nfulnl_recv_config() @@ -211,7 +215,3 @@ Patches 50002_always-enable-xen-genapic.patch Compile fix for non-SMP (UP) kernels. Since UP support is broken in upstream Xen I'm not sure if I trust it or not. :-P - -50007_disable-highpte.patch - CONFIG_HIGHPTE can cause serious problems so lets save people's - sanity, avoid killing kittens, and end all war by disabling it. diff --git a/trunk/2.6.18/10002_i386-fix-xen_l1_entry_update-for-highptes.patch b/trunk/2.6.18/10002_i386-fix-xen_l1_entry_update-for-highptes.patch new file mode 100644 index 0000000..d4c059c --- /dev/null +++ b/trunk/2.6.18/10002_i386-fix-xen_l1_entry_update-for-highptes.patch @@ -0,0 +1,24 @@ +# HG changeset patch +# User Keir Fraser +# Date 1192114936 -3600 +# Node ID e797297402885cc19e0799c7bcaf3e1acb427523 +# Parent 48a6d8bc31b8717c4218fc5e3c5bc9d848703db4 +i386: Fix xen_l1_entry_update() for highptes. +Signed-off-by: Keir Fraser + +diff -r 48a6d8bc31b8 -r e79729740288 arch/i386/mm/hypervisor.c +--- a/arch/i386/mm/hypervisor.c Wed Oct 10 11:32:15 2007 +0100 ++++ b/arch/i386/mm/hypervisor.c Thu Oct 11 16:02:16 2007 +0100 +@@ -47,7 +47,12 @@ void xen_l1_entry_update(pte_t *ptr, pte + void xen_l1_entry_update(pte_t *ptr, pte_t val) + { + mmu_update_t u; ++#ifdef CONFIG_HIGHPTE ++ u.ptr = ((unsigned long)ptr >= (unsigned long)high_memory) ? ++ arbitrary_virt_to_machine(ptr) : virt_to_machine(ptr); ++#else + u.ptr = virt_to_machine(ptr); ++#endif + u.val = __pte_val(val); + BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); + } diff --git a/trunk/2.6.18/50007_disable-highpte.patch b/trunk/2.6.18/50007_disable-highpte.patch deleted file mode 100644 index 3d829fc..0000000 --- a/trunk/2.6.18/50007_disable-highpte.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: linux-2.6.18/arch/i386/Kconfig -=================================================================== ---- linux-2.6.18.orig/arch/i386/Kconfig -+++ linux-2.6.18/arch/i386/Kconfig -@@ -624,7 +624,7 @@ config HAVE_ARCH_EARLY_PFN_TO_NID - - config HIGHPTE - bool "Allocate 3rd-level pagetables from highmem" -- depends on HIGHMEM4G || HIGHMEM64G -+ depends on ( HIGHMEM4G || HIGHMEM64G ) && !X86_XEN - help - The VM uses one page table entry for each page of physical memory. - For systems with a lot of RAM, this can be wasteful of precious -- cgit v1.2.3-65-gdbad