WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Get rid of more uses of batched mmu interface.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Get rid of more uses of batched mmu interface.
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Tue, 29 Mar 2005 10:24:15 +0000
Delivery-date: Tue, 29 Mar 2005 11:03:50 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1384.1.1, 2005/03/29 11:24:15+01:00, kaf24@xxxxxxxxxxxxxxxxxxxx

        Get rid of more uses of batched mmu interface.
        Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>



 linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c                   |    1 
 linux-2.4.29-xen-sparse/include/asm-xen/desc.h                    |   11 ----
 linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h                 |   12 +----
 linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h                 |    8 +--
 linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c                   |    7 +-
 linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c                |   24 
+++-------
 linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h |    2 
 7 files changed, 22 insertions(+), 43 deletions(-)


diff -Nru a/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c 
b/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c
--- a/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c   2005-03-29 06:03:45 
-05:00
+++ b/linux-2.4.29-xen-sparse/arch/xen/kernel/traps.c   2005-03-29 06:03:45 
-05:00
@@ -623,7 +623,6 @@
     set_call_gate(&default_ldt[0],lcall7);
     set_call_gate(&default_ldt[4],lcall27);
     __make_page_readonly(&default_ldt[0]);
-    flush_page_update_queue();
 
     cpu_init();
 }
diff -Nru a/linux-2.4.29-xen-sparse/include/asm-xen/desc.h 
b/linux-2.4.29-xen-sparse/include/asm-xen/desc.h
--- a/linux-2.4.29-xen-sparse/include/asm-xen/desc.h    2005-03-29 06:03:45 
-05:00
+++ b/linux-2.4.29-xen-sparse/include/asm-xen/desc.h    2005-03-29 06:03:45 
-05:00
@@ -16,15 +16,6 @@
 
 extern struct desc_struct default_ldt[];
 
-static inline void clear_LDT(void)
-{
-    /*
-     * NB. We load the default_ldt for lcall7/27 handling on demand, as
-     * it slows down context switching. Noone uses it anyway.
-     */
-    queue_set_ldt(0, 0);
-}
-
 static inline void load_LDT(mm_context_t *pc)
 {
     void *segments = pc->ldt;
@@ -33,7 +24,7 @@
     if ( count == 0 )
         segments = NULL;
     
-    queue_set_ldt((unsigned long)segments, count);               
+    xen_set_ldt((unsigned long)segments, count);               
 }
 
 #endif /* __ASSEMBLY__ */
diff -Nru a/linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h 
b/linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h
--- a/linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h 2005-03-29 06:03:45 
-05:00
+++ b/linux-2.4.29-xen-sparse/include/asm-xen/pgalloc.h 2005-03-29 06:03:45 
-05:00
@@ -79,8 +79,7 @@
                        init_mm.pgd + USER_PTRS_PER_PGD,
                        (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t));
                __make_page_readonly(pgd);
-               queue_pgd_pin(__pa(pgd));
-               flush_page_update_queue();
+               xen_pgd_pin(__pa(pgd));
        }
        return pgd;
 }
@@ -110,9 +109,8 @@
                free_page((unsigned long)__va(pgd_val(pgd[i])-1));
        kmem_cache_free(pae_pgd_cachep, pgd);
 #else
-       queue_pgd_unpin(__pa(pgd));
+       xen_pgd_unpin(__pa(pgd));
        __make_page_writable(pgd);
-       flush_page_update_queue();
        free_page((unsigned long)pgd);
 #endif
 }
@@ -135,8 +133,7 @@
     {
         clear_page(pte);
         __make_page_readonly(pte);
-        queue_pte_pin(__pa(pte));
-        flush_page_update_queue();
+        xen_pte_pin(__pa(pte));
     }
     return pte;
 
@@ -155,9 +152,8 @@
 
 static __inline__ void pte_free_slow(pte_t *pte)
 {
-    queue_pte_unpin(__pa(pte));
+    xen_pte_unpin(__pa(pte));
     __make_page_writable(pte);
-    flush_page_update_queue();
     free_page((unsigned long)pte);
 }
 
diff -Nru a/linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h 
b/linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h
--- a/linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h 2005-03-29 06:03:45 
-05:00
+++ b/linux-2.4.29-xen-sparse/include/asm-xen/pgtable.h 2005-03-29 06:03:45 
-05:00
@@ -300,7 +300,7 @@
     pgd_t *pgd = pgd_offset_k((unsigned long)va);
     pmd_t *pmd = pmd_offset(pgd, (unsigned long)va);
     pte_t *pte = pte_offset(pmd, (unsigned long)va);
-    queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
+    set_pte(pte, pte_wrprotect(*pte));
 }
 
 static inline void __make_page_writable(void *va)
@@ -308,7 +308,7 @@
     pgd_t *pgd = pgd_offset_k((unsigned long)va);
     pmd_t *pmd = pmd_offset(pgd, (unsigned long)va);
     pte_t *pte = pte_offset(pmd, (unsigned long)va);
-    queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
+    set_pte(pte, pte_mkwrite(*pte));
 }
 
 static inline void make_page_readonly(void *va)
@@ -316,7 +316,7 @@
     pgd_t *pgd = pgd_offset_k((unsigned long)va);
     pmd_t *pmd = pmd_offset(pgd, (unsigned long)va);
     pte_t *pte = pte_offset(pmd, (unsigned long)va);
