aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86')
-rw-r--r--arch/x86/xen/mmu.c30
1 files changed, 1 insertions, 29 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index a8f023271819..eb31ed291b93 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -282,35 +282,7 @@ void xen_set_pmd(pmd_t *ptr, pmd_t val)
282 */ 282 */
283void set_pte_mfn(unsigned long vaddr, unsigned long mfn, pgprot_t flags) 283void set_pte_mfn(unsigned long vaddr, unsigned long mfn, pgprot_t flags)
284{ 284{
285 pgd_t *pgd; 285 set_pte_vaddr(vaddr, mfn_pte(mfn, flags));
286 pud_t *pud;
287 pmd_t *pmd;
288 pte_t *pte;
289
290 pgd = swapper_pg_dir + pgd_index(vaddr);
291 if (pgd_none(*pgd)) {
292 BUG();
293 return;
294 }
295 pud = pud_offset(pgd, vaddr);
296 if (pud_none(*pud)) {
297 BUG();
298 return;
299 }
300 pmd = pmd_offset(pud, vaddr);
301 if (pmd_none(*pmd)) {
302 BUG();
303 return;
304 }
305 pte = pte_offset_kernel(pmd, vaddr);
306 /* <mfn,flags> stored as-is, to permit clearing entries */
307 xen_set_pte(pte, mfn_pte(mfn, flags));
308
309 /*
310 * It's enough to flush this one mapping.
311 * (PGE mappings get flushed as well)
312 */
313 __flush_tlb_one(vaddr);
314} 286}
315 287
316void xen_set_pte_at(struct mm_struct *mm, unsigned long addr, 288void xen_set_pte_at(struct mm_struct *mm, unsigned long addr,