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] Merged.

# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID 80e393599413fdcd38b1e438042e22d218bec272
# Parent  418954da5c0f58bc856893f3850b0d97deb143ec
# Parent  c640c0c7f821a202fecda775811184d1cf851cbe
Merged.

diff -r 418954da5c0f -r 80e393599413 docs/man/xm.pod.1
--- a/docs/man/xm.pod.1 Thu Nov 17 11:59:12 2005
+++ b/docs/man/xm.pod.1 Thu Nov 17 11:59:58 2005
@@ -550,10 +550,10 @@
 
 =item B<sched-sedf> I<period> I<slice> I<latency-hint> I<extratime> I<weight>
 
-Set Simple EDF scheduler parameters.  This scheduler provides weighted
-CPU sharing in an intuitive way and uses realtime-algorithms to ensure
-time guarantees.  For more information see
-docs/misc/sedf_scheduler_mini-HOWTO.txt in the Xen distribution.
+Set Simple EDF (Earliest Deadline First) scheduler parameters.  This
+scheduler provides weighted CPU sharing in an intuitive way and uses
+realtime-algorithms to ensure time guarantees.  For more information
+see docs/misc/sedf_scheduler_mini-HOWTO.txt in the Xen distribution.
 
 B<PARAMETERS>
 
@@ -640,10 +640,53 @@
 
 =head2 NETWORK DEVICES
 
-=item B<network-attach> I<domain-id> I<[script=script]> I<[ip=ipaddr]>
+=item B<network-attach> I<domain-id> I<[script=scriptname]> I<[ip=ipaddr]>
 I<[mac=macaddr]> I<[bridge=bridge-name]> I<[backend=bedomain-id]>
 
+Creates a new network device in the domain specified by domain-id.  It
+takes the following optional options:
+
+B<OPTIONS>
+
+=over 4
+
+=item I<script=scriptname>
+
+Use the specified script name to bring up the network.  Defaults to
+the default setting in xend-config.sxp for I<vif-script>.
+
+=item I<ip=ipaddr>
+
+Passes the specified IP Address to the adapter on creation.  
+
+FIXME: this currently appears to be B<broken>.  I'm not sure under what
+circumstances this should actually work.
+
+=item I<mac=macaddr>
+
+The MAC address that the domain will see on its ethernet device.  If
+the device is not specified it will be randomly generated with the
+00:16:3e vendor id prefix.
+
+=item I<bridge=bridge-name>
+
+The name of the bridge to attach the vif to, in case you have more
+than one.  This defaults to 
+
+=item I<backend=bedomain-id>
+
+The backend domain id.  By default this is domain 0.
+
+=back
+
 =item B<network-detach> I<domain-id> I<devid>
+
+Removes the network device from the domain specified by I<domain-id>.
+I<devid> is the virtual interface device number within the domain
+(i.e. the 3 in vif22.3).
+
+FIXME: this is currently B<broken>.  Network devices aren't completely
+removed from domain 0.
 
 =item B<network-list> I<domain-id>
 
diff -r 418954da5c0f -r 80e393599413 docs/src/user/installation.tex
--- a/docs/src/user/installation.tex    Thu Nov 17 11:59:12 2005
+++ b/docs/src/user/installation.tex    Thu Nov 17 11:59:58 2005
@@ -24,11 +24,6 @@
 \item [$\dag$] The Linux hotplug system\footnote{Available from {\tt
       http://linux-hotplug.sourceforge.net/}} (e.g., \path{/sbin/hotplug}
       and related scripts)
-\item [$\dag$] An installation of Twisted~v1.3 or
-  above\footnote{Available from {\tt http://www.twistedmatrix.com}}.
-  There may be a binary package available for your distribution;
-  alternatively it can be installed by running `{\sl make
-    install-twisted}' in the root of the Xen source tree.
 \item [$*$] Build tools (gcc v3.2.x or v3.3.x, binutils, GNU make).
 \item [$*$] Development installation of libcurl (e.g.,\ libcurl-devel).
 \item [$*$] Development installation of zlib (e.g.,\ zlib-dev).
diff -r 418954da5c0f -r 80e393599413 
linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c
--- a/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c        Thu Nov 17 
11:59:12 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/privcmd/privcmd.c        Thu Nov 17 
11:59:58 2005
@@ -219,7 +219,6 @@
 
 #ifndef __ia64__
        case IOCTL_PRIVCMD_GET_MACH2PHYS_MFNS: {
-
                pgd_t *pgd; 
                pud_t *pud; 
                pmd_t *pmd; 
@@ -235,13 +234,13 @@
 
                p = m.arr; 
 
-               for(i=0; i < m.num; i++) { 
-
+               for (i=0; i < m.num; i++) { 
                        pgd = pgd_offset_k(m2pv);
                        pud = pud_offset(pgd, m2pv);
                        pmd = pmd_offset(pud, m2pv);
-                       m2p_mfn = (*(uint64_t *)pmd >> PAGE_SHIFT)&0xFFFFFFFF;
-                       
+                       m2p_mfn  = (*(uint64_t *)pmd >> PAGE_SHIFT)&0xFFFFFFFF;
+                       m2p_mfn += pte_index(m2pv);
+
                        if (put_user(m2p_mfn, p + i))
                                return -EFAULT;
 
diff -r 418954da5c0f -r 80e393599413 
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c
--- a/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Thu Nov 17 
11:59:12 2005
+++ b/linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c    Thu Nov 17 
11:59:58 2005
@@ -299,8 +299,8 @@
 
        DPRINTK("state is %d, %s, %s",
                state, dev->otherend_watch.node, vec[XS_WATCH_PATH]);
-
-       drv->otherend_changed(dev, state);
+       if (drv->otherend_changed)
+               drv->otherend_changed(dev, state);
 }
 
 
diff -r 418954da5c0f -r 80e393599413 tools/libxc/xc_linux_restore.c
--- a/tools/libxc/xc_linux_restore.c    Thu Nov 17 11:59:12 2005
+++ b/tools/libxc/xc_linux_restore.c    Thu Nov 17 11:59:58 2005
@@ -146,7 +146,7 @@
     unsigned long buf[PAGE_SIZE/sizeof(unsigned long)];
 
     struct mmuext_op pin[MAX_PIN_BATCH];
-    unsigned int nr_pins = 0;
+    unsigned int nr_pins; 
 
 
     max_pfn = nr_pfns; 
@@ -501,7 +501,16 @@
      * Pin page tables. Do this after writing to them as otherwise Xen
      * will barf when doing the type-checking.
      */
+    nr_pins = 0; 
     for (i = 0; i < max_pfn; i++) {
+
+        if (i == (max_pfn-1) || nr_pins == MAX_PIN_BATCH) {
+            if (xc_mmuext_op(xc_handle, pin, nr_pins, dom) < 0) { 
+                ERR("Failed to pin batch of %d page tables", nr_pins); 
+                goto out;
+            } 
+            nr_pins = 0;
+        }
 
         if ( (pfn_type[i] & LPINTAB) == 0 )
             continue;
@@ -529,16 +538,8 @@
         }
 
         pin[nr_pins].arg1.mfn = p2m[i];
-
-        nr_pins ++; 
-        
-        if (i == (max_pfn-1) || nr_pins == MAX_PIN_BATCH) {
-            if (xc_mmuext_op(xc_handle, pin, nr_pins, dom) < 0) { 
-                ERR("Failed to pin batch of %d page tables", nr_pins); 
-                goto out;
-            } 
-            nr_pins = 0;
-        }
+        nr_pins++; 
+
     }
 
     DPRINTF("\b\b\b\b100%%\n");
diff -r 418954da5c0f -r 80e393599413 tools/xm-test/README
--- a/tools/xm-test/README      Thu Nov 17 11:59:12 2005
+++ b/tools/xm-test/README      Thu Nov 17 11:59:58 2005
@@ -38,26 +38,60 @@
 downloaded, extracted, and compiled.  Due to the need to create
 special files, this process must be done as root:
 
+   # ./autogen
    # ./configure
    # make
 
-NB: If you have the initrd.img from a previous version of xm-test, you
-can copy it into the ramdisk directory to eliminate the need to
-rebuild it.  So far, nothing has changed in the ramdisk since xm-test
-version 0.1.1.  If you do this, there is no need to run 'make' again.
+NB: If you have the initrd.img from another installation of xm-test,
+you can copy it into the ramdisk directory to eliminate the need to
+rebuild it.  If you do this, there is no need to run 'make' again.
 Simply copy the initrd.img file into ramdisk/ and then run the
-runtest.sh script.
+runtest.sh script.  Note that in general, you should not attempt to
+use a ramdisk from a previous minor version of xm-test (i.e., don't
+use a ramdisk from 0.4.0 with 0.5.0.  0.5.0 should work for 0.5.3
+though)
 
 
 Running
 =======
 
-By running "./runtest.sh logfile" at the top level, all tests will be
-run in alphabetic order.  To run a specific test group, run "make
-check" from inside that group directory.  For example:
+To run the full test suite, do the following as root:
+
+   # ./runtest.sh <logfile>
+
+This will run all tests, as well as generate and submit a report at
+the end.  All output files will begin with "<logfile>."  If you wish to
+prevent submission of a report, add "-d" to the command line like this:
+
+   # ./runtest.sh -d <logfile>
+
+It may be useful to run tests without submission as above, and then
+submit the report at a later time.  To do so, run runtest.sh with the
+-s flag and the name of the previously-generated report:
+
+   # ./runtest.sh -s <logfile>
+
+For people needing a quick test run instead the full suite, a quick
+mode has been added that will attempt to run a representative subset
+of tests.  This is not a substitute for the whole suite, but will
+verify that some of the major functions of xen and xm are working:
+
+   # ./runtest.sh -q <logfile>
+
+Because of the current structure of the reporting software, submission
+of quick test run results is not supported.
+
+It may be desirable to run a specific test group.  This can be
+accomplished by doing the following:
 
    # cd tests/create
-   # make check
+   # TEST_VERBOSE=1 make check
+
+When developing or debugging a specific feature, a single test can be
+run to avoid having to run even a whole test group:
+
+   # cd tests/create
+   # TEST_VERBOSE=1 make check TESTS=01_create_basic_pos.test
 
 The runtest.sh script will create several files, including a .report
 file, which is the cleaned up, email-friendly report of failures.
@@ -69,15 +103,9 @@
 allocated to Dom0.  More memory available for allocation to DomUs
 means a more rigorous test.
 
-If you wish to run xm-test in an automated batch environment, you can
-run the script with the "-b" flag, which will try to prevent it from
-asking any questions interactively.  You should run it manually at
-least once to generate the "contact_info" file, which will be used in
-subsequent runs.
-
-BIG FAT WARNING: The framework assumes it is running on a dedicated
-machine.  As such, the library automatically destroys any running
-DomUs on the sytem to provide each test with a "clean slate".
+BIG FAT WARNING: The test framework assumes it is running on a
+dedicated machine.  As such, the library automatically destroys any
+running DomUs on the system to provide each test with a "clean slate".
 
 
 Extending
@@ -99,6 +127,9 @@
 subcommand itself.  The "Makefile.am.template" should be copied into
 the new group directory as "Makefile.am".
 
+See the Writing_Tests_HOWTO file for more detailed information on
+adding tests to the suite.
+
 
 Developer Notes
 ===============
@@ -114,21 +145,6 @@
 Known Issues
 ============
 
-- 08/22/2005 Dan Smith:
-    Current versions of Xen experience long delays on
-    boot, due to the blkif frontend waiting (and timing
-    out) for the backend.  We now implicitly introduce
-    a pause in XmTestDomain.start() to remedy
-    this across all tests that need it.
-
-- 09/22/2005 Dan Smith:
-    The save, restore, and migrate tests have been turned
-    back on, as we have implemented timeout functionality 
-    in "traceCommand".  Since migrate is known to hang, we 
-    can now safely include it in the default test run, and
-    have it be killed if it never finishes.  As before,
-    feedback about these tests would be specifically
-    appreciated.
 
 Reporting Bugs
 ==============
diff -r 418954da5c0f -r 80e393599413 tools/xm-test/lib/XmTestLib/Console.py
--- a/tools/xm-test/lib/XmTestLib/Console.py    Thu Nov 17 11:59:12 2005
+++ b/tools/xm-test/lib/XmTestLib/Console.py    Thu Nov 17 11:59:58 2005
@@ -33,9 +33,13 @@
 
 from Test import *
 
+TIMEDOUT = 1
+RUNAWAY  = 2
+
 class ConsoleError(Exception):
-    def __init__(self, msg):
+    def __init__(self, msg, reason=TIMEDOUT):
         self.errMsg = msg
+        self.reason = reason
 
     def __str__(self):
         return str(self.errMsg)
@@ -149,7 +153,7 @@
 
             if self.limit and bytes >= self.limit:
                 raise ConsoleError("Console run-away (exceeded %i bytes)"
-                                   % self.limit)
+                                   % self.limit, RUNAWAY)
 
         if self.debugMe:
             print "Ignored %i bytes of miscellaneous console output" % bytes
@@ -187,7 +191,7 @@
 
             if self.limit and bytes >= self.limit:
                 raise ConsoleError("Console run-away (exceeded %i bytes)"
-                                   % self.limit)
+                                   % self.limit, RUNAWAY)
 
             if str == "\n":
                 if lines > 0:
diff -r 418954da5c0f -r 80e393599413 
tools/xm-test/tests/memset/04_memset_smallmem_pos.py
--- a/tools/xm-test/tests/memset/04_memset_smallmem_pos.py      Thu Nov 17 
11:59:12 2005
+++ b/tools/xm-test/tests/memset/04_memset_smallmem_pos.py      Thu Nov 17 
11:59:58 2005
@@ -36,6 +36,17 @@
     # See if this hits the byte limit
     console.runCmd("ls")
 except ConsoleError, e:
-    FAIL(str(e))
+    if e.reason == RUNAWAY:
+        # Need to stop the domain before we restart the console daemon
+        domain.destroy()
+        if verbose:
+            print "*** Attempting restart of xenconsoled"
+            s, o = traceCommand("killall xenconsoled")
+            s, o = traceCommand("xenconsoled")
+            if s != 0:
+                print "*** Starting xenconsoled failed: %i" % s
+        FAIL("Bug #380: I crashed the console system")
+    else:
+        FAIL(str(e))
 
 domain.destroy()
diff -r 418954da5c0f -r 80e393599413 
tools/xm-test/tests/pause/01_pause_basic_pos.py
--- a/tools/xm-test/tests/pause/01_pause_basic_pos.py   Thu Nov 17 11:59:12 2005
+++ b/tools/xm-test/tests/pause/01_pause_basic_pos.py   Thu Nov 17 11:59:58 2005
@@ -49,12 +49,9 @@
 if status != 0:
        FAIL("xm pause returned invalid %i != 0", status)
 
-# Attach a console to it
+# Try to attach a console to it
 try:
     console = XmConsole(domain.getName(), historySaveCmds=True)
-except ConsoleError, e:
-    FAIL(str(e))
-try:
     run = console.runCmd("ls")
     #If we get here, console attached to paused domain (unexpected)
     FAIL("console attached to supposedly paused domain")
diff -r 418954da5c0f -r 80e393599413 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Thu Nov 17 11:59:12 2005
+++ b/xen/arch/x86/domain.c     Thu Nov 17 11:59:58 2005
@@ -240,7 +240,10 @@
 
 void free_perdomain_pt(struct domain *d)
 {
-    free_xenheap_page(d->arch.mm_perdomain_pt);
+    free_xenheap_pages(
+        d->arch.mm_perdomain_pt,
+        get_order_from_bytes(PDPT_L1_ENTRIES * sizeof(l1_pgentry_t)));
+
 #ifdef __x86_64__
     free_xenheap_page(d->arch.mm_perdomain_l2);
     free_xenheap_page(d->arch.mm_perdomain_l3);
@@ -251,7 +254,7 @@
 {
     struct domain *d = v->domain;
     l1_pgentry_t gdt_l1e;
-    int vcpuid;
+    int vcpuid, pdpt_order;
 
     if ( is_idle_task(d) )
         return;
@@ -263,13 +266,10 @@
     v->vcpu_info = &d->shared_info->vcpu_data[v->vcpu_id];
     v->cpumap = CPUMAP_RUNANYWHERE;
     SHARE_PFN_WITH_DOMAIN(virt_to_page(d->shared_info), d);
-    set_pfn_from_mfn(virt_to_phys(d->shared_info) >> PAGE_SHIFT,
-            INVALID_M2P_ENTRY);
-
-    d->arch.mm_perdomain_pt = alloc_xenheap_page();
-    memset(d->arch.mm_perdomain_pt, 0, PAGE_SIZE);
-    set_pfn_from_mfn(virt_to_phys(d->arch.mm_perdomain_pt) >> PAGE_SHIFT,
-            INVALID_M2P_ENTRY);
+
+    pdpt_order = get_order_from_bytes(PDPT_L1_ENTRIES * sizeof(l1_pgentry_t));
+    d->arch.mm_perdomain_pt = alloc_xenheap_pages(pdpt_order);
+    memset(d->arch.mm_perdomain_pt, 0, PAGE_SIZE << pdpt_order);
     v->arch.perdomain_ptes = d->arch.mm_perdomain_pt;
 
     /*
@@ -293,9 +293,11 @@
 
     d->arch.mm_perdomain_l2 = alloc_xenheap_page();
     memset(d->arch.mm_perdomain_l2, 0, PAGE_SIZE);
-    d->arch.mm_perdomain_l2[l2_table_offset(PERDOMAIN_VIRT_START)] =
-        l2e_from_page(virt_to_page(d->arch.mm_perdomain_pt),
-                        __PAGE_HYPERVISOR);
+    for ( i = 0; i < (1 << pdpt_order); i++ )
+        d->arch.mm_perdomain_l2[l2_table_offset(PERDOMAIN_VIRT_START)+i] =
+            l2e_from_page(virt_to_page(d->arch.mm_perdomain_pt)+i,
+                          __PAGE_HYPERVISOR);
+
     d->arch.mm_perdomain_l3 = alloc_xenheap_page();
     memset(d->arch.mm_perdomain_l3, 0, PAGE_SIZE);
     d->arch.mm_perdomain_l3[l3_table_offset(PERDOMAIN_VIRT_START)] =
diff -r 418954da5c0f -r 80e393599413 xen/arch/x86/mm.c
--- a/xen/arch/x86/mm.c Thu Nov 17 11:59:12 2005
+++ b/xen/arch/x86/mm.c Thu Nov 17 11:59:58 2005
@@ -738,7 +738,7 @@
     memcpy(&pl2e[L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES-1)],
            &idle_pg_table_l2[L2_PAGETABLE_FIRST_XEN_SLOT],
            L2_PAGETABLE_XEN_SLOTS * sizeof(l2_pgentry_t));
-    for ( i = 0; i < (PERDOMAIN_MBYTES >> (L2_PAGETABLE_SHIFT - 20)); i++ )
+    for ( i = 0; i < PDPT_L2_ENTRIES; i++ )
         pl2e[l2_table_offset(PERDOMAIN_VIRT_START) + i] =
             l2e_from_page(
                 virt_to_page(page_get_owner(page)->arch.mm_perdomain_pt) + i,
diff -r 418954da5c0f -r 80e393599413 xen/arch/x86/shadow.c
--- a/xen/arch/x86/shadow.c     Thu Nov 17 11:59:12 2005
+++ b/xen/arch/x86/shadow.c     Thu Nov 17 11:59:58 2005
@@ -2710,7 +2710,7 @@
            &idle_pg_table_l2[L2_PAGETABLE_FIRST_XEN_SLOT],
            L2_PAGETABLE_XEN_SLOTS * sizeof(l2_pgentry_t));       
 
-        for ( i = 0; i < (PERDOMAIN_MBYTES >> (L2_PAGETABLE_SHIFT - 20)); i++ )
+        for ( i = 0; i < PDPT_L2_ENTRIES; i++ )
             spl2e[l2_table_offset(PERDOMAIN_VIRT_START) + i] =
                 l2e_from_page(
                     
virt_to_page(page_get_owner(&frame_table[gmfn])->arch.mm_perdomain_pt) + i, 
diff -r 418954da5c0f -r 80e393599413 xen/include/asm-x86/config.h
--- a/xen/include/asm-x86/config.h      Thu Nov 17 11:59:12 2005
+++ b/xen/include/asm-x86/config.h      Thu Nov 17 11:59:58 2005
@@ -291,6 +291,9 @@
 
 #define PDPT_VCPU_SHIFT       5
 #define PDPT_VCPU_VA_SHIFT    (PDPT_VCPU_SHIFT + PAGE_SHIFT)
+#define PDPT_L1_ENTRIES       (MAX_VIRT_CPUS << PDPT_VCPU_SHIFT)
+#define PDPT_L2_ENTRIES       \
+    ((PDPT_L1_ENTRIES + (1 << PAGETABLE_ORDER) - 1) >> PAGETABLE_ORDER)
 
 #if defined(__x86_64__)
 #define ELFSIZE 64

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

<Prev in Thread] Current Thread [Next in Thread>