-    queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
+    set_pte(pte, pte_wrprotect(*pte));
     if ( (unsigned long)va >= VMALLOC_START )
         __make_page_readonly(machine_to_virt(
             *(unsigned long *)pte&PAGE_MASK));
@@ -327,7 +327,7 @@
     pgd_t *pgd = pgd_offset_k((unsigned long)va);
     pmd_t *pmd = pmd_offset(pgd, (unsigned long)va);
     pte_t *pte = pte_offset(pmd, (unsigned long)va);
-    queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
+    set_pte(pte, pte_mkwrite(*pte));
     if ( (unsigned long)va >= VMALLOC_START )
         __make_page_writable(machine_to_virt(
             *(unsigned long *)pte&PAGE_MASK));
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c   2005-03-29 06:03:45 
-05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/init.c   2005-03-29 06:03:45 
-05:00
@@ -355,11 +355,12 @@
         */
        memcpy(new_pgd, old_pgd, PTRS_PER_PGD_NO_HV*sizeof(pgd_t));
        make_page_readonly(new_pgd);
-       queue_pgd_pin(__pa(new_pgd));
+       xen_pgd_pin(__pa(new_pgd));
        load_cr3(new_pgd);
-       queue_pgd_unpin(__pa(old_pgd));
+       flush_page_update_queue();
+       xen_pgd_unpin(__pa(old_pgd));
        make_page_writable(old_pgd);
-       __flush_tlb_all(); /* implicit flush */
+       __flush_tlb_all();
        free_bootmem(__pa(old_pgd), PAGE_SIZE);
 
        kernel_physical_mapping_init(new_pgd);
diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c 
b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c
--- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c        2005-03-29 
06:03:45 -05:00
+++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c        2005-03-29 
06:03:45 -05:00
@@ -193,10 +193,8 @@
 pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
 {
        pte_t *pte = (pte_t 
*)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
-       if (pte) {
+       if (pte)
                make_page_readonly(pte);
-               flush_page_update_queue();
-       }
        return pte;
 }
 
@@ -208,8 +206,7 @@
 
        clear_page(pte);
        make_page_readonly(pte);
-       queue_pte_pin(__pa(pte));
-       flush_page_update_queue();
+       xen_pte_pin(__pa(pte));
 }
 
 void pte_dtor(void *pte, kmem_cache_t *cache, unsigned long unused)
@@ -217,9 +214,8 @@
        struct page *page = virt_to_page(pte);
        ClearPageForeign(page);
 
-       queue_pte_unpin(__pa(pte));
+       xen_pte_unpin(__pa(pte));
        make_page_writable(pte);
-       flush_page_update_queue();
 }
 
 struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
@@ -316,8 +312,7 @@
        memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t));
  out:
        make_page_readonly(pgd);
-       queue_pgd_pin(__pa(pgd));
-       flush_page_update_queue();
+       xen_pgd_pin(__pa(pgd));
 }
 
 /* never called when PTRS_PER_PMD > 1 */
@@ -325,9 +320,8 @@
 {
        unsigned long flags; /* can be called from interrupt context */
 
-       queue_pgd_unpin(__pa(pgd));
+       xen_pgd_unpin(__pa(pgd));
        make_page_writable(pgd);
-       flush_page_update_queue();
 
        if (PTRS_PER_PMD > 1)
                return;
@@ -378,7 +372,7 @@
        pud_t *pud = pud_offset(pgd, (unsigned long)va);
        pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
        pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
-       queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
+       set_pte(pte, pte_wrprotect(*pte));
 }
 
 void make_lowmem_page_writable(void *va)
@@ -387,7 +381,7 @@
        pud_t *pud = pud_offset(pgd, (unsigned long)va);
        pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
        pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
-       queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
+       set_pte(pte, pte_mkwrite(*pte));
 }
 
 void make_page_readonly(void *va)
@@ -396,7 +390,7 @@
        pud_t *pud = pud_offset(pgd, (unsigned long)va);
        pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
        pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
-       queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW);
+       set_pte(pte, pte_wrprotect(*pte));
        if ( (unsigned long)va >= (unsigned long)high_memory )
        {
                unsigned long phys;
@@ -414,7 +408,7 @@
        pud_t *pud = pud_offset(pgd, (unsigned long)va);
        pmd_t *pmd = pmd_offset(pud, (unsigned long)va);
        pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va);
-       queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW);
+       set_pte(pte, pte_mkwrite(*pte));
        if ( (unsigned long)va >= (unsigned long)high_memory )
        {
                unsigned long phys;
diff -Nru a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 
b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h
--- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 
2005-03-29 06:03:45 -05:00
+++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable-2level.h 
2005-03-29 06:03:45 -05:00
@@ -16,8 +16,6 @@
 #define set_pte(pteptr, pteval) (*(pteptr) = pteval)
 #define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
 #define set_pmd(pmdptr, pmdval) xen_l2_entry_update((pmdptr), (pmdval))
-#define set_pte_batched(pteptr, pteval) \
-       queue_l1_entry_update(pteptr, (pteval).pte_low)
 
 #define ptep_get_and_clear(xp) __pte_ma(xchg(&(xp)->pte_low, 0))
 #define pte_same(a, b)         ((a).pte_low == (b).pte_low)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Get rid of more uses of batched mmu interface., BitKeeper Bot <=