summaryrefslogtreecommitdiff
blob: d4c059c4b10f1ba171cec2afe536a62f7c05e079 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# HG changeset patch
# User Keir Fraser <keir@xensource.com>
# Date 1192114936 -3600
# Node ID e797297402885cc19e0799c7bcaf3e1acb427523
# Parent  48a6d8bc31b8717c4218fc5e3c5bc9d848703db4
i386: Fix xen_l1_entry_update() for highptes.
Signed-off-by: Keir Fraser <keir@xensource.com>

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);
 }