diff options
author | cl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk> | 2004-07-19 10:54:16 +0000 |
---|---|---|
committer | cl349@freefall.cl.cam.ac.uk <cl349@freefall.cl.cam.ac.uk> | 2004-07-19 10:54:16 +0000 |
commit | 0ac24a13aac1c2d772988205d032a2e3c5448bbb (patch) | |
tree | 38d05d07a676b9cfe1a5287c1f456659e66e9780 /linux-2.4.26-xen-sparse/mm/memory.c | |
parent | aa806c54e500df011ee9e2b343a9c734bae2c46f (diff) | |
download | xen-0ac24a13aac1c2d772988205d032a2e3c5448bbb.tar.gz xen-0ac24a13aac1c2d772988205d032a2e3c5448bbb.tar.bz2 xen-0ac24a13aac1c2d772988205d032a2e3c5448bbb.zip |
bitkeeper revision 1.1110 (40fba858q1HuMzljocVdGkLuG4dxfw)
undo linux24 bits of writable pagetables
Diffstat (limited to 'linux-2.4.26-xen-sparse/mm/memory.c')
-rw-r--r-- | linux-2.4.26-xen-sparse/mm/memory.c | 29 |
1 files changed, 0 insertions, 29 deletions
diff --git a/linux-2.4.26-xen-sparse/mm/memory.c b/linux-2.4.26-xen-sparse/mm/memory.c index a60d07042f..6bdb08afe7 100644 --- a/linux-2.4.26-xen-sparse/mm/memory.c +++ b/linux-2.4.26-xen-sparse/mm/memory.c @@ -163,18 +163,6 @@ void clear_page_tables(struct mm_struct *mm, unsigned long first, int nr) #define PTE_TABLE_MASK ((PTRS_PER_PTE-1) * sizeof(pte_t)) #define PMD_TABLE_MASK ((PTRS_PER_PMD-1) * sizeof(pmd_t)) -#undef set_pte -#define set_pte(pteptr, pteval) do { \ - (*(pteptr) = pteval); \ - /* printk("set_pte %p -> %08lx\n", pteptr, pteval); */ \ -} while (0) -//void queue_l1_entry_update_queued(pte_t *ptr, unsigned long val); -//#define set_pte(pteptr, pteval) queue_l1_entry_update_queued(pteptr, (pteval).pte_low) -// #define ptep_get_and_clear(xp) __pte(xchg(&(xp)->pte_low, 0)) -//#undef pte_unmap -//#define pte_unmap(pte) xen_flush_page_update_queue() -#undef pmd_bad -#define pmd_bad(x) (((x).pmd & (~PAGE_MASK & ~_PAGE_USER & ~_PAGE_PRESENT & ~0x800)) != (_KERNPG_TABLE & ~_PAGE_PRESENT)) /* * copy one vm_area from one task to the other. Assumes the page tables * already present in the new task to be cleared in the whole range @@ -196,8 +184,6 @@ int copy_page_range(struct mm_struct *dst, struct mm_struct *src, src_pgd = pgd_offset(src, address)-1; dst_pgd = pgd_offset(dst, address)-1; - /* printk("copy_page_range src %p dst %p src_pgd %p dst_pgd %p %08lx-%08lx\n", */ -/* src, dst, src_pgd, dst_pgd, address, end); */ for (;;) { pmd_t * src_pmd, * dst_pmd; @@ -219,7 +205,6 @@ skip_copy_pmd_range: address = (address + PGDIR_SIZE) & PGDIR_MASK; src_pmd = pmd_offset(src_pgd, address); dst_pmd = pmd_alloc(dst, dst_pgd, address); - /* printk("src_pmd %p dst_pmd %p\n", src_pmd, dst_pmd); */ if (!dst_pmd) goto nomem; @@ -241,8 +226,6 @@ skip_copy_pte_range: address = (address + PMD_SIZE) & PMD_MASK; src_pte = pte_offset(src_pmd, address); dst_pte = pte_alloc(dst, dst_pmd, address); - /* printk("src_pte %p(%p,%08lx,%08lx, %08lx) dst_pte %p\n", */ -/* src_pte, src_pmd, *src_pmd, pmd_page(*src_pmd), address, dst_pte); */ if (!dst_pte) goto nomem; @@ -256,8 +239,6 @@ skip_copy_pte_range: address = (address + PMD_SIZE) & PMD_MASK; if (pte_none(pte)) goto cont_copy_pte_range_noset; if (!pte_present(pte)) { - printk("swap_dup call %p:%08lx\n", - src_pte, pte.pte_low); swap_duplicate(pte_to_swp_entry(pte)); goto cont_copy_pte_range; } @@ -268,17 +249,10 @@ skip_copy_pte_range: address = (address + PMD_SIZE) & PMD_MASK; /* If it's a COW mapping, write protect it both in the parent and the child */ if (cow && pte_write(pte)) { - /* printk("ptep_set_wrprotect %p was %08lx\n", src_pte, *src_pte); */ -#if 0 /* XEN modification: modified ordering here to avoid RaW hazard. */ pte = *src_pte; pte = pte_wrprotect(pte); ptep_set_wrprotect(src_pte); -#else - clear_bit(_PAGE_BIT_RW, src_pte); //ptep_set_wrprotect(src_pte); - pte = *src_pte; - /* printk("ptep_set_wrprotect %p now %08lx\n", src_pte, *src_pte); */ -#endif } /* If it's a shared mapping, mark it clean in the child */ @@ -304,13 +278,10 @@ cont_copy_pmd_range: src_pmd++; out_unlock: spin_unlock(&src->page_table_lock); out: - /* printk("out\n"); */ return 0; nomem: return -ENOMEM; } -#undef set_pte -#define set_pte(pteptr, pteval) queue_l1_entry_update(pteptr, (pteval).pte_low) /* * Return indicates whether a page was freed so caller can adjust rss |