Hello community, here is the log from the commit of package xen for openSUSE:Factory checked in at 2012-04-02 19:50:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xen (Old) and /work/SRC/openSUSE:Factory/.xen.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/xen/xen.changes 2012-03-14 14:07:59.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.xen.new/xen.changes 2012-04-02 19:53:08.000000000 +0200 @@ -1,0 +2,26 @@ +Mon Apr 2 13:07:20 CEST 2012 - [email protected] + +- bnc#750679 - "ps2pdf xenapi.ps xenapi.pdf" fails for user abuild in Factory + add dummy xenapi.tex until ghostscript is fixed + +------------------------------------------------------------------- +Wed Mar 28 11:29:50 CEST 2012 - [email protected] + +- remove vcd.o rule from PVonHVM Makefile, not needed anymore + +------------------------------------------------------------------- +Tue Mar 20 14:14:09 MDT 2012 - [email protected] + +- bnc#753165 - xen/scripts/network-bridge wont create bridge + bridge-bonding.diff + +------------------------------------------------------------------- +Mon Mar 19 11:23:09 MDT 2012 - [email protected] + +- Upstream patches from Jan + 24950-gnttab-copy-mapped.patch + 24970-x86-cpuidle-deny-port-access.patch + 24996-x86-cpuidle-array-overrun.patch + 25041-tapdisk2-create-init-name.patch + +------------------------------------------------------------------- New: ---- 24950-gnttab-copy-mapped.patch 24970-x86-cpuidle-deny-port-access.patch 24996-x86-cpuidle-array-overrun.patch 25041-tapdisk2-create-init-name.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xen.spec ++++++ --- /var/tmp/diff_new_pack.i2Yiwa/_old 2012-04-02 19:53:17.000000000 +0200 +++ /var/tmp/diff_new_pack.i2Yiwa/_new 2012-04-02 19:53:17.000000000 +0200 @@ -16,7 +16,6 @@ # - Name: xen ExclusiveArch: %ix86 x86_64 %define xvers 4.1 @@ -84,10 +83,10 @@ BuildRequires: libgcc46 BuildRequires: libgcc46-32bit %endif -BuildRequires: glibc-32bit -BuildRequires: glibc-devel-32bit BuildRequires: gcc-32bit BuildRequires: gcc43-32bit +BuildRequires: glibc-32bit +BuildRequires: glibc-devel-32bit %define max_cpus 256 %define pae_enabled n %else @@ -363,6 +362,10 @@ Patch24886: 24886-x86-vmce-mcg_ctl-default.patch Patch24887: 24887-x86-vmce-sr.patch Patch24888: 24888-pci-release-devices.patch +Patch24950: 24950-gnttab-copy-mapped.patch +Patch24970: 24970-x86-cpuidle-deny-port-access.patch +Patch24996: 24996-x86-cpuidle-array-overrun.patch +Patch25041: 25041-tapdisk2-create-init-name.patch # Upstream qemu patches Patch100: ioemu-9868-MSI-X.patch Patch101: ioemu-9869-MSI-X-init.patch @@ -534,7 +537,6 @@ %suse_kernel_module_package -n xen um xen -f kmp_filelist %endif - %description Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -594,7 +596,6 @@ Group: System/Kernel #Requires: xen = %{version} - %description libs Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -640,17 +641,22 @@ %if %{?with_dom0_support}0 - %package tools Summary: Xen Virtualization: Control tools for domain 0 Group: System/Kernel +Requires: bridge-utils +Requires: multipath-tools +Requires: python +Requires: python-curses +Requires: python-lxml +Requires: python-openssl +Requires: python-pam +Requires: python-xml Requires: xen-libs = %{version} -Requires: bridge-utils multipath-tools python python-curses python-openssl python-pam python-xml python-lxml # subpackage existed in 10.3 Provides: xen-tools-ioemu = 3.2 Obsoletes: xen-tools-ioemu <= 3.2 - %description tools Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -698,13 +704,11 @@ Ian Pratt <[email protected]> %endif - %package tools-domU Summary: Xen Virtualization: Control tools for domain U Group: System/Kernel Conflicts: xen-tools - %description tools-domU Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -724,7 +728,6 @@ Group: System/Kernel Requires: xen-libs = %{version} - %description devel Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -770,13 +773,11 @@ %if %{?with_kmp}0 - %package KMP Summary: Xen para-virtual device drivers for fully virtualized guests Group: System/Kernel Conflicts: xen - %description KMP Xen para-virtual device drivers for fully virtualized guests @@ -822,12 +823,10 @@ %if %{?with_dom0_support}0 - %package doc-html Summary: Xen Virtualization: HTML documentation Group: Documentation/HTML - %description doc-html Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -846,7 +845,6 @@ Summary: Xen Virtualization: PDF documentation Group: Documentation/Other - %description doc-pdf Xen is a virtual machine monitor for x86 that supports execution of multiple guest operating systems with unprecedented levels of @@ -863,7 +861,6 @@ Ian Pratt <[email protected]> %endif - %prep %setup -q -n %xen_build_dir -a 1 -a 20000 %patch20000 -p1 @@ -1086,6 +1083,10 @@ %patch24886 -p1 %patch24887 -p1 %patch24888 -p1 +%patch24950 -p1 +%patch24970 -p1 +%patch24996 -p1 +%patch25041 -p1 # Qemu %patch100 -p1 %patch101 -p1 @@ -1243,8 +1244,20 @@ %patch99998 -p1 %patch99999 -p1 - %build +# https://bugzilla.novell.com/show_bug.cgi?id=750679 + +cat > docs/xen-api/xenapi.tex <<-EOF +\\documentclass{article} +\\begin{document} +Hello World +\\newline +https://bugzilla.novell.com/show\_bug.cgi?id=750679 +\\end{document} +EOF +cat docs/xen-api/xenapi.tex +# + XEN_EXTRAVERSION=%version-%release XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}} sed -i "s/XEN_EXTRAVERSION[\t ]*.=.*\$/XEN_EXTRAVERSION = $XEN_EXTRAVERSION/" xen/Makefile @@ -1279,7 +1292,6 @@ done %endif - %install export CFLAGS="$RPM_OPT_FLAGS" %if %{?with_dom0_support}0 @@ -1482,7 +1494,6 @@ %if %{?with_dom0_support}0 - %files -f xen.files.txt %defattr(-,root,root) /boot/xen-%{version}-%{release}.gz @@ -1499,7 +1510,6 @@ /boot/xen.gz %endif - %files libs %defattr(-,root,root) %{_libdir}/fs/ @@ -1507,7 +1517,6 @@ %if %{?with_dom0_support}0 - %files tools %defattr(-,root,root) /usr/bin/xenalyze @@ -1611,14 +1620,12 @@ %config %{_fwdefdir}/xend-relocation-server %endif - %files tools-domU %defattr(-,root,root) /usr/bin/xen-detect /bin/domu-xenstore /bin/xenstore-* - %files devel %defattr(-,root,root) %{_bindir}/serial-split @@ -1628,12 +1635,10 @@ %if %{?with_dom0_support}0 - %files doc-html %defattr(-,root,root) %{_defaultdocdir}/xen/html - %files doc-pdf %defattr(-,root,root) %{_defaultdocdir}/xen/pdf @@ -1641,7 +1646,6 @@ %if %{?with_dom0_support}0 - %post tools %if %{?with_xend}0 # with_xend @@ -1687,11 +1691,9 @@ ln -s /usr/bin/qemu-nbd /usr/bin/qemu-nbd-xen fi - %preun tools %{stop_on_removal xendomains xend xencommons} - %postun tools %if %{?with_xend}0 # with_xend @@ -1706,12 +1708,8 @@ fi %endif - %post libs -p /sbin/ldconfig - %postun libs -p /sbin/ldconfig - - %changelog ++++++ 24888-pci-release-devices.patch ++++++ --- /var/tmp/diff_new_pack.i2Yiwa/_old 2012-04-02 19:53:17.000000000 +0200 +++ /var/tmp/diff_new_pack.i2Yiwa/_new 2012-04-02 19:53:17.000000000 +0200 @@ -16,9 +16,21 @@ Signed-off-by: Jan Beulich <[email protected]> Acked-by: Keir Fraser <[email protected]> +# HG changeset patch +# User Jan Beulich <[email protected]> +# Date 1331114358 -3600 +# Node ID f234e34ea28f753bba92980f367cf545666d69a1 +# Parent e0d944b501512fe3b9866f79e95ad0f29cd5caca +passthrough: fix domain ref leak after 24888:71159fb049f2 + +As pointed out by Keir. + +Signed-off-by: Jan Beulich <[email protected]> +Acked-by: Keir Fraser <[email protected]> + --- a/xen/arch/ia64/xen/dom0_ops.c +++ b/xen/arch/ia64/xen/dom0_ops.c -@@ -330,7 +330,8 @@ long arch_do_domctl(xen_domctl_t *op, XE +@@ -330,10 +330,13 @@ long arch_do_domctl(xen_domctl_t *op, XE break; ret = -EINVAL; @@ -28,6 +40,19 @@ { gdprintk(XENLOG_ERR, "XEN_DOMCTL_assign_device: get_domain_by_id() failed\n"); ++ if ( d ) ++ put_domain(d); + break; + } + bus = (op->u.assign_device.machine_bdf >> 16) & 0xff; +@@ -344,6 +347,7 @@ long arch_do_domctl(xen_domctl_t *op, XE + gdprintk(XENLOG_ERR, "XEN_DOMCTL_assign_device: " + "%x:%x.%x already assigned, or non-existent\n", + bus, PCI_SLOT(devfn), PCI_FUNC(devfn)); ++ put_domain(d); + break; + } + --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -671,10 +671,8 @@ void arch_domain_destroy(struct domain * @@ -72,7 +97,7 @@ --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c -@@ -828,7 +828,8 @@ long arch_do_domctl( +@@ -828,10 +828,13 @@ long arch_do_domctl( break; ret = -EINVAL; @@ -82,3 +107,8 @@ { gdprintk(XENLOG_ERR, "XEN_DOMCTL_assign_device: get_domain_by_id() failed\n"); ++ if ( d ) ++ goto assign_device_out; + break; + } + ++++++ 24950-gnttab-copy-mapped.patch ++++++ # HG changeset patch # User Wei Liu <[email protected]> # Date 1330619838 0 # Node ID 9ef985f5e6a57d2e78d27c5f0f64e6a049d8d1ff # Parent ce5ef8a192c1050d85580305921d2e5caf220461 Grant table: fix a bug when grant copying a previous grant mapped page. In grant table version 2, when we create a non-transitive mapping from DomU to Dom0, we need to set active entry's trans_domain and trans_ref. Otherwise when we grant copy from this previous mapped ref, preemption count will get messed up. See changeset 22994:299ed79acecf for more information. Signed-off-by: Wei Liu <[email protected]> --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -574,6 +574,8 @@ __gnttab_map_grant_ref( act->start = 0; act->length = PAGE_SIZE; act->is_sub_page = 0; + act->trans_dom = op->dom; + act->trans_gref = op->ref; } } ++++++ 24970-x86-cpuidle-deny-port-access.patch ++++++ # HG changeset patch # User Jan Beulich <[email protected]> # Date 1331048501 -3600 # Node ID 33980e36597b9f780ef515210863034b5e3080bf # Parent fb70e48ee3c2ea7060a97d9ddaa6dfc864f1efc0 x86/cpuidle: deny access to the I/O port used for EM_SYSIO Nothing, not even Dom0, should fiddle with this. Signed-off-by: Jan Beulich <[email protected]> Acked-by: Keir Fraser <[email protected]> --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -44,6 +44,7 @@ #include <xen/sched-if.h> #include <asm/cache.h> #include <asm/io.h> +#include <asm/iocap.h> #include <asm/hpet.h> #include <asm/processor.h> #include <xen/pmstat.h> @@ -885,6 +886,9 @@ static void set_cx( cx->entry_method = ACPI_CSTATE_EM_HALT; break; case ACPI_ADR_SPACE_SYSTEM_IO: + if ( ioports_deny_access(dom0, cx->address, cx->address) ) + printk(XENLOG_WARNING "Could not deny access to port %04x\n", + cx->address); cx->entry_method = ACPI_CSTATE_EM_SYSIO; break; default: ++++++ 24996-x86-cpuidle-array-overrun.patch ++++++ # HG changeset patch # User Eric Chanudet <[email protected]> # Date 1331222672 -3600 # Node ID 396801f25e922bdf1db5fd644435f46407586524 # Parent 66de4220113e937811529b12ea7f6427c0848630 XENPF_set_processor_pminfo XEN_PM_CX overflows states array Calling XENPF_set_processor_pminfo with XEN_PM_CX could cause states array in "struct acpi_processor_power" to exceed its limit. The array used to be reset (by function cpuidle_init_cpu()) for each hypercall. The patch puts it back that way and adds an assertion to make it clear in case that happens again. Signed-off-by: Eric Chanudet <[email protected]> - convert assertion to printk() & bail - eliminate struct acpi_processor_cx's valid member (not read anymore) - further adjustments to one-time-only vs each-time operations in cpuidle_init_cpu() - don't use ACPI_STATE_Cn as array index anymore Signed-off-by: Jan Beulich <[email protected]> Acked-by: Keir Fraser <[email protected]> --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -70,10 +70,8 @@ static void lapic_timer_nop(void) { } static void (*lapic_timer_off)(void); static void (*lapic_timer_on)(void); -static uint64_t (*get_tick)(void); -static uint64_t (*ticks_elapsed)(uint64_t t1, uint64_t t2); -static uint64_t (*tick_to_ns)(uint64_t ticks); -static uint64_t (*ns_to_tick)(uint64_t ticks); +static uint64_t (*__read_mostly tick_to_ns)(uint64_t) = acpi_pm_tick_to_ns; +static uint64_t (*__read_mostly ns_to_tick)(uint64_t) = ns_to_acpi_pm_tick; extern void (*pm_idle) (void); extern void (*dead_idle) (void); @@ -224,6 +222,10 @@ static uint64_t acpi_pm_ticks_elapsed(ui return ((0xFFFFFFFF - t1) + t2 +1); } +static uint64_t (*__read_mostly get_tick)(void) = get_acpi_pm_tick; +static uint64_t (*__read_mostly ticks_elapsed)(uint64_t, uint64_t) + = acpi_pm_ticks_elapsed; + #define MWAIT_ECX_INTERRUPT_BREAK (0x1) /* @@ -609,7 +611,16 @@ static int cpuidle_init_cpu(int cpu) acpi_power = processor_powers[cpu]; if ( !acpi_power ) { - int i; + unsigned int i; + + if ( cpu == 0 && boot_cpu_has(X86_FEATURE_NONSTOP_TSC) ) + { + get_tick = get_stime_tick; + ticks_elapsed = stime_ticks_elapsed; + tick_to_ns = stime_tick_to_ns; + ns_to_tick = ns_to_stime_tick; + } + acpi_power = xmalloc(struct acpi_processor_power); if ( !acpi_power ) return -ENOMEM; @@ -617,36 +628,15 @@ static int cpuidle_init_cpu(int cpu) for ( i = 0; i < ACPI_PROCESSOR_MAX_POWER; i++ ) acpi_power->states[i].idx = i; - - acpi_power->states[ACPI_STATE_C1].type = ACPI_STATE_C1; - acpi_power->states[ACPI_STATE_C1].entry_method = ACPI_CSTATE_EM_HALT; - - acpi_power->states[ACPI_STATE_C0].valid = 1; - acpi_power->states[ACPI_STATE_C1].valid = 1; - - acpi_power->count = 2; - acpi_power->safe_state = &acpi_power->states[ACPI_STATE_C1]; + acpi_power->cpu = cpu; processor_powers[cpu] = acpi_power; } - if ( cpu == 0 ) - { - if ( boot_cpu_has(X86_FEATURE_NONSTOP_TSC) ) - { - get_tick = get_stime_tick; - ticks_elapsed = stime_ticks_elapsed; - tick_to_ns = stime_tick_to_ns; - ns_to_tick = ns_to_stime_tick; - } - else - { - get_tick = get_acpi_pm_tick; - ticks_elapsed = acpi_pm_ticks_elapsed; - tick_to_ns = acpi_pm_tick_to_ns; - ns_to_tick = ns_to_acpi_pm_tick; - } - } + acpi_power->count = 2; + acpi_power->states[1].type = ACPI_STATE_C1; + acpi_power->states[1].entry_method = ACPI_CSTATE_EM_HALT; + acpi_power->safe_state = &acpi_power->states[1]; return 0; } @@ -863,17 +853,25 @@ static void set_cx( if ( check_cx(acpi_power, xen_cx) != 0 ) return; - if ( xen_cx->type == ACPI_STATE_C1 ) + switch ( xen_cx->type ) + { + case ACPI_STATE_C1: cx = &acpi_power->states[1]; - else - cx = &acpi_power->states[acpi_power->count]; - - if ( !cx->valid ) - acpi_power->count++; + break; + default: + if ( acpi_power->count >= ACPI_PROCESSOR_MAX_POWER ) + { + case ACPI_STATE_C0: + printk(XENLOG_WARNING "CPU%u: C%d data ignored\n", + acpi_power->cpu, xen_cx->type); + return; + } + cx = &acpi_power->states[acpi_power->count++]; + cx->type = xen_cx->type; + break; + } - cx->valid = 1; - cx->type = xen_cx->type; - cx->address = xen_cx->reg.address; + cx->address = xen_cx->reg.address; switch ( xen_cx->reg.space_id ) { --- a/xen/include/xen/cpuidle.h +++ b/xen/include/xen/cpuidle.h @@ -40,7 +40,6 @@ struct acpi_processor_cx { u8 idx; - u8 valid; u8 type; u32 address; u8 entry_method; /* ACPI_CSTATE_EM_xxx */ ++++++ 25041-tapdisk2-create-init-name.patch ++++++ # HG changeset patch # User Jan Beulich <[email protected]> # Date 1331725244 0 # Node ID 20c8a7db63d160e95fcf5c8e2f9d31923d336316 # Parent e8660d8cf4be332e53cf6e2765f21804e3bfe28e tapdisk2: initialize 'name' parameter of BLKTAP2_IOCTL_CREATE_DEVICE This keeps the kernel driver from printing garbage. Signed-off-by: Jan Beulich <[email protected]> Acked-by: Ian Jackson <[email protected]> Committed-by: Ian Jackson <[email protected]> --- a/tools/blktap2/drivers/tapdisk-control.c +++ b/tools/blktap2/drivers/tapdisk-control.c @@ -462,6 +462,7 @@ tapdisk_control_open_image(struct tapdis params.capacity = image.size; params.sector_size = image.secsize; + strncpy(params.name, vbd->name, BLKTAP2_MAX_MESSAGE_LEN); err = ioctl(vbd->ring.fd, BLKTAP2_IOCTL_CREATE_DEVICE, ¶ms); if (err && errno != EEXIST) { ++++++ bridge-bonding.diff ++++++ --- /var/tmp/diff_new_pack.i2Yiwa/_old 2012-04-02 19:53:17.000000000 +0200 +++ /var/tmp/diff_new_pack.i2Yiwa/_new 2012-04-02 19:53:17.000000000 +0200 @@ -40,7 +40,7 @@ + ip link set ${netdev} name ${pdev} + ip link set ${tdev} name ${bridge} + -+ setup_bridge_port ${pdev} ++ _setup_bridge_port ${pdev} + + # Restore slaves + if [ -n "${slaves}" ]; then ++++++ pv-driver-build.patch ++++++ --- /var/tmp/diff_new_pack.i2Yiwa/_old 2012-04-02 19:53:18.000000000 +0200 +++ /var/tmp/diff_new_pack.i2Yiwa/_new 2012-04-02 19:53:18.000000000 +0200 @@ -1,10 +1,3 @@ ---- xen-4.1.2-testing.orig/unmodified_drivers/linux-2.6/blkfront/Kbuild -+++ xen-4.1.2-testing/unmodified_drivers/linux-2.6/blkfront/Kbuild -@@ -3,3 +3,4 @@ include $(M)/overrides.mk - obj-m += xen-vbd.o - - xen-vbd-objs := blkfront.o vbd.o -+xen-vbd-objs += $(patsubst %.c,%.o,$(notdir $(wildcard $(src)/vcd.c))) --- xen-4.1.2-testing.orig/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h +++ xen-4.1.2-testing/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h @@ -161,4 +161,14 @@ typedef irqreturn_t (*irq_handler_t)(int ++++++ xen-warnings-unused.diff ++++++ --- /var/tmp/diff_new_pack.i2Yiwa/_old 2012-04-02 19:53:18.000000000 +0200 +++ /var/tmp/diff_new_pack.i2Yiwa/_new 2012-04-02 19:53:18.000000000 +0200 @@ -1,7 +1,5 @@ -Index: xen-4.1.2-testing/tools/libxc/xc_tmem.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxc/xc_tmem.c -+++ xen-4.1.2-testing/tools/libxc/xc_tmem.c +--- a/tools/libxc/xc_tmem.c ++++ b/tools/libxc/xc_tmem.c @@ -390,7 +390,8 @@ static int xc_tmem_restore_new_pool( int xc_tmem_restore(xc_interface *xch, int dom, int io_fd) @@ -12,10 +10,8 @@ uint32_t this_max_pools, this_version; uint32_t pool_id; uint32_t minusone; -Index: xen-4.1.2-testing/tools/libxc/xc_domain_restore.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxc/xc_domain_restore.c -+++ xen-4.1.2-testing/tools/libxc/xc_domain_restore.c +--- a/tools/libxc/xc_domain_restore.c ++++ b/tools/libxc/xc_domain_restore.c @@ -1087,7 +1087,6 @@ int xc_domain_restore(xc_interface *xch, int vcpuextstate = 0; uint32_t vcpuextstate_size = 0; @@ -32,10 +28,8 @@ n = m = 0; loadpages: -Index: xen-4.1.2-testing/tools/misc/gtraceview.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/misc/gtraceview.c -+++ xen-4.1.2-testing/tools/misc/gtraceview.c +--- a/tools/misc/gtraceview.c ++++ b/tools/misc/gtraceview.c @@ -622,7 +622,8 @@ void crt_init(void) void nr_addch(int nr, int ch) { @@ -46,10 +40,8 @@ getyx(stdscr, y, x); for (i = 0; i < nr; i++) { if (x == COLS-1) -Index: xen-4.1.2-testing/tools/xcutils/xc_restore.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/xcutils/xc_restore.c -+++ xen-4.1.2-testing/tools/xcutils/xc_restore.c +--- a/tools/xcutils/xc_restore.c ++++ b/tools/xcutils/xc_restore.c @@ -19,7 +19,8 @@ int main(int argc, char **argv) { @@ -60,10 +52,8 @@ xc_interface *xch; int io_fd, ret; int superpages; -Index: xen-4.1.2-testing/tools/firmware/rombios/32bit/tcgbios/tcgbios.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/firmware/rombios/32bit/tcgbios/tcgbios.c -+++ xen-4.1.2-testing/tools/firmware/rombios/32bit/tcgbios/tcgbios.c +--- a/tools/firmware/rombios/32bit/tcgbios/tcgbios.c ++++ b/tools/firmware/rombios/32bit/tcgbios/tcgbios.c @@ -1064,7 +1064,7 @@ uint32_t HashLogEvent32(struct hlei *hle uint32_t rc = 0; uint16_t size; @@ -73,10 +63,8 @@ uint32_t hashdataptr; uint32_t hashdatalen; -Index: xen-4.1.2-testing/tools/console/client/main.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/console/client/main.c -+++ xen-4.1.2-testing/tools/console/client/main.c +--- a/tools/console/client/main.c ++++ b/tools/console/client/main.c @@ -277,7 +277,8 @@ int main(int argc, char **argv) }; @@ -87,10 +75,8 @@ struct xs_handle *xs; char *end; console_type type = CONSOLE_INVAL; -Index: xen-4.1.2-testing/tools/xenstat/xentop/xentop.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/xenstat/xentop/xentop.c -+++ xen-4.1.2-testing/tools/xenstat/xentop/xentop.c +--- a/tools/xenstat/xentop/xentop.c ++++ b/tools/xenstat/xentop/xentop.c @@ -272,7 +272,8 @@ static void fail(const char *str) /* Return the row containing the cursor. */ static int current_row(void) @@ -111,11 +97,9 @@ getmaxyx(stdscr, y, x); return y; } -Index: xen-4.1.2-testing/tools/libxl/libxlu_cfg.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/libxlu_cfg.c -+++ xen-4.1.2-testing/tools/libxl/libxlu_cfg.c -@@ -348,7 +348,7 @@ char *xlu__cfgl_dequote(CfgParseContext +--- a/tools/libxl/libxlu_cfg.c ++++ b/tools/libxl/libxlu_cfg.c +@@ -348,7 +348,7 @@ char *xlu__cfgl_dequote(CfgParseContext #define NUMERIC_CHAR(minlen,maxlen,base,basetext) do{ \ char numbuf[(maxlen)+1], *ep; \ @@ -124,11 +108,9 @@ \ strncpy(numbuf,p,(maxlen)); \ numbuf[(maxlen)]= 0; \ -Index: xen-4.1.2-testing/tools/libxl/libxl.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/libxl.c -+++ xen-4.1.2-testing/tools/libxl/libxl.c -@@ -221,7 +221,7 @@ int libxl_domain_rename(libxl_ctx *ctx, +--- a/tools/libxl/libxl.c ++++ b/tools/libxl/libxl.c +@@ -221,7 +221,7 @@ int libxl_domain_rename(libxl_ctx *ctx, int libxl_domain_resume(libxl_ctx *ctx, uint32_t domid) { libxl__gc gc = LIBXL_INIT_GC(ctx); @@ -155,10 +137,8 @@ libxl__sprintf(&gc, "%s/device/vif", dompath), &nb_nics); if (!l) goto err; -Index: xen-4.1.2-testing/tools/libxl/libxl_pci.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/libxl_pci.c -+++ xen-4.1.2-testing/tools/libxl/libxl_pci.c +--- a/tools/libxl/libxl_pci.c ++++ b/tools/libxl/libxl_pci.c @@ -240,7 +240,7 @@ static int libxl_create_pci_backend(libx flexarray_t *front = NULL; flexarray_t *back = NULL; @@ -177,10 +157,8 @@ LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Creating pci backend"); /* add pci device */ -Index: xen-4.1.2-testing/tools/libxl/libxl_dom.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/libxl_dom.c -+++ xen-4.1.2-testing/tools/libxl/libxl_dom.c +--- a/tools/libxl/libxl_dom.c ++++ b/tools/libxl/libxl_dom.c @@ -265,14 +265,13 @@ int libxl__build_hvm(libxl_ctx *ctx, uin libxl_domain_build_info *info, libxl_domain_build_state *state) { @@ -205,10 +183,8 @@ out: libxl__free_all(&gc); return 0; -Index: xen-4.1.2-testing/tools/libxl/libxl_utils.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/libxl_utils.c -+++ xen-4.1.2-testing/tools/libxl/libxl_utils.c +--- a/tools/libxl/libxl_utils.c ++++ b/tools/libxl/libxl_utils.c @@ -531,7 +531,7 @@ int libxl_devid_to_device_disk(libxl_ctx libxl__gc gc = LIBXL_INIT_GC(ctx); char *val; @@ -218,10 +194,8 @@ int rc = ERROR_INVAL; devid_n = libxl__device_disk_dev_number(devid); -Index: xen-4.1.2-testing/tools/libxl/xl_cmdimpl.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/libxl/xl_cmdimpl.c -+++ xen-4.1.2-testing/tools/libxl/xl_cmdimpl.c +--- a/tools/libxl/xl_cmdimpl.c ++++ b/tools/libxl/xl_cmdimpl.c @@ -5448,7 +5448,7 @@ int main_cpupoollist(int argc, char **ar {"cpus", 0, 0, 'c'}, {0, 0, 0, 0} @@ -231,10 +205,8 @@ int opt_cpus = 0; const char *pool = NULL; libxl_cpupoolinfo *poolinfo; -Index: xen-4.1.2-testing/tools/debugger/gdbsx/gx/gx_comm.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/debugger/gdbsx/gx/gx_comm.c -+++ xen-4.1.2-testing/tools/debugger/gdbsx/gx/gx_comm.c +--- a/tools/debugger/gdbsx/gx/gx_comm.c ++++ b/tools/debugger/gdbsx/gx/gx_comm.c @@ -163,7 +163,7 @@ readchar(void) static char buf[BUFSIZ]; static int bufcnt = 0; @@ -244,10 +216,8 @@ if (bufcnt-- > 0) return *bufp++ & 0x7f; -Index: xen-4.1.2-testing/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c -+++ xen-4.1.2-testing/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c +--- a/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c ++++ b/tools/python/xen/lowlevel/checkpoint/libcheckpoint.c @@ -820,7 +820,7 @@ static int create_suspend_thread(checkpo static void stop_suspend_thread(checkpoint_state* s) @@ -257,10 +227,8 @@ s->done = 1; -Index: xen-4.1.2-testing/tools/python/xen/lowlevel/netlink/libnetlink.c -=================================================================== ---- xen-4.1.2-testing.orig/tools/python/xen/lowlevel/netlink/libnetlink.c -+++ xen-4.1.2-testing/tools/python/xen/lowlevel/netlink/libnetlink.c +--- a/tools/python/xen/lowlevel/netlink/libnetlink.c ++++ b/tools/python/xen/lowlevel/netlink/libnetlink.c @@ -433,7 +433,8 @@ int rtnl_from_file(FILE *rtnl, rtnl_filt nladdr.nl_groups = 0; @@ -271,10 +239,8 @@ int l; status = fread(&buf, 1, sizeof(*h), rtnl); -Index: xen-4.1.2-testing/xen/arch/x86/msi.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/msi.c -+++ xen-4.1.2-testing/xen/arch/x86/msi.c +--- a/xen/arch/x86/msi.c ++++ b/xen/arch/x86/msi.c @@ -799,7 +799,7 @@ static void __pci_disable_msi(struct msi { struct pci_dev *dev; @@ -284,10 +250,8 @@ u8 bus, slot, func; dev = entry->dev; -Index: xen-4.1.2-testing/xen/common/cpupool.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/cpupool.c -+++ xen-4.1.2-testing/xen/common/cpupool.c +--- a/xen/common/cpupool.c ++++ b/xen/common/cpupool.c @@ -356,7 +356,7 @@ int cpupool_add_domain(struct domain *d, { struct cpupool *c; @@ -308,11 +272,9 @@ if ( d->cpupool == NULL ) return; -Index: xen-4.1.2-testing/xen/common/grant_table.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/grant_table.c -+++ xen-4.1.2-testing/xen/common/grant_table.c -@@ -767,7 +767,7 @@ __gnttab_unmap_common( +--- a/xen/common/grant_table.c ++++ b/xen/common/grant_table.c +@@ -769,7 +769,7 @@ __gnttab_unmap_common( struct domain *ld, *rd; struct active_grant_entry *act; s16 rc = 0; @@ -321,10 +283,8 @@ ld = current->domain; -Index: xen-4.1.2-testing/xen/common/kexec.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/kexec.c -+++ xen-4.1.2-testing/xen/common/kexec.c +--- a/xen/common/kexec.c ++++ b/xen/common/kexec.c @@ -573,7 +573,8 @@ static int kexec_exec(XEN_GUEST_HANDLE(v { xen_kexec_exec_t exec; @@ -335,10 +295,8 @@ if ( unlikely(copy_from_guest(&exec, uarg, 1)) ) return -EFAULT; -Index: xen-4.1.2-testing/xen/drivers/passthrough/vtd/intremap.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/drivers/passthrough/vtd/intremap.c -+++ xen-4.1.2-testing/xen/drivers/passthrough/vtd/intremap.c +--- a/xen/drivers/passthrough/vtd/intremap.c ++++ b/xen/drivers/passthrough/vtd/intremap.c @@ -367,7 +367,7 @@ unsigned int io_apic_read_remap_rte( unsigned int ioapic_pin = (reg - 0x10) / 2; int index; @@ -357,10 +315,8 @@ iommu = drhd->iommu; qi_ctrl = iommu_qi_ctrl(iommu); -Index: xen-4.1.2-testing/xen/common/sched_credit2.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/sched_credit2.c -+++ xen-4.1.2-testing/xen/common/sched_credit2.c +--- a/xen/common/sched_credit2.c ++++ b/xen/common/sched_credit2.c @@ -1854,7 +1854,8 @@ static void deactivate_runqueue(struct c static void init_pcpu(const struct scheduler *ops, int cpu) @@ -371,11 +327,9 @@ struct csched_private *prv = CSCHED_PRIV(ops); struct csched_runqueue_data *rqd; spinlock_t *old_lock; -Index: xen-4.1.2-testing/xen/common/unlzo.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/unlzo.c -+++ xen-4.1.2-testing/xen/common/unlzo.c -@@ -68,7 +68,7 @@ static int INIT parse_header(u8 *input, +--- a/xen/common/unlzo.c ++++ b/xen/common/unlzo.c +@@ -68,7 +68,7 @@ static int INIT parse_header(u8 *input, { int l; u8 *parse = input; @@ -384,10 +338,8 @@ u16 version; /* read magic: 9 first bits */ -Index: xen-4.1.2-testing/xen/arch/x86/time.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/time.c -+++ xen-4.1.2-testing/xen/arch/x86/time.c +--- a/xen/arch/x86/time.c ++++ b/xen/arch/x86/time.c @@ -1009,7 +1009,8 @@ static void local_time_calibration(void) * System timestamps, extrapolated from local and master oscillators, * taken during this calibration and the previous calibration. @@ -398,10 +350,8 @@ s_time_t prev_master_stime, curr_master_stime; /* TSC timestamps taken during this calibration and prev calibration. */ -Index: xen-4.1.2-testing/xen/arch/x86/cpu/amd.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/cpu/amd.c -+++ xen-4.1.2-testing/xen/arch/x86/cpu/amd.c +--- a/xen/arch/x86/cpu/amd.c ++++ b/xen/arch/x86/cpu/amd.c @@ -391,7 +391,7 @@ static void __devinit init_amd(struct cp { u32 l, h; @@ -411,11 +361,9 @@ #ifdef CONFIG_SMP unsigned long long value; -Index: xen-4.1.2-testing/xen/arch/x86/mm/p2m.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/mm/p2m.c -+++ xen-4.1.2-testing/xen/arch/x86/mm/p2m.c -@@ -2339,7 +2339,7 @@ p2m_remove_page(struct p2m_domain *p2m, +--- a/xen/arch/x86/mm/p2m.c ++++ b/xen/arch/x86/mm/p2m.c +@@ -2339,7 +2339,7 @@ p2m_remove_page(struct p2m_domain *p2m, unsigned int page_order) { unsigned long i; @@ -433,10 +381,8 @@ int pod_count = 0; int rc = 0; -Index: xen-4.1.2-testing/xen/arch/x86/hvm/emulate.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/hvm/emulate.c -+++ xen-4.1.2-testing/xen/arch/x86/hvm/emulate.c +--- a/xen/arch/x86/hvm/emulate.c ++++ b/xen/arch/x86/hvm/emulate.c @@ -59,7 +59,7 @@ static int hvmemul_do_io( ioreq_t *p = get_ioreq(curr); unsigned long ram_gfn = paddr_to_pfn(ram_gpa); @@ -446,10 +392,8 @@ int rc; /* Check for paged out page */ -Index: xen-4.1.2-testing/xen/arch/x86/hvm/hvm.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/hvm/hvm.c -+++ xen-4.1.2-testing/xen/arch/x86/hvm/hvm.c +--- a/xen/arch/x86/hvm/hvm.c ++++ b/xen/arch/x86/hvm/hvm.c @@ -253,7 +253,8 @@ void hvm_migrate_timers(struct vcpu *v) void hvm_migrate_pirqs(struct vcpu *v) @@ -469,11 +413,9 @@ mfn = gfn_to_mfn_unshare(p2m, pfn, &t, 0); if ( p2m_is_paging(t) ) { -Index: xen-4.1.2-testing/xen/arch/x86/acpi/cpu_idle.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/acpi/cpu_idle.c -+++ xen-4.1.2-testing/xen/arch/x86/acpi/cpu_idle.c -@@ -276,7 +276,7 @@ static void acpi_processor_ffh_cstate_en +--- a/xen/arch/x86/acpi/cpu_idle.c ++++ b/xen/arch/x86/acpi/cpu_idle.c +@@ -279,7 +279,7 @@ static void acpi_processor_ffh_cstate_en static void acpi_idle_do_entry(struct acpi_processor_cx *cx) { @@ -482,10 +424,8 @@ switch ( cx->entry_method ) { -Index: xen-4.1.2-testing/xen/arch/x86/cpu/intel_cacheinfo.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/cpu/intel_cacheinfo.c -+++ xen-4.1.2-testing/xen/arch/x86/cpu/intel_cacheinfo.c +--- a/xen/arch/x86/cpu/intel_cacheinfo.c ++++ b/xen/arch/x86/cpu/intel_cacheinfo.c @@ -170,7 +170,8 @@ unsigned int __cpuinit init_intel_cachei unsigned int trace = 0, l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */ unsigned int new_l1d = 0, new_l1i = 0; /* Cache sizes from cpuid(4) */ @@ -496,11 +436,9 @@ if (c->cpuid_level > 3) { static int is_initialized; -Index: xen-4.1.2-testing/xen/arch/x86/mm/mem_sharing.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/mm/mem_sharing.c -+++ xen-4.1.2-testing/xen/arch/x86/mm/mem_sharing.c -@@ -375,7 +375,7 @@ int mem_sharing_debug_gfn(struct domain +--- a/xen/arch/x86/mm/mem_sharing.c ++++ b/xen/arch/x86/mm/mem_sharing.c +@@ -375,7 +375,7 @@ int mem_sharing_debug_gfn(struct domain { p2m_type_t p2mt; mfn_t mfn; @@ -509,10 +447,8 @@ mfn = gfn_to_mfn(p2m_get_hostp2m(d), gfn, &p2mt); page = mfn_to_page(mfn); -Index: xen-4.1.2-testing/xen/arch/x86/hvm/viridian.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/hvm/viridian.c -+++ xen-4.1.2-testing/xen/arch/x86/hvm/viridian.c +--- a/xen/arch/x86/hvm/viridian.c ++++ b/xen/arch/x86/hvm/viridian.c @@ -270,7 +270,7 @@ int rdmsr_viridian_regs(uint32_t idx, ui int viridian_hypercall(struct cpu_user_regs *regs) { @@ -522,10 +458,8 @@ uint16_t status = HV_STATUS_SUCCESS; union hypercall_input { -Index: xen-4.1.2-testing/xen/arch/x86/mm.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/mm.c -+++ xen-4.1.2-testing/xen/arch/x86/mm.c +--- a/xen/arch/x86/mm.c ++++ b/xen/arch/x86/mm.c @@ -4914,7 +4914,7 @@ static int ptwr_emulated_update( { unsigned long mfn; @@ -535,10 +469,8 @@ l1_pgentry_t pte, ol1e, nl1e, *pl1e; struct vcpu *v = current; struct domain *d = v->domain; -Index: xen-4.1.2-testing/xen/arch/x86/x86_64/mm.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/x86_64/mm.c -+++ xen-4.1.2-testing/xen/arch/x86/x86_64/mm.c +--- a/xen/arch/x86/x86_64/mm.c ++++ b/xen/arch/x86/x86_64/mm.c @@ -436,7 +436,8 @@ void destroy_m2p_mapping(struct mem_hota static int setup_compat_m2p_table(struct mem_hotadd_info *info) { @@ -549,10 +481,8 @@ l3_pgentry_t *l3_ro_mpt = NULL; l2_pgentry_t *l2_ro_mpt = NULL; struct page_info *l1_pg; -Index: xen-4.1.2-testing/xen/arch/x86/cpu/mcheck/mce.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/cpu/mcheck/mce.c -+++ xen-4.1.2-testing/xen/arch/x86/cpu/mcheck/mce.c +--- a/xen/arch/x86/cpu/mcheck/mce.c ++++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -151,7 +151,6 @@ static struct mcinfo_bank *mca_init_bank struct mc_info *mi, int bank) { @@ -569,7 +499,7 @@ if (mib->mc_status & MCi_STATUS_MISCV) mib->mc_misc = mca_rdmsr(MSR_IA32_MCx_MISC(bank)); -@@ -281,7 +279,7 @@ mctelem_cookie_t mcheck_mca_logout(enum +@@ -281,7 +279,7 @@ mctelem_cookie_t mcheck_mca_logout(enum recover = (mc_recoverable_scan)? 1: 0; for (i = 0; i < 32 && i < nr_mce_banks; i++) { @@ -587,10 +517,8 @@ uint64_t hwcr = 0; int intpose; int i; -Index: xen-4.1.2-testing/xen/common/tmem.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/tmem.c -+++ xen-4.1.2-testing/xen/common/tmem.c +--- a/xen/common/tmem.c ++++ b/xen/common/tmem.c @@ -1351,7 +1351,8 @@ obj_unlock: static int tmem_evict(void) { @@ -611,10 +539,8 @@ client_t *client = pool->client; int ret = client->frozen ? -EFROZEN : -ENOMEM; -Index: xen-4.1.2-testing/xen/common/tmem_xen.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/common/tmem_xen.c -+++ xen-4.1.2-testing/xen/common/tmem_xen.c +--- a/xen/common/tmem_xen.c ++++ b/xen/common/tmem_xen.c @@ -177,7 +177,7 @@ EXPORT int tmh_copy_from_client(pfp_t *p EXPORT int tmh_compress_from_client(tmem_cli_mfn_t cmfn, void **out_va, size_t *out_len, void *cli_va) @@ -652,10 +578,8 @@ tmh->persistent_pool = xmem_pool_create(name, tmh_persistent_pool_page_get, tmh_persistent_pool_page_put, PAGE_SIZE, 0, PAGE_SIZE); if ( tmh->persistent_pool == NULL ) -Index: xen-4.1.2-testing/xen/arch/x86/cpu/mcheck/vmce.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/cpu/mcheck/vmce.c -+++ xen-4.1.2-testing/xen/arch/x86/cpu/mcheck/vmce.c +--- a/xen/arch/x86/cpu/mcheck/vmce.c ++++ b/xen/arch/x86/cpu/mcheck/vmce.c @@ -630,7 +630,7 @@ int is_vmce_ready(struct mcinfo_bank *ba */ int unmmap_broken_page(struct domain *d, mfn_t mfn, unsigned long gfn) @@ -665,11 +589,9 @@ struct p2m_domain *p2m; p2m_type_t pt; -Index: xen-4.1.2-testing/xen/arch/x86/mm/shadow/multi.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/mm/shadow/multi.c -+++ xen-4.1.2-testing/xen/arch/x86/mm/shadow/multi.c -@@ -124,7 +124,7 @@ set_shadow_status(struct vcpu *v, mfn_t +--- a/xen/arch/x86/mm/shadow/multi.c ++++ b/xen/arch/x86/mm/shadow/multi.c +@@ -124,7 +124,7 @@ set_shadow_status(struct vcpu *v, mfn_t /* Put a shadow into the hash table */ { struct domain *d = v->domain; @@ -687,10 +609,8 @@ shadow_l1e_t *sl1p, sl1e; struct page_info *sp; -Index: xen-4.1.2-testing/xen/arch/x86/domain_build.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/domain_build.c -+++ xen-4.1.2-testing/xen/arch/x86/domain_build.c +--- a/xen/arch/x86/domain_build.c ++++ b/xen/arch/x86/domain_build.c @@ -378,8 +378,7 @@ int __init construct_dom0( return rc; @@ -701,11 +621,9 @@ machine = elf_uval(&elf, elf.ehdr, e_machine); switch (CONFIG_PAGING_LEVELS) { case 3: /* x86_32p */ -Index: xen-4.1.2-testing/xen/arch/x86/traps.c -=================================================================== ---- xen-4.1.2-testing.orig/xen/arch/x86/traps.c -+++ xen-4.1.2-testing/xen/arch/x86/traps.c -@@ -1858,7 +1858,11 @@ static int emulate_privileged_op(struct +--- a/xen/arch/x86/traps.c ++++ b/xen/arch/x86/traps.c +@@ -1858,7 +1858,11 @@ static int emulate_privileged_op(struct struct vcpu *v = current; unsigned long *reg, eip = regs->eip; u8 opcode, modrm_reg = 0, modrm_rm = 0, rep_prefix = 0, lock = 0, rex = 0; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
