[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Merge.
# HG changeset patch # User sos22@xxxxxxxxxxxxxxxxxxxx # Node ID 6d9ea03c1baa19dfefbbb6ccc7ab43cff2383206 # Parent 9cc161c08b59ed78e405ac36fc67ec5d24dab37d # Parent 1d754a4ad3507bd94d441f5367fa8010c6f075f7 Merge. Signed-off-by: Steven Smith, sos22@xxxxxxxxx diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/python/xen/xm/main.py --- a/tools/python/xen/xm/main.py Wed Nov 23 12:35:50 2005 +++ b/tools/python/xen/xm/main.py Wed Nov 23 12:38:34 2005 @@ -847,7 +847,8 @@ def usage(cmd=None): if cmd == 'create': - xm_subcommand("create", "--help") + mycmd = xm_lookup_cmd(cmd) + mycmd( ['--help'] ) sys.exit(1) if help.has_key(cmd): print " " + help[cmd] diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/configure.ac --- a/tools/xm-test/configure.ac Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/configure.ac Wed Nov 23 12:38:34 2005 @@ -50,6 +50,7 @@ tests/memmax/Makefile tests/memset/Makefile tests/migrate/Makefile + tests/network-attach/Makefile tests/pause/Makefile tests/reboot/Makefile tests/restore/Makefile diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/lib/XmTestLib/Test.py --- a/tools/xm-test/lib/XmTestLib/Test.py Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/lib/XmTestLib/Test.py Wed Nov 23 12:38:34 2005 @@ -161,6 +161,29 @@ print "*** Test %s started at %s %s" % (name, t, time.tzname[time.daylight]) +# +# Try to start a domain and attach a console to it to see if +# the console system is working +# +def isConsoleDead(): + + from XmTestLib import XmTestDomain, DomainError, XmConsole, ConsoleError + + domain = XmTestDomain() + + try: + domain.start() + console = XmConsole(domain.getName()) + except DomainError, e: + return True + except ConsoleError, e: + return True + + domain.destroy() + + return False + + if __name__ == "__main__": timeStamp() diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/Makefile.am --- a/tools/xm-test/tests/Makefile.am Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/Makefile.am Wed Nov 23 12:38:34 2005 @@ -13,6 +13,7 @@ list \ memmax \ memset \ + network-attach \ pause \ reboot \ sedf \ diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/block-create/Makefile.am --- a/tools/xm-test/tests/block-create/Makefile.am Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/block-create/Makefile.am Wed Nov 23 12:38:34 2005 @@ -8,7 +8,9 @@ 06_block_attach_baddomain_neg.test \ 07_block_attach_baddevice_neg.test \ 08_block_attach_bad_filedevice_neg.test \ - 09_block_attach_and_dettach_device_check_data_pos.test + 09_block_attach_and_dettach_device_check_data_pos.test \ + 11_block_attach_shared_dom0.test \ + 12_block_attach_shared_domU.test DISABLED = diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/memset/04_memset_smallmem_pos.py --- a/tools/xm-test/tests/memset/04_memset_smallmem_pos.py Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/memset/04_memset_smallmem_pos.py Wed Nov 23 12:38:34 2005 @@ -30,7 +30,7 @@ FAIL("xm mem-set %s %i returned invalid %i != 0" % (domain.getName(), domain.minSafeMem(), status)) -console.setLimit(8192) +console.setLimit(65536) try: # See if this hits the byte limit @@ -39,13 +39,15 @@ if e.reason == RUNAWAY: # Need to stop the domain before we restart the console daemon domain.destroy() - if verbose: + if isConsoleDead(): 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") + FAIL("Bug #380: I crashed the console system") + else: + FAIL("Bug #145: Ballooning DomU too low caused run-away") else: FAIL(str(e)) diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/arch/x86/acpi/boot.c --- a/xen/arch/x86/acpi/boot.c Wed Nov 23 12:35:50 2005 +++ b/xen/arch/x86/acpi/boot.c Wed Nov 23 12:38:34 2005 @@ -602,7 +602,8 @@ error = acpi_parse_madt_lapic_entries(); if (!error) { acpi_lapic = 1; - + generic_bigsmp_probe(); + /* * Parse MADT IO-APIC entries */ diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/arch/x86/genapic/bigsmp.c --- a/xen/arch/x86/genapic/bigsmp.c Wed Nov 23 12:35:50 2005 +++ b/xen/arch/x86/genapic/bigsmp.c Wed Nov 23 12:38:34 2005 @@ -45,7 +45,10 @@ static __init int probe_bigsmp(void) { - dmi_check_system(bigsmp_dmi_table); + if (def_to_bigsmp) + dmi_bigsmp = 1; + else + dmi_check_system(bigsmp_dmi_table); return dmi_bigsmp; } diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/arch/x86/genapic/probe.c --- a/xen/arch/x86/genapic/probe.c Wed Nov 23 12:35:50 2005 +++ b/xen/arch/x86/genapic/probe.c Wed Nov 23 12:38:34 2005 @@ -29,6 +29,25 @@ NULL, }; +static int cmdline_apic; + +void __init generic_bigsmp_probe(void) +{ + /* + * This routine is used to switch to bigsmp mode when + * - There is no apic= option specified by the user + * - generic_apic_probe() has choosen apic_default as the sub_arch + * - we find more than 8 CPUs in acpi LAPIC listing with xAPIC support + */ + + if (!cmdline_apic && genapic == &apic_default) + if (apic_bigsmp.probe()) { + genapic = &apic_bigsmp; + printk(KERN_INFO "Overriding APIC driver with %s\n", + genapic->name); + } +} + static void __init genapic_apic_force(char *str) { int i; @@ -41,7 +60,7 @@ void __init generic_apic_probe(void) { int i; - int changed = (genapic != NULL); + int changed = cmdline_apic = (genapic != NULL); for (i = 0; !changed && apic_probe[i]; i++) { if (apic_probe[i]->probe()) { diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/arch/x86/mpparse.c --- a/xen/arch/x86/mpparse.c Wed Nov 23 12:35:50 2005 +++ b/xen/arch/x86/mpparse.c Wed Nov 23 12:38:34 2005 @@ -62,6 +62,8 @@ int pic_mode; unsigned long mp_lapic_addr; + +unsigned int def_to_bigsmp; /* Processor that is doing the boot up */ unsigned int boot_cpu_physical_apicid = -1U; @@ -213,6 +215,13 @@ ver = 0x10; } apic_version[m->mpc_apicid] = ver; + if ((num_processors > 8) && + APIC_XAPIC(ver) && + (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL)) + def_to_bigsmp = 1; + else + def_to_bigsmp = 0; + bios_cpu_apicid[num_processors - 1] = m->mpc_apicid; } diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/common/xmalloc.c --- a/xen/common/xmalloc.c Wed Nov 23 12:35:50 2005 +++ b/xen/common/xmalloc.c Wed Nov 23 12:38:34 2005 @@ -111,9 +111,7 @@ unsigned long flags; /* We currently always return cacheline aligned. */ -#ifndef __ia64__ BUG_ON(align > SMP_CACHE_BYTES); -#endif /* Add room for header, pad to align next header. */ size += sizeof(struct xmalloc_hdr); diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/include/asm-x86/apicdef.h --- a/xen/include/asm-x86/apicdef.h Wed Nov 23 12:35:50 2005 +++ b/xen/include/asm-x86/apicdef.h Wed Nov 23 12:38:34 2005 @@ -16,6 +16,7 @@ #define GET_APIC_VERSION(x) ((x)&0xFF) #define GET_APIC_MAXLVT(x) (((x)>>16)&0xFF) #define APIC_INTEGRATED(x) ((x)&0xF0) +#define APIC_XAPIC(x) ((x) >= 0x14) #define APIC_TASKPRI 0x80 #define APIC_TPRI_MASK 0xFF #define APIC_ARBPRI 0x90 diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/include/asm-x86/mach-generic/mach_apic.h --- a/xen/include/asm-x86/mach-generic/mach_apic.h Wed Nov 23 12:35:50 2005 +++ b/xen/include/asm-x86/mach-generic/mach_apic.h Wed Nov 23 12:38:34 2005 @@ -28,4 +28,6 @@ #define enable_apic_mode (genapic->enable_apic_mode) #define phys_pkg_id (genapic->phys_pkg_id) +extern void generic_bigsmp_probe(void); + #endif /* __ASM_MACH_APIC_H */ diff -r 9cc161c08b59 -r 6d9ea03c1baa xen/include/asm-x86/mpspec.h --- a/xen/include/asm-x86/mpspec.h Wed Nov 23 12:35:50 2005 +++ b/xen/include/asm-x86/mpspec.h Wed Nov 23 12:38:34 2005 @@ -11,6 +11,7 @@ extern int quad_local_to_mp_bus_id [NR_CPUS/4][4]; extern int mp_bus_id_to_pci_bus [MAX_MP_BUSSES]; +extern unsigned int def_to_bigsmp; extern unsigned int boot_cpu_physical_apicid; extern int smp_found_config; extern void find_smp_config (void); diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/block-create/11_block_attach_shared_dom0.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/block-create/11_block_attach_shared_dom0.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,32 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Dan Smith <danms@xxxxxxxxxx> + +from XmTestLib import * + +# Mount /dev/ram0 + +s, o = traceCommand("mkfs /dev/ram0") +if s != 0: + FAIL("Unable to mkfs /dev/ram0") + +s, o = traceCommand("mkdir -p mnt"); +if s != 0: + FAIL("Unable to create ./mnt") + +s, o = traceCommand("mount /dev/ram0 mnt -o rw") +if s != 0: + FAIL("Unable to mount /dev/ram0 on ./mnt") + +# Now try to start a DomU with write access to /dev/ram0 + +domain = XmTestDomain(); +domain.configAddDisk("phy:/dev/ram0", "hda1", "w") + +try: + domain.start() + s, o = traceCommand("umount mnt") + FAIL("Bug #331: Started a DomU with write access to a rw mounted block device") +except DomainError, e: + s, o = traceCommand("umount mnt") diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/block-create/12_block_attach_shared_domU.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/block-create/12_block_attach_shared_domU.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,24 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Dan Smith <danms@xxxxxxxxxx> + +from XmTestLib import * + +dom1 = XmTestDomain() +dom2 = XmTestDomain(dom1.getName() + "-2") + +dom1.configAddDisk("phy:/dev/ram0", "hda1", "w") +dom2.configAddDisk("phy:/dev/ram0", "hda1", "w") + +try: + dom1.start() +except DomainError, e: + FAIL("Unable to start domain") + +try: + dom2.start() + FAIL("Bug #331: Started a DomU with write access to an in-use block device") +except DomainError, e: + pass + diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/01_network_attach_pos.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/01_network_attach_pos.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,48 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes <mfb@xxxxxxxxxx> + +import sys + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +## Real test +status, msg = network_attach(domain.getName(), console) +if status: + FAIL(msg) + + +## +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/02_network_attach_detach_pos.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,54 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes <mfb@xxxxxxxxxx> + +import sys +import re +import time + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +## Real test - attach and detach +status, msg = network_attach(domain.getName(), console) +if status: + FAIL(msg) + +status, msg = network_detach(domain.getName(), console) +if status: + FAIL(msg) + + + +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/03_network_attach_detach_multiple_pos.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,54 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes <mfb@xxxxxxxxxx> + +import sys +import re +import time + +from XmTestLib import * +from network_utils import * + +# Create a domain (default XmTestDomain, with our ramdisk) +domain = XmTestDomain() + +try: + domain.start() +except DomainError, e: + if verbose: + print "Failed to create test domain because:" + print e.extra + FAIL(str(e)) + +# Attach a console to it +try: + console = XmConsole(domain.getName(), historySaveCmds=True) +except ConsoleError, e: + FAIL(str(e)) + +try: + # Activate the console + console.sendInput("input") + # Run 'ls' + run = console.runCmd("ls") +except ConsoleError, e: + saveLog(console.getHistory()) + FAIL(str(e)) + +for i in range(10): + print "Attaching %d device" % i + status, msg = network_attach(domain.getName(), console) + if status: + FAIL(msg) + + print "Detaching %d device" % i + status, msg = network_detach(domain.getName(), console, i) + if status: + FAIL(msg) + +# Close the console +console.closeConsole() + +# Stop the domain (nice shutdown) +domain.stop() diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/04_network_attach_baddomain_neg.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,17 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes <mfb@xxxxxxxxxx> + +from XmTestLib import * + +status, output = traceCommand("xm network-attach NOT-EXIST") + +eyecatcher = "Error" +where = output.find(eyecatcher) +if status == 0: + FAIL("xm block-attach returned bad status, expected non 0, status is: %i" % status ) +elif where == -1: + FAIL("xm block-attach returned bad output, expected Error, output is: %s" % output ) + + diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/Makefile.am --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/Makefile.am Wed Nov 23 12:38:34 2005 @@ -0,0 +1,24 @@ + +SUBDIRS = + +TESTS = 01_network_attach_pos.test \ + 02_network_attach_detach_pos.test \ + 03_network_attach_detach_multiple_pos.test \ + 04_network_attach_baddomain_neg.test + +DISABLED = + +EXTRA_DIST = $(TESTS) $(XFAIL_TESTS) network_utils.py + +TESTS_ENVIRONMENT=@TENV@ + +%.test: %.py + cp $< $@ + chmod +x $@ + +clean-local: am_config_clean-local + +am_config_clean-local: + rm -f *test + rm -f *log + rm -f *~ diff -r 9cc161c08b59 -r 6d9ea03c1baa tools/xm-test/tests/network-attach/network_utils.py --- /dev/null Wed Nov 23 12:35:50 2005 +++ b/tools/xm-test/tests/network-attach/network_utils.py Wed Nov 23 12:38:34 2005 @@ -0,0 +1,37 @@ +#!/usr/bin/python + +# Copyright (C) International Business Machines Corp., 2005 +# Author: Murillo F. Bernardes <mfb@xxxxxxxxxx> + +from XmTestLib import * + +def count_eth(console): + try: + run = console.runCmd("ifconfig -a | grep eth") + except ConsoleError, e: + FAIL(str(e)) + return = len(run['output'].splitlines()) + +def network_attach(domain_name, console): + eths_before = count_eth(console) + status, output = traceCommand("xm network-attach %s" % domain_name) + if status != 0: + return -1, "xm network-attach returned invalid %i != 0" % status + + eths_after = count_eth(console) + if (eths_after != (eths_before+1)): + return -2, "Network device is not actually connected to domU" + + return 0, None + +def network_detach(domain_name, console, num=0): + eths_before = count_eth(console) + status, output = traceCommand("xm network-detach %s %d" % (domain_name, num)) + if status != 0: + return -1, "xm network-attach returned invalid %i != 0" % status + + eths_after = count_eth(console) + if eths_after != (eths_before-1): + return -2, "Network device was not actually disconnected from domU" + + return 0, None _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |