Hello community,
here is the log from the commit of package xen
checked in at Sat Apr 29 14:03:02 CEST 2006.
--------
--- arch/i386/xen/xen.changes 2006-04-26 21:59:51.000000000 +0200
+++ STABLE/xen/xen.changes 2006-04-28 21:03:14.000000000 +0200
@@ -1,0 +2,15 @@
+Fri Apr 28 09:42:25 MDT 2006 - ccoffing@novell.com
+
+- Close fds before exec-ing vncviewer, so yast2-vm doesn't hang
+ when viewing fully-virtualized console (#168392).
+
+-------------------------------------------------------------------
+Thu Apr 27 08:14:18 MDT 2006 - ccoffing@novell.com
+
+- Update xen-3.0-testing tree, changeset 9656:
+ + Drop patches merged upstream.
+ + Fix reboot on large SMP machines (IBM, no bug #).
+- Integrate Jan's patches:
+ + Spurious interrupt roundup (#152892).
+
+-------------------------------------------------------------------
Old:
----
xen-x86-fxsr.diff
xen-x86-honor-apic-option.diff
New:
----
xen-BUILD_BUG_ON.diff
xen-pirq_shared.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.RcRWcs/_old 2006-04-29 14:02:14.000000000 +0200
+++ /var/tmp/diff_new_pack.RcRWcs/_new 2006-04-29 14:02:14.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package xen (Version 3.0.2_09649)
+# spec file for package xen (Version 3.0.2_09656)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -14,11 +14,11 @@
BuildRequires: LibVNCServer SDL-devel autoconf automake bin86 dev86 glibc-devel-32bit latex2html libjpeg-devel libreiserfs-devel python-devel te_ams te_latex tetex transfig
%define xvers 3.0
%define xvermaj 3
-%define changeset 09649
+%define changeset 09656
%define build_xmtest 0
%define with_pygrub 1
%define xen_build_dir xen-3.0-testing
-Version: 3.0.2_09649
+Version: 3.0.2_09656
Release: 1
License: GPL
Group: System/Kernel
@@ -66,9 +66,9 @@
Patch26: xen-hvm-localtime.diff
Patch27: xen-hvm-auto-balloon.diff
Patch28: xen-spurious-interrupts.diff
-Patch29: xen-x86-fxsr.diff
-Patch30: xen-x86-honor-apic-option.diff
-Patch31: xen-x86-gpfn-range-check.diff
+Patch29: xen-x86-gpfn-range-check.diff
+Patch30: xen-BUILD_BUG_ON.diff
+Patch31: xen-pirq_shared.diff
Patch49: xen-enable-hvm-debug.diff
Patch50: xen-enable-debug
Patch99: xen-poweroff.diff
@@ -753,6 +753,15 @@
%{insserv_cleanup}
%changelog -n xen
+* Fri Apr 28 2006 - ccoffing@novell.com
+- Close fds before exec-ing vncviewer, so yast2-vm doesn't hang
+ when viewing fully-virtualized console (#168392).
+* Thu Apr 27 2006 - ccoffing@novell.com
+- Update xen-3.0-testing tree, changeset 9656:
+ + Drop patches merged upstream.
+ + Fix reboot on large SMP machines (IBM, no bug #).
+- Integrate Jan's patches:
+ + Spurious interrupt roundup (#152892).
* Mon Apr 24 2006 - ccoffing@novell.com
- Integrate Jan's patches:
+ FXSR patch (#135677).
++++++ xen-3.0-testing-src.tar.bz2 ++++++
++++ 54237 lines of diff (skipped)
++++++ xen-BUILD_BUG_ON.diff ++++++
attached two patches (one preparatory for the other) to round up the spurious
interrupt work. While the second one changes the shared info structure, I am
certain the hypervisor and kernel changes can go in independently.
Jan
Index: xen-3.0-testing/xen/arch/x86/setup.c
===================================================================
--- xen-3.0-testing.orig/xen/arch/x86/setup.c
+++ xen-3.0-testing/xen/arch/x86/setup.c
@@ -356,17 +356,17 @@ void __init __start_xen(multiboot_info_t
total_pages = nr_pages;
/* Sanity check for unwanted bloat of dom0_op structure. */
- BUG_ON(sizeof(((struct dom0_op *)0)->u) !=
- sizeof(((struct dom0_op *)0)->u.pad));
+ BUILD_BUG_ON(sizeof(((struct dom0_op *)0)->u) !=
+ sizeof(((struct dom0_op *)0)->u.pad));
- BUG_ON(sizeof(start_info_t) > PAGE_SIZE);
- BUG_ON(sizeof(shared_info_t) > PAGE_SIZE);
- BUG_ON(sizeof(vcpu_info_t) != 64);
+ BUILD_BUG_ON(sizeof(start_info_t) > PAGE_SIZE);
+ BUILD_BUG_ON(sizeof(shared_info_t) > PAGE_SIZE);
+ BUILD_BUG_ON(sizeof(vcpu_info_t) != 64);
/* __foo are defined in public headers. Check they match internal defs. */
- BUG_ON(__HYPERVISOR_VIRT_START != HYPERVISOR_VIRT_START);
+ BUILD_BUG_ON(__HYPERVISOR_VIRT_START != HYPERVISOR_VIRT_START);
#ifdef HYPERVISOR_VIRT_END
- BUG_ON(__HYPERVISOR_VIRT_END != HYPERVISOR_VIRT_END);
+ BUILD_BUG_ON(__HYPERVISOR_VIRT_END != HYPERVISOR_VIRT_END);
#endif
init_frametable();
Index: xen-3.0-testing/xen/include/xen/lib.h
===================================================================
--- xen-3.0-testing.orig/xen/include/xen/lib.h
+++ xen-3.0-testing/xen/include/xen/lib.h
@@ -16,6 +16,9 @@
#define BUG_ON(_p) do { if (_p) BUG(); } while ( 0 )
+/* Force a compilation error if condition is true */
+#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2 * !!(condition)]))
+
#ifndef NDEBUG
#define ASSERT(_p) { if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s\n", #_p , __LINE__, __FILE__); BUG(); } }
#else
++++++ xen-pirq_shared.diff ++++++
attached two patches (one preparatory for the other) to round up the spurious
interrupt work. While the second one changes the shared info structure, I am
certain the hypervisor and kernel changes can go in independently.
Jan
Index: xen-3.0-testing/xen/arch/x86/irq.c
===================================================================
--- xen-3.0-testing.orig/xen/arch/x86/irq.c
+++ xen-3.0-testing/xen/arch/x86/irq.c
@@ -200,7 +200,7 @@ static void __do_IRQ_guest(int vector)
if ( (action->ack_type != ACKTYPE_NONE) &&
!test_and_set_bit(irq, &d->pirq_mask) )
action->in_flight++;
- send_guest_pirq(d, irq);
+ send_guest_pirq(d, irq, action->nr_guests > 1);
}
}
Index: xen-3.0-testing/xen/arch/ia64/xen/irq.c
===================================================================
--- xen-3.0-testing.orig/xen/arch/ia64/xen/irq.c
+++ xen-3.0-testing/xen/arch/ia64/xen/irq.c
@@ -1351,7 +1351,7 @@ static void __do_IRQ_guest(int irq)
d = action->guest[i];
if ( !test_and_set_bit(irq, &d->pirq_mask) )
action->in_flight++;
- send_guest_pirq(d, irq);
+ send_guest_pirq(d, irq, action->nr_guests > 1);
}
}
*/
Index: xen-3.0-testing/xen/common/event_channel.c
===================================================================
--- xen-3.0-testing.orig/xen/common/event_channel.c
+++ xen-3.0-testing/xen/common/event_channel.c
@@ -479,10 +479,18 @@ void send_guest_virq(struct vcpu *v, int
evtchn_set_pending(v, port);
}
-void send_guest_pirq(struct domain *d, int pirq)
+void send_guest_pirq(struct domain *d, int pirq, int shared)
{
int port = d->pirq_to_evtchn[pirq];
struct evtchn *chn = evtchn_from_port(d, port);
+ shared_info_t *s = d->shared_info;
+
+ BUILD_BUG_ON(BITS_TO_LONGS(NR_PIRQS) > sizeof(((shared_info_t *)0)->pirq_shared));
+ if (shared)
+ set_bit(pirq, s->pirq_shared);
+ else
+ clear_bit(pirq, s->pirq_shared);
+
evtchn_set_pending(d->vcpu[chn->notify_vcpu_id], port);
}
Index: xen-3.0-testing/xen/include/xen/event.h
===================================================================
--- xen-3.0-testing.orig/xen/include/xen/event.h
+++ xen-3.0-testing/xen/include/xen/event.h
@@ -28,8 +28,9 @@ extern void send_guest_virq(struct vcpu
* send_guest_pirq:
* @d: Domain to which physical IRQ should be sent
* @pirq: Physical IRQ number
+ * @shared: Indicator whether IRQ is shared with other domain(s)
*/
-extern void send_guest_pirq(struct domain *d, int pirq);
+extern void send_guest_pirq(struct domain *d, int pirq, int shared);
/* Note: Bitwise operations result in fast code with no branches. */
#define event_pending(v) \
Index: xen-3.0-testing/xen/include/public/xen.h
===================================================================
--- xen-3.0-testing.orig/xen/include/public/xen.h
+++ xen-3.0-testing/xen/include/public/xen.h
@@ -370,6 +370,14 @@ typedef struct shared_info {
arch_shared_info_t arch;
+ /*
+ * Indicator which PIRQs are shared with other domains, allowing the guest
+ * to not consider respective interrupts spurious even if no handler claims
+ * them, while still being able to detect spurious occurrences of un-shared
+ * interrupts.
+ */
+ unsigned long pirq_shared[256 / (8 * sizeof(unsigned long))];
+
} shared_info_t;
/*
++++++ xen-tightvnc.diff ++++++
--- /var/tmp/diff_new_pack.RcRWcs/_old 2006-04-29 14:02:33.000000000 +0200
+++ /var/tmp/diff_new_pack.RcRWcs/_new 2006-04-29 14:02:33.000000000 +0200
@@ -2,13 +2,54 @@
===================================================================
--- xen-3.0-testing.orig/tools/python/xen/xm/create.py
+++ xen-3.0-testing/tools/python/xen/xm/create.py
-@@ -766,8 +766,7 @@ def choose_vnc_display():
+@@ -766,11 +766,46 @@ def choose_vnc_display():
vncpid = None
def spawn_vnc(display):
- vncargs = (["vncviewer", "-log", "*:stdout:0",
- "-listen", "%d" % (VNC_BASE_PORT + display) ])
-+ vncargs = (["vncviewer", "-listen", "%d" % (display) ])
- global vncpid
- vncpid = os.spawnvp(os.P_NOWAIT, "vncviewer", vncargs)
+- global vncpid
+- vncpid = os.spawnvp(os.P_NOWAIT, "vncviewer", vncargs)
++ """Spawns a vncviewer that listens on the specified display. On success,
++ returns the port that the vncviewer is listening on and sets the global
++ vncpid. On failure, returns 0. Note that vncviewer is daemonized.
++ """
++ r, w = os.pipe()
++ pid = os.fork()
++ if pid == 0:
++ os.close(r)
++ w = os.fdopen(w, 'w')
++ os.setsid()
++ try:
++ pid2 = os.fork()
++ except:
++ pid2 = None
++ if pid2 == 0:
++ os.chdir("/")
++ for fd in range(0, 256):
++ try:
++ os.close(fd)
++ except:
++ pass
++ os.open("/dev/null", os.O_RDWR)
++ os.dup2(0, 1)
++ os.dup2(0, 2)
++ os.execvp("vncviewer", [ "vncviewer", "-listen", "%d" % (display) ])
++ os._exit(1)
++ else:
++ w.write(str(pid2 or 0))
++ w.close()
++ os._exit(0)
++
++ global vncpid
++ os.close(w)
++ r = os.fdopen(r)
++ vncpid = int(r.read())
++ r.close()
++ os.waitpid(pid, 0)
++ if vncpid == 0:
++ return 0
+ return VNC_BASE_PORT + display
+
+ def preprocess_vnc(vals):
++++++ xen-warnings.diff ++++++
--- /var/tmp/diff_new_pack.RcRWcs/_old 2006-04-29 14:02:33.000000000 +0200
+++ /var/tmp/diff_new_pack.RcRWcs/_new 2006-04-29 14:02:33.000000000 +0200
@@ -194,17 +194,3 @@
}
wait(NULL); /* wait for child to die or it will become a zombie */
break;
-Index: xen-3.0-testing/tools/xenmon/xenbaked.c
-===================================================================
---- xen-3.0-testing.orig/tools/xenmon/xenbaked.c
-+++ xen-3.0-testing/tools/xenmon/xenbaked.c
-@@ -549,7 +549,8 @@ void alloc_qos_data(int ncpu)
- for (n=0; n