# 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 (Tweaked for 2.6.20) 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_ma(val); BUG_ON(HYPERVISOR_mmu_update(&u, 1, NULL, DOMID_SELF) < 0); }