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] Clean up xenstore/console shared page initialisation, wh

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Clean up xenstore/console shared page initialisation, which is
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 14 Nov 2005 18:58:13 +0000
Delivery-date: Mon, 14 Nov 2005 18:59:21 +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-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 20bd6f55b813aa145fff73891fcdd9a1c4db9b8c
# Parent  8ee7df2c18d14d254c940ac5bd514a59295f869c
Clean up xenstore/console shared page initialisation, which is
now handled solely by the domain builder.

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>

diff -r 8ee7df2c18d1 -r 20bd6f55b813 
linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c
--- a/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c   Mon Nov 14 
10:35:50 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/console/xencons_ring.c   Mon Nov 14 
10:36:42 2005
@@ -30,6 +30,12 @@
        return mfn_to_virt(xen_start_info->console_mfn);
 }
 
+static inline void notify_daemon(void)
+{
+       /* Use evtchn: this is called early, before irq is set up. */
+       notify_remote_via_evtchn(xen_start_info->console_evtchn);
+}
+
 int xencons_ring_send(const char *data, unsigned len)
 {
        int sent = 0;
@@ -47,8 +53,7 @@
        wmb();
        intf->out_prod = prod;
 
-       /* Use evtchn: this is called early, before irq is set up. */
-       notify_remote_via_evtchn(xen_start_info->console_evtchn);
+       notify_daemon();
 
        return sent;
 }      
@@ -70,8 +75,10 @@
                                1, regs);
        }
 
-       wmb();
+       mb();
        intf->in_cons = cons;
+
+       notify_daemon();
 
        return IRQ_HANDLED;
 }
@@ -102,6 +109,9 @@
 
        xencons_irq = err;
 
+       /* In case we have in-flight data after save/restore... */
+       notify_daemon();
+
        return 0;
 }
 
diff -r 8ee7df2c18d1 -r 20bd6f55b813 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c    Mon Nov 14 
10:35:50 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_comms.c    Mon Nov 14 
10:36:42 2005
@@ -36,7 +36,7 @@
 #include <asm-xen/xenbus.h>
 #include "xenbus_comms.h"
 
-static int xenbus_irq      = 0;
+static int xenbus_irq;
 
 extern void xenbus_probe(void *); 
 extern int xenstored_ready; 
@@ -51,7 +51,7 @@
 
 static irqreturn_t wake_waiting(int irq, void *unused, struct pt_regs *regs)
 {
-       if(unlikely(xenstored_ready == 0)) {
+       if (unlikely(xenstored_ready == 0)) {
                xenstored_ready = 1; 
                schedule_work(&probe_work); 
        } 
@@ -188,9 +188,6 @@
        }
 
        xenbus_irq = err;
-
-       /* FIXME zero out page -- domain builder should probably do this*/
-       memset(mfn_to_virt(xen_start_info->store_mfn), 0, PAGE_SIZE);
 
        return 0;
 }
diff -r 8ee7df2c18d1 -r 20bd6f55b813 tools/libxc/xc_linux_build.c
--- a/tools/libxc/xc_linux_build.c      Mon Nov 14 10:35:50 2005
+++ b/tools/libxc/xc_linux_build.c      Mon Nov 14 10:36:42 2005
@@ -619,7 +619,9 @@
 
     *store_mfn = page_array[(vstoreinfo_start-dsi.v_start) >> PAGE_SHIFT];
     *console_mfn = page_array[(vconsole_start-dsi.v_start) >> PAGE_SHIFT];
-
+    if ( xc_clear_domain_page(xc_handle, dom, *store_mfn) ||
+         xc_clear_domain_page(xc_handle, dom, *console_mfn) )
+        goto error_out;
 
     start_info = xc_map_foreign_range(
         xc_handle, dom, PAGE_SIZE, PROT_READ|PROT_WRITE,
diff -r 8ee7df2c18d1 -r 20bd6f55b813 tools/libxc/xc_linux_restore.c
--- a/tools/libxc/xc_linux_restore.c    Mon Nov 14 10:35:50 2005
+++ b/tools/libxc/xc_linux_restore.c    Mon Nov 14 10:36:42 2005
@@ -11,8 +11,6 @@
 
 #include "xg_private.h"
 #include "xg_save_restore.h"
-
-
 
 /* max mfn of the whole machine */
 static uint32_t max_mfn; 
diff -r 8ee7df2c18d1 -r 20bd6f55b813 tools/libxc/xc_private.c
--- a/tools/libxc/xc_private.c  Mon Nov 14 10:35:50 2005
+++ b/tools/libxc/xc_private.c  Mon Nov 14 10:36:42 2005
@@ -336,6 +336,19 @@
     return 0;
 }
 
+int xc_clear_domain_page(int xc_handle,
+                         uint32_t domid,
+                         unsigned long dst_pfn)
+{
+    void *vaddr = xc_map_foreign_range(
+        xc_handle, domid, PAGE_SIZE, PROT_WRITE, dst_pfn);
+    if ( vaddr == NULL )
+        return -1;
+    memset(vaddr, 0, PAGE_SIZE);
+    munmap(vaddr, PAGE_SIZE);
+    return 0;
+}
+
 unsigned long xc_get_filesz(int fd)
 {
     uint16_t sig;
diff -r 8ee7df2c18d1 -r 20bd6f55b813 tools/libxc/xc_vmx_build.c
--- a/tools/libxc/xc_vmx_build.c        Mon Nov 14 10:35:50 2005
+++ b/tools/libxc/xc_vmx_build.c        Mon Nov 14 10:36:42 2005
@@ -495,6 +495,9 @@
     }
 
     *store_mfn = page_array[(v_end-2) >> PAGE_SHIFT];
+    if ( xc_clear_domain_page(xc_handle, dom, *store_mfn) )
+        goto error_out;
+
     shared_page_frame = (v_end - PAGE_SIZE) >> PAGE_SHIFT;
 
     if ((e820_page = xc_map_foreign_range(
diff -r 8ee7df2c18d1 -r 20bd6f55b813 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Mon Nov 14 10:35:50 2005
+++ b/tools/libxc/xenctrl.h     Mon Nov 14 10:36:42 2005
@@ -424,6 +424,9 @@
 int xc_copy_to_domain_page(int xc_handle, uint32_t domid,
                           unsigned long dst_pfn, void *src_page);
 
+int xc_clear_domain_page(int xc_handle, uint32_t domid,
+                         unsigned long dst_pfn);
+
 int xc_ia64_copy_to_domain_pages(int xc_handle, uint32_t domid,
         void* src_page, unsigned long dst_pfn, int nr_pages);
 

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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Clean up xenstore/console shared page initialisation, which is, Xen patchbot -unstable <=