# 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
|