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] Michael's hacked shadow mode linux

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Michael's hacked shadow mode linux
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Tue, 15 Mar 2005 15:53:52 +0000
Delivery-date: Tue, 05 Apr 2005 16:09:13 +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.1246, 2005/03/15 15:53:52+00:00, 
rneugeba@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

        Michael's hacked shadow mode linux
        
        Signed-off-by: michael.fetterman@xxxxxxxxxxxx



 Kconfig              |    6 ++++++
 i386/mm/hypervisor.c |   18 ++++++++++++++++++
 i386/mm/init.c       |    4 ++++
 i386/mm/pgtable.c    |    6 ++++++
 4 files changed, 34 insertions(+)


diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/Kconfig 
b/linux-2.6.10-xen-sparse/arch/xen/Kconfig
--- a/linux-2.6.10-xen-sparse/arch/xen/Kconfig  2005-04-05 12:09:19 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/Kconfig  2005-04-05 12:09:19 -04:00
@@ -146,6 +146,12 @@
       we only use this for benchmarking
       enable only if you know what you are doing
 
+config XEN_SHADOW_MODE
+       bool "Fake shadow mode"
+       default n
+    help
+      fakes out a shadow mode kernel
+
 
 config XEN_SCRUB_PAGES
        bool "Scrub memory before freeing it to Xen"
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c 
b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c     2005-04-05 
12:09:19 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/hypervisor.c     2005-04-05 
12:09:19 -04:00
@@ -125,6 +125,7 @@
 
 void queue_l1_entry_update(pte_t *ptr, unsigned long val)
 {
+#ifndef CONFIG_XEN_SHADOW_MODE
     int cpu = smp_processor_id();
     int idx;
     unsigned long flags;
@@ -137,10 +138,15 @@
     __flush_page_update_queue();
 #endif
     spin_unlock_irqrestore(&update_lock, flags);
+#else
+    _flush_page_update_queue();
+    *(unsigned long *)ptr = val;
+#endif
 }
 
 void queue_l2_entry_update(pmd_t *ptr, unsigned long val)
 {
+#ifndef CONFIG_XEN_SHADOW_MODE
     int cpu = smp_processor_id();
     int idx;
     unsigned long flags;
@@ -150,6 +156,10 @@
     per_cpu(update_queue[idx], cpu).val = val;
     increment_index();
     spin_unlock_irqrestore(&update_lock, flags);
+#else
+    _flush_page_update_queue();
+    *(unsigned long *)ptr = val;
+#endif
 }
 
 void queue_pt_switch(unsigned long ptr)
@@ -278,6 +288,7 @@
 /* queue and flush versions of the above */
 void xen_l1_entry_update(pte_t *ptr, unsigned long val)
 {
+#ifndef CONFIG_XEN_SHADOW_MODE
     int cpu = smp_processor_id();
     int idx;
     unsigned long flags;
@@ -287,10 +298,14 @@
     per_cpu(update_queue[idx], cpu).val = val;
     increment_index_and_flush();
     spin_unlock_irqrestore(&update_lock, flags);
+#else
+    *(unsigned long *)ptr = val;
+#endif
 }
 
 void xen_l2_entry_update(pmd_t *ptr, unsigned long val)
 {
+#ifndef CONFIG_XEN_SHADOW_MODE
     int cpu = smp_processor_id();
     int idx;
     unsigned long flags;
@@ -300,6 +315,9 @@
     per_cpu(update_queue[idx], cpu).val = val;
     increment_index_and_flush();
     spin_unlock_irqrestore(&update_lock, flags);
+#else
+    *(unsigned long *)ptr = val;
+#endif
 }
 
 void xen_pt_switch(unsigned long ptr)
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c 
b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c   2005-04-05 12:09:19 
-04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c   2005-04-05 12:09:19 
-04:00
@@ -77,7 +77,9 @@
 {
        if (pmd_none(*pmd)) {
                pte_t *page_table = (pte_t *) 
alloc_bootmem_low_pages(PAGE_SIZE);
+#ifndef CONFIG_XEN_SHADOW_MODE
                make_page_readonly(page_table);
+#endif
                set_pmd(pmd, __pmd(__pa(page_table) | _PAGE_TABLE));
                if (page_table != pte_offset_kernel(pmd, 0))
                        BUG();  
@@ -349,7 +351,9 @@
         * it. We clean up by write-enabling and then freeing the old page dir.
         */
        memcpy(new_pgd, old_pgd, PTRS_PER_PGD_NO_HV*sizeof(pgd_t));
+#ifndef CONFIG_XEN_SHADOW_MODE
        make_page_readonly(new_pgd);
+#endif
        queue_pgd_pin(__pa(new_pgd));
        load_cr3(new_pgd);
        queue_pgd_unpin(__pa(old_pgd));
diff -Nru a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c 
b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c
--- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c        2005-04-05 
12:09:19 -04:00
+++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/pgtable.c        2005-04-05 
12:09:19 -04:00
@@ -181,7 +181,9 @@
        pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT);
        if (pte) {
                clear_page(pte);
+#ifndef CONFIG_XEN_SHADOW_MODE
                make_page_readonly(pte);
+#endif
                xen_flush_page_update_queue();
        }
        return pte;
@@ -194,7 +196,9 @@
        set_page_count(page, 1);
 
        clear_page(pte);
+#ifndef CONFIG_XEN_SHADOW_MODE
        make_page_readonly(pte);
+#endif
        queue_pte_pin(__pa(pte));
        flush_page_update_queue();
 }
@@ -304,7 +308,9 @@
        spin_unlock_irqrestore(&pgd_lock, flags);
        memset(pgd, 0, USER_PTRS_PER_PGD*sizeof(pgd_t));
  out:
+#ifndef CONFIG_XEN_SHADOW_MODE
        make_page_readonly(pgd);
+#endif
        queue_pgd_pin(__pa(pgd));
        flush_page_update_queue();
 }

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Michael's hacked shadow mode linux, BitKeeper Bot <=