Hello community,
here is the log from the commit of package xen
checked in at Tue Mar 6 09:12:48 CET 2007.
--------
--- arch/i386/xen/xen.changes 2007-02-20 22:48:30.000000000 +0100
+++ /mounts/work_src_done/STABLE/xen/xen.changes 2007-03-05 17:39:38.000000000 +0100
@@ -1,0 +2,98 @@
+Mon Mar 5 09:38:36 MST 2007 - ccoffing@novell.com
+
+- Default apic=0 for SLES 8 and 9, for performance. (#228133)
+
+-------------------------------------------------------------------
+Fri Mar 2 16:58:06 MST 2007 - carnold@novell.com
+
+- Xen kernel crashes at domain creation time. Bug #248183.
+ Fix mouse for win2k hvm guest.
+
+-------------------------------------------------------------------
+Fri Mar 2 13:15:33 MST 2007 - jfehlig@novell.com
+
+- Incorrect values returned for actions_after_* in Xen API. Added
+ patch xend-actions-after.patch for fix. Patch submitted upstream
+ as well. Bug #250870.
+
+-------------------------------------------------------------------
+Fri Mar 2 12:08:55 MST 2007 - ccoffing@novell.com
+
+- Update vm-install:
+ + Fixed possible "tree path exception" when editing disk
+ + Fixed failure to properly refresh fields when editing disk
+ + #248356: allow specifying bridge
+
+-------------------------------------------------------------------
+Fri Mar 2 10:23:38 MST 2007 - jfehlig@novell.com
+
+- Add check for HVM domain in domain_save. The check is
+ performed in domain_suspend and should be included here as well.
+
+-------------------------------------------------------------------
+Thu Mar 1 18:13:20 MST 2007 - ccoffing@novell.com
+
+- Update vm-install:
+ + #250201: for linux PVFB, pass xencons=tty if graphics=none
+ + #250016: honor non-sparse flag
+
+-------------------------------------------------------------------
+Thu Mar 1 17:25:44 MST 2007 - jfehlig@novell.com
+
+- Fix exception caused by incorrect method name in xen-messages.diff.
+ This is one of perhaps several problems with save/restore,
+ bug #237859
+
+-------------------------------------------------------------------
+Thu Mar 1 15:43:00 MST 2007 - dpmerrill@novell.com
+
+- Add xen-ioemu-hvm-pv-support.diff
+ This patch allows for shutting down the IDE drive.
+
+-------------------------------------------------------------------
+Thu Mar 1 11:27:00 MST 2007 - jfehlig@novell.com
+
+- Fix bug #243667
+ + Updated domUloader to accept '--args' parameter. The args
+ provided as an option to --args are simply added to the sexpr
+ returned by domUloader. pygrub has similar behavior.
+
+-------------------------------------------------------------------
+Wed Feb 28 18:16:53 MST 2007 - ccoffing@novell.com
+
+- Update vm-install:
+ + #249013, #228113: default to realtek instead of pcnet
+ + #249124: write os-type to config files
+ + Updated translations
+ + Setting os_type should implicitly set full_virt; fixes NIC
+ model exceptions
+ + Add "Add" button to Operating System Installation page, based
+ on usability feedback
+
+-------------------------------------------------------------------
+Wed Feb 28 15:55:15 MST 2007 - jfehlig@novell.com
+
+- Added changeset 13786 and 14022 from xen-unstable. These
+ changesets affect the Xen API C bindings only and are low risk.
+ This is a continuation of support for FATE feature 110320. ECO
+ has been approved for late arrival of this feature.
+
+-------------------------------------------------------------------
+Mon Feb 26 10:39:06 MST 2007 - ccoffing@novell.com
+
+- Update vm-install:
+ + #244772: display error message in GUI if xen isn't running
+ + #246049: better error message when OS==SUSE but ISO looks wrong
+ + Fix printing of jobid when run with --background
+
+-------------------------------------------------------------------
+Wed Feb 21 15:54:51 MST 2007 - ccoffing@novell.com
+
+- Don't allow "xm create" of running VM. (#245253)
+- Update vm-install:
+ + Fix inability to use already-extracted SUSE kernel/initrds
+ + Fix accumulation of 0-byte tmp files
+ + #237063: close fds before running vncviewer
+ + default apic=0 for Windows, due to performance
+
+-------------------------------------------------------------------
New:
----
13574-win2k-mouse.patch
13786_xenapi.patch
14022_xenapi.patch
32on64-migrate.patch
xend-actions-after.patch
xend_multiple_create.patch
xen-ioemu-hvm-pv-support.diff
xen-perdomain-free.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:12.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:12.000000000 +0100
@@ -30,7 +30,7 @@
BuildRequires: kernel-source kernel-syms xorg-x11
%endif
Version: 3.0.4_13138
-Release: 5
+Release: 7
License: GNU General Public License (GPL)
Group: System/Kernel
Autoreqprov: on
@@ -122,15 +122,17 @@
Patch133: 32on64-per-domain-pa-bits.patch
Patch134: 32on64-fixes.patch
Patch135: 32on64-call-gates.patch
-Patch136: emul-privop-lock.patch
-Patch137: hide-asm-labels.patch
-Patch138: bug.patch
-Patch139: x86-mm-simplify.patch
-Patch140: vgacon-50-lines.patch
-Patch141: vgacon-keep.patch
-Patch142: x86-ptwr_emulate.patch
-Patch143: pae-guest-linear-pgtable.patch
+Patch136: 32on64-migrate.patch
+Patch137: emul-privop-lock.patch
+Patch138: hide-asm-labels.patch
+Patch139: bug.patch
+Patch140: x86-mm-simplify.patch
+Patch141: vgacon-50-lines.patch
+Patch142: vgacon-keep.patch
+Patch143: x86-ptwr_emulate.patch
Patch144: suppress-rdtscp.patch
+Patch145: pae-guest-linear-pgtable.patch
+Patch146: x86-nmi-inject.patch
## Gerd's patches begin here
# fix cross-build for tools
Patch150: cross-build-fix.diff
@@ -170,11 +172,12 @@
Patch211: xen-localtime.patch
Patch212: svm-update-v_tpr-on-mmio.patch
Patch213: svm_cpuid_ffxsr_13743.patch
-Patch214: 13630-domctl.patch
-Patch215: 13903-domctl.patch
-Patch216: 13908-domctl.patch
-Patch217: bugfix-246160-domctl.patch
-Patch218: x86-nmi-inject.patch
+Patch214: 13574-win2k-mouse.patch
+Patch215: 13630-domctl.patch
+Patch216: 13903-domctl.patch
+Patch217: 13908-domctl.patch
+Patch218: bugfix-246160-domctl.patch
+Patch219: xen-perdomain-free.patch
# pv driver building
Patch250: pv-driver-build.patch
# Jim' Xen API patches
@@ -198,9 +201,14 @@
Patch287: 13777_xenapi.patch
Patch288: 13778_xenapi.patch
Patch289: 13784_xenapi.patch
-Patch290: 13787_xenapi.patch
-Patch291: libxen_permissive.patch
-Patch292: xend_disk_decorate_rm.patch
+Patch290: 13786_xenapi.patch
+Patch291: 13787_xenapi.patch
+Patch292: 14022_xenapi.patch
+Patch293: libxen_permissive.patch
+Patch294: xend_disk_decorate_rm.patch
+Patch295: xend_multiple_create.patch
+Patch296: xen-ioemu-hvm-pv-support.diff
+Patch297: xend-actions-after.patch
# Misc unused patches / need to be re-ported:
Patch300: xen-enable-hvm-debug.diff
Patch301: xen-removable.diff
@@ -658,6 +666,8 @@
%patch142 -p1
%patch143 -p1
%patch144 -p1
+%patch145 -p1
+%patch146 -p1
%patch150 -p1
%patch151 -p1
%patch152 -p1
@@ -691,6 +701,7 @@
%patch216 -p1
%patch217 -p1
%patch218 -p1
+%patch219 -p1
%patch250 -p1
%patch270 -p1
%patch271 -p1
@@ -715,6 +726,11 @@
%patch290 -p1
%patch291 -p1
%patch292 -p1
+%patch293 -p1
+%patch294 -p1
+%patch295 -p1
+%patch296 -p1
+%patch297 -p1
XEN_EXTRAVERSION=%version-%release
XEN_EXTRAVERSION=${XEN_EXTRAVERSION#%{xvers}}
sed -i "s/XEN_EXTRAVERSION[ ]*.=.*\$/XEN_EXTRAVERSION = $XEN_EXTRAVERSION/" xen/Makefile
@@ -1032,6 +1048,65 @@
%{insserv_cleanup}
%changelog
+* Mon Mar 05 2007 - ccoffing@novell.com
+- Default apic=0 for SLES 8 and 9, for performance. (#228133)
+* Fri Mar 02 2007 - carnold@novell.com
+- Xen kernel crashes at domain creation time. Bug #248183.
+ Fix mouse for win2k hvm guest.
+* Fri Mar 02 2007 - jfehlig@novell.com
+- Incorrect values returned for actions_after_* in Xen API. Added
+ patch xend-actions-after.patch for fix. Patch submitted upstream
+ as well. Bug #250870.
+* Fri Mar 02 2007 - ccoffing@novell.com
+- Update vm-install:
+ + Fixed possible "tree path exception" when editing disk
+ + Fixed failure to properly refresh fields when editing disk
+ + #248356: allow specifying bridge
+* Fri Mar 02 2007 - jfehlig@novell.com
+- Add check for HVM domain in domain_save. The check is
+ performed in domain_suspend and should be included here as well.
+* Thu Mar 01 2007 - ccoffing@novell.com
+- Update vm-install:
+ + #250201: for linux PVFB, pass xencons=tty if graphics=none
+ + #250016: honor non-sparse flag
+* Thu Mar 01 2007 - jfehlig@novell.com
+- Fix exception caused by incorrect method name in xen-messages.diff.
+ This is one of perhaps several problems with save/restore,
+ bug #237859
+* Thu Mar 01 2007 - dpmerrill@novell.com
+- Add xen-ioemu-hvm-pv-support.diff
+ This patch allows for shutting down the IDE drive.
+* Thu Mar 01 2007 - jfehlig@novell.com
+- Fix bug #243667
+ + Updated domUloader to accept '--args' parameter. The args
+ provided as an option to --args are simply added to the sexpr
+ returned by domUloader. pygrub has similar behavior.
+* Wed Feb 28 2007 - ccoffing@novell.com
+- Update vm-install:
+ + #249013, #228113: default to realtek instead of pcnet
+ + #249124: write os-type to config files
+ + Updated translations
+ + Setting os_type should implicitly set full_virt; fixes NIC
+ model exceptions
+ + Add "Add" button to Operating System Installation page, based
+ on usability feedback
+* Wed Feb 28 2007 - jfehlig@novell.com
+- Added changeset 13786 and 14022 from xen-unstable. These
+ changesets affect the Xen API C bindings only and are low risk.
+ This is a continuation of support for FATE feature 110320. ECO
+ has been approved for late arrival of this feature.
+* Mon Feb 26 2007 - ccoffing@novell.com
+- Update vm-install:
+ + #244772: display error message in GUI if xen isn't running
+ + #246049: better error message when OS==SUSE but ISO looks wrong
+ + Fix printing of jobid when run with --background
+* Wed Feb 21 2007 - ccoffing@novell.com
+- Don't allow "xm create" of running VM. (#245253)
+- Update vm-install:
+ + Fix inability to use already-extracted SUSE kernel/initrds
+ + Fix accumulation of 0-byte tmp files
+ + #237063: close fds before running vncviewer
+ + default apic=0 for Windows, due to performance
* Tue Feb 20 2007 - carnold@novell.com
- Domain0 reboots after 2-6 hours of running guests. (#246160)
* Tue Feb 20 2007 - ccoffing@novell.com
++++++ 13574-win2k-mouse.patch ++++++
# HG changeset patch
# User kfraser@localhost.localdomain
# Date 1169635472 0
# Node ID b064775fba7d838c99bcf11ca4fec6127e0e8792
# Parent c9ac0bace498d1c25f07df95b88d8f8e89168514
[QEMU] Clear TD status field explicitly when it's fetched.
In current Qemu-dm, UHC will set some status bits of TD in status
updating stage, but never process the status bit if relevant condition
does not occur, leaving it as it is. When a TD is fetched with some
status bits are set to 1, it will return to Guest OS with these bits
set to 1 even this TD is executed successfully. Some Windows OS,
e.g. Windows 2000, will check status bits of TD in UHC interrupt
routine, treat it as a unsuccessful one if some status bits are set to
1 and discard the data. Other Windows OS just check USBSTS of UHC,
ignoring status field of TD unless the value of USBSTS indicates
occurrence of error.
With this patch, USB mouse/tablet in Windows 2000 works correctly.
Signed-off-by: Xinmei Huang
Index: xen-3.0.4-testing/tools/ioemu/hw/usb-uhci.c
===================================================================
--- xen-3.0.4-testing.orig/tools/ioemu/hw/usb-uhci.c
+++ xen-3.0.4-testing/tools/ioemu/hw/usb-uhci.c
@@ -43,9 +43,15 @@
#define TD_CTRL_IOC (1 << 24)
#define TD_CTRL_ACTIVE (1 << 23)
#define TD_CTRL_STALL (1 << 22)
+#define TD_CTRL_BUFFER (1 << 21)
#define TD_CTRL_BABBLE (1 << 20)
#define TD_CTRL_NAK (1 << 19)
#define TD_CTRL_TIMEOUT (1 << 18)
+#define TD_CTRL_BITSTUFF \
+ (1 << 17)
+#define TD_CTRL_MASK \
+ (TD_CTRL_BITSTUFF | TD_CTRL_TIMEOUT | TD_CTRL_NAK \
+ | TD_CTRL_BABBLE | TD_CTRL_BUFFER | TD_CTRL_STALL)
#define UHCI_PORT_RESET (1 << 9)
#define UHCI_PORT_LSDA (1 << 8)
@@ -428,6 +434,8 @@ static int uhci_handle_td(UHCIState *s,
ret = 1;
goto out;
}
+ /* Clear TD's status field explicitly */
+ td->ctrl = td->ctrl & (~TD_CTRL_MASK);
/* TD is active */
max_len = ((td->token >> 21) + 1) & 0x7ff;
++++++ 13786_xenapi.patch ++++++
# HG changeset patch
# User Ewan Mellor
# Date 1170356417 0
# Node ID a357bed2daf8096bb5c682d454a2b3af652fc73f
# Parent 23bf61e72279682f46342d8c01977bed63ceb5be
Make the string->string map and int->float map allocation functions set the
map size on allocation.
Signed-off-by: Ewan Mellor
diff -r 23bf61e72279 -r a357bed2daf8 tools/libxen/src/xen_int_float_map.c
--- a/tools/libxen/src/xen_int_float_map.c Thu Feb 01 18:45:50 2007 +0000
+++ b/tools/libxen/src/xen_int_float_map.c Thu Feb 01 19:00:17 2007 +0000
@@ -25,8 +25,10 @@ xen_int_float_map *
xen_int_float_map *
xen_int_float_map_alloc(size_t size)
{
- return calloc(1, sizeof(xen_int_float_map) +
- size * sizeof(struct xen_int_float_map_contents));
+ xen_int_float_map *result = calloc(1, sizeof(xen_int_float_map) +
+ size * sizeof(struct xen_int_float_map_contents));
+ result->size = size;
+ return result;
}
diff -r 23bf61e72279 -r a357bed2daf8 tools/libxen/src/xen_string_string_map.c
--- a/tools/libxen/src/xen_string_string_map.c Thu Feb 01 18:45:50 2007 +0000
+++ b/tools/libxen/src/xen_string_string_map.c Thu Feb 01 19:00:17 2007 +0000
@@ -25,8 +25,10 @@ xen_string_string_map *
xen_string_string_map *
xen_string_string_map_alloc(size_t size)
{
- return calloc(1, sizeof(xen_string_string_map) +
- size * sizeof(struct xen_string_string_map_contents));
+ xen_string_string_map *result = calloc(1, sizeof(xen_string_string_map) +
+ size * sizeof(struct xen_string_string_map_contents));
+ result->size = size;
+ return result;
}
++++++ 14022_xenapi.patch ++++++
# HG changeset patch
# User Ewan Mellor
# Date 1172000304 0
# Node ID 988b90c6b4f3b628430a73b5562e65c859953173
# Parent be35eed950da0f39d3d41f738f340707e01c4cbd
Added Console.other_config to the docs (Xend already has this).
Signed-off-by: Ewan Mellor
diff -r be35eed950da -r 988b90c6b4f3 docs/xen-api/xenapi-datamodel.tex
--- a/docs/xen-api/xenapi-datamodel.tex Tue Feb 20 19:23:28 2007 +0000
+++ b/docs/xen-api/xenapi-datamodel.tex Tue Feb 20 19:38:24 2007 +0000
@@ -10887,6 +10887,7 @@ Quals & Field & Type & Description \\
$\mathit{RO}_\mathit{run}$ & {\tt protocol} & console\_protocol & the protocol used by this console \\
$\mathit{RO}_\mathit{run}$ & {\tt location} & string & URI for the console service \\
$\mathit{RO}_\mathit{run}$ & {\tt VM} & VM ref & VM to which this console is attached \\
+$\mathit{RW}$ & {\tt other\_config} & (string $\rightarrow$ string) Map & additional configuration \\
\hline
\end{longtable}
\subsection{Additional RPCs associated with class: console}
@@ -11015,6 +11016,145 @@ VM ref
value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~get\_other\_config}
+
+{\bf Overview:}
+Get the other\_config field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} ((string -> string) Map) get_other_config (session_id s, console ref self)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+(string $\rightarrow$ string) Map
+}
+
+
+value of the field
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~set\_other\_config}
+
+{\bf Overview:}
+Set the other\_config field of the given console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void set_other_config (session_id s, console ref self, (string -> string) Map value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+{\tt (string $\rightarrow$ string) Map } & value & New value to set \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~add\_to\_other\_config}
+
+{\bf Overview:}
+Add the given key-value pair to the other\_config field of the given
+console.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void add_to_other_config (session_id s, console ref self, string key, string value)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+{\tt string } & key & Key to add \\ \hline
+
+{\tt string } & value & Value to add \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
+\vspace{0.3cm}
+\vspace{0.3cm}
+\vspace{0.3cm}
+\subsubsection{RPC name:~remove\_from\_other\_config}
+
+{\bf Overview:}
+Remove the given key and its corresponding value from the other\_config
+field of the given console. If the key is not in that Map, then do
+nothing.
+
+ \noindent {\bf Signature:}
+\begin{verbatim} void remove_from_other_config (session_id s, console ref self, string key)\end{verbatim}
+
+
+\noindent{\bf Arguments:}
+
+
+\vspace{0.3cm}
+\begin{tabular}{|c|c|p{7cm}|}
+ \hline
+{\bf type} & {\bf name} & {\bf description} \\ \hline
+{\tt console ref } & self & reference to the object \\ \hline
+
+{\tt string } & key & Key to remove \\ \hline
+
+\end{tabular}
+
+\vspace{0.3cm}
+
+ \noindent {\bf Return Type:}
+{\tt
+void
+}
+
+
+
\vspace{0.3cm}
\vspace{0.3cm}
\vspace{0.3cm}
diff -r be35eed950da -r 988b90c6b4f3 tools/libxen/include/xen_console.h
--- a/tools/libxen/include/xen_console.h Tue Feb 20 19:23:28 2007 +0000
+++ b/tools/libxen/include/xen_console.h Tue Feb 20 19:38:24 2007 +0000
@@ -22,6 +22,7 @@
#include "xen_common.h"
#include "xen_console_decl.h"
#include "xen_console_protocol.h"
+#include "xen_string_string_map.h"
#include "xen_vm_decl.h"
@@ -67,6 +68,7 @@ typedef struct xen_console_record
enum xen_console_protocol protocol;
char *location;
struct xen_vm_record_opt *vm;
+ xen_string_string_map *other_config;
} xen_console_record;
/**
@@ -204,4 +206,35 @@ xen_console_get_vm(xen_session *session,
xen_console_get_vm(xen_session *session, xen_vm *result, xen_console console);
+/**
+ * Get the other_config field of the given console.
+ */
+extern bool
+xen_console_get_other_config(xen_session *session, xen_string_string_map **result, xen_console console);
+
+
+/**
+ * Set the other_config field of the given console.
+ */
+extern bool
+xen_console_set_other_config(xen_session *session, xen_console console, xen_string_string_map *other_config);
+
+
+/**
+ * Add the given key-value pair to the other_config field of the given
+ * console.
+ */
+extern bool
+xen_console_add_to_other_config(xen_session *session, xen_console console, char *key, char *value);
+
+
+/**
+ * Remove the given key and its corresponding value from the
+ * other_config field of the given console. If the key is not in that Map,
+ * then do nothing.
+ */
+extern bool
+xen_console_remove_from_other_config(xen_session *session, xen_console console, char *key);
+
+
#endif
diff -r be35eed950da -r 988b90c6b4f3 tools/libxen/src/xen_console.c
--- a/tools/libxen/src/xen_console.c Tue Feb 20 19:23:28 2007 +0000
+++ b/tools/libxen/src/xen_console.c Tue Feb 20 19:38:24 2007 +0000
@@ -24,6 +24,7 @@
#include "xen_console.h"
#include "xen_console_protocol_internal.h"
#include "xen_internal.h"
+#include "xen_string_string_map.h"
#include "xen_vm.h"
@@ -49,7 +50,10 @@ static const struct_member xen_console_r
.offset = offsetof(xen_console_record, location) },
{ .key = "VM",
.type = &abstract_type_ref,
- .offset = offsetof(xen_console_record, vm) }
+ .offset = offsetof(xen_console_record, vm) },
+ { .key = "other_config",
+ .type = &abstract_type_string_string_map,
+ .offset = offsetof(xen_console_record, other_config) }
};
const abstract_type xen_console_record_abstract_type_ =
@@ -73,6 +77,7 @@ xen_console_record_free(xen_console_reco
free(record->uuid);
free(record->location);
xen_vm_record_opt_free(record->vm);
+ xen_string_string_map_free(record->other_config);
free(record);
}
@@ -198,6 +203,73 @@ xen_console_get_vm(xen_session *session,
bool
+xen_console_get_other_config(xen_session *session, xen_string_string_map **result, xen_console console)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = console }
+ };
+
+ abstract_type result_type = abstract_type_string_string_map;
+
+ *result = NULL;
+ XEN_CALL_("console.get_other_config");
+ return session->ok;
+}
+
+
+bool
+xen_console_set_other_config(xen_session *session, xen_console console, xen_string_string_map *other_config)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = console },
+ { .type = &abstract_type_string_string_map,
+ .u.set_val = (arbitrary_set *)other_config }
+ };
+
+ xen_call_(session, "console.set_other_config", param_values, 2, NULL, NULL);
+ return session->ok;
+}
+
+
+bool
+xen_console_add_to_other_config(xen_session *session, xen_console console, char *key, char *value)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = console },
+ { .type = &abstract_type_string,
+ .u.string_val = key },
+ { .type = &abstract_type_string,
+ .u.string_val = value }
+ };
+
+ xen_call_(session, "console.add_to_other_config", param_values, 3, NULL, NULL);
+ return session->ok;
+}
+
+
+bool
+xen_console_remove_from_other_config(xen_session *session, xen_console console, char *key)
+{
+ abstract_value param_values[] =
+ {
+ { .type = &abstract_type_string,
+ .u.string_val = console },
+ { .type = &abstract_type_string,
+ .u.string_val = key }
+ };
+
+ xen_call_(session, "console.remove_from_other_config", param_values, 2, NULL, NULL);
+ return session->ok;
+}
+
+
+bool
xen_console_get_uuid(xen_session *session, char **result, xen_console console)
{
*result = session->ok ? xen_strdup_((char *)console) : NULL;
++++++ 32on64-migrate.patch ++++++
++++ 793 lines (skipped)
++++++ 32on64-per-domain-pa-bits.patch ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:13.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:13.000000000 +0100
@@ -1,7 +1,7 @@
-Index: 2007-01-08/xen/arch/x86/domain.c
+Index: 2007-02-20/xen/arch/x86/domain.c
===================================================================
---- 2007-01-08.orig/xen/arch/x86/domain.c 2007-01-08 15:20:39.000000000 +0100
-+++ 2007-01-08/xen/arch/x86/domain.c 2007-01-08 14:54:35.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/domain.c 2007-02-26 15:41:28.000000000 +0100
++++ 2007-02-20/xen/arch/x86/domain.c 2007-01-08 14:54:35.000000000 +0100
@@ -253,7 +253,7 @@ static void release_compat_l4(struct vcp
static inline int may_switch_mode(struct domain *d)
@@ -30,23 +30,23 @@
return 0;
}
-Index: 2007-01-08/xen/arch/x86/domain_build.c
+Index: 2007-02-20/xen/arch/x86/domain_build.c
===================================================================
---- 2007-01-08.orig/xen/arch/x86/domain_build.c 2007-01-08 14:54:33.000000000 +0100
-+++ 2007-01-08/xen/arch/x86/domain_build.c 2007-01-08 15:36:39.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/domain_build.c 2007-02-26 15:41:28.000000000 +0100
++++ 2007-02-20/xen/arch/x86/domain_build.c 2007-02-26 15:42:27.000000000 +0100
@@ -396,6 +396,8 @@ int construct_dom0(struct domain *d,
value = (value + mask) & ~mask;
#ifdef CONFIG_COMPAT
HYPERVISOR_COMPAT_VIRT_START(d) = max_t(unsigned int, m2p_compat_vstart, value);
-+ d->pa_bitsize = fls((1UL << 32) - HYPERVISOR_COMPAT_VIRT_START(d)) - 1
-+ + (PAGE_SIZE - 2);
++ d->pa_bitsize = !IS_COMPAT(d) ? 0 :
++ fls((1UL << 32) - HYPERVISOR_COMPAT_VIRT_START(d)) - 1 + (PAGE_SIZE - 2);
if ( value > (!IS_COMPAT(d) ?
HYPERVISOR_VIRT_START :
__HYPERVISOR_COMPAT_VIRT_START) )
-Index: 2007-01-08/xen/common/page_alloc.c
+Index: 2007-02-20/xen/common/page_alloc.c
===================================================================
---- 2007-01-08.orig/xen/common/page_alloc.c 2007-01-08 14:54:33.000000000 +0100
-+++ 2007-01-08/xen/common/page_alloc.c 2007-01-08 14:54:35.000000000 +0100
+--- 2007-02-20.orig/xen/common/page_alloc.c 2007-02-26 15:41:28.000000000 +0100
++++ 2007-02-20/xen/common/page_alloc.c 2007-01-08 14:54:35.000000000 +0100
@@ -718,7 +718,12 @@ struct page_info *__alloc_domheap_pages(
if ( bits && bits <= PAGE_SHIFT + 1 )
return NULL;
@@ -61,10 +61,10 @@
if ( zone_hi >= NR_ZONES )
zone_hi = NR_ZONES - 1;
-Index: 2007-01-08/xen/include/xen/sched.h
+Index: 2007-02-20/xen/include/xen/sched.h
===================================================================
---- 2007-01-08.orig/xen/include/xen/sched.h 2007-01-08 15:20:39.000000000 +0100
-+++ 2007-01-08/xen/include/xen/sched.h 2007-01-08 14:54:35.000000000 +0100
+--- 2007-02-20.orig/xen/include/xen/sched.h 2007-02-26 15:41:28.000000000 +0100
++++ 2007-02-20/xen/include/xen/sched.h 2007-01-08 14:54:35.000000000 +0100
@@ -165,6 +165,10 @@ struct domain
unsigned long domain_flags;
++++++ bug.patch ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:13.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:13.000000000 +0100
@@ -1,7 +1,7 @@
-Index: 2007-01-31/xen/arch/powerpc/backtrace.c
+Index: 2007-02-20/xen/arch/powerpc/backtrace.c
===================================================================
---- 2007-01-31.orig/xen/arch/powerpc/backtrace.c 2006-12-15 16:33:59.000000000 +0100
-+++ 2007-01-31/xen/arch/powerpc/backtrace.c 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/arch/powerpc/backtrace.c 2006-12-15 16:33:59.000000000 +0100
++++ 2007-02-20/xen/arch/powerpc/backtrace.c 2007-02-20 10:56:04.000000000 +0100
@@ -206,7 +206,7 @@ void show_backtrace_regs(struct cpu_user
console_end_sync();
}
@@ -11,11 +11,11 @@
{
ulong sp;
ulong lr;
-Index: 2007-01-31/xen/arch/x86/mm/shadow/common.c
+Index: 2007-02-20/xen/arch/x86/mm/shadow/common.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/mm/shadow/common.c 2007-01-31 09:36:44.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/mm/shadow/common.c 2007-01-31 09:42:07.000000000 +0100
-@@ -940,6 +940,7 @@ mfn_t shadow_alloc(struct domain *d,
+--- 2007-02-20.orig/xen/arch/x86/mm/shadow/common.c 2007-02-20 10:55:36.000000000 +0100
++++ 2007-02-20/xen/arch/x86/mm/shadow/common.c 2007-02-20 10:56:04.000000000 +0100
+@@ -948,6 +948,7 @@ mfn_t shadow_alloc(struct domain *d,
* we might free up higher-level pages that the caller is working on. */
SHADOW_PRINTK("Can't allocate %i shadow pages!\n", 1 << order);
BUG();
@@ -23,11 +23,11 @@
}
-Index: 2007-01-31/xen/arch/x86/mm/shadow/multi.c
+Index: 2007-02-20/xen/arch/x86/mm/shadow/multi.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/mm/shadow/multi.c 2007-01-31 09:36:54.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/mm/shadow/multi.c 2007-01-31 09:42:07.000000000 +0100
-@@ -3160,7 +3160,7 @@ sh_update_linear_entries(struct vcpu *v)
+--- 2007-02-20.orig/xen/arch/x86/mm/shadow/multi.c 2007-02-20 10:55:27.000000000 +0100
++++ 2007-02-20/xen/arch/x86/mm/shadow/multi.c 2007-02-20 10:56:04.000000000 +0100
+@@ -3195,7 +3195,7 @@ sh_update_linear_entries(struct vcpu *v)
*/
{
l2_pgentry_t *l2e, new_l2e;
@@ -36,10 +36,10 @@
int i;
int unmap_l2e = 0;
-Index: 2007-01-31/xen/arch/x86/traps.c
+Index: 2007-02-20/xen/arch/x86/traps.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/traps.c 2007-01-31 09:41:54.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/traps.c 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/traps.c 2007-02-20 10:56:00.000000000 +0100
++++ 2007-02-20/xen/arch/x86/traps.c 2007-02-20 10:56:04.000000000 +0100
@@ -635,14 +635,50 @@ asmlinkage int do_invalid_op(struct cpu_
if ( unlikely(!guest_mode(regs)) )
@@ -99,10 +99,10 @@
}
DEBUGGER_trap_fatal(TRAP_invalid_op, regs);
show_execution_state(regs);
-Index: 2007-01-31/xen/common/keyhandler.c
+Index: 2007-02-20/xen/common/keyhandler.c
===================================================================
---- 2007-01-31.orig/xen/common/keyhandler.c 2007-01-31 09:29:10.000000000 +0100
-+++ 2007-01-31/xen/common/keyhandler.c 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/common/keyhandler.c 2007-02-20 10:41:46.000000000 +0100
++++ 2007-02-20/xen/common/keyhandler.c 2007-02-20 10:56:04.000000000 +0100
@@ -94,7 +94,7 @@ static void show_handlers(unsigned char
static void __dump_execstate(void *unused)
@@ -112,10 +112,10 @@
}
static void dump_registers(unsigned char key, struct cpu_user_regs *regs)
-Index: 2007-01-31/xen/drivers/char/console.c
+Index: 2007-02-20/xen/drivers/char/console.c
===================================================================
---- 2007-01-31.orig/xen/drivers/char/console.c 2006-12-15 16:33:59.000000000 +0100
-+++ 2007-01-31/xen/drivers/char/console.c 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/drivers/char/console.c 2006-12-15 16:33:59.000000000 +0100
++++ 2007-02-20/xen/drivers/char/console.c 2007-02-20 10:56:04.000000000 +0100
@@ -880,15 +880,21 @@ void panic(const char *fmt, ...)
}
}
@@ -140,10 +140,10 @@
/*
* Local variables:
* mode: C
-Index: 2007-01-31/xen/include/asm-ia64/bug.h
+Index: 2007-02-20/xen/include/asm-ia64/bug.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ 2007-01-31/xen/include/asm-ia64/bug.h 2007-01-31 09:42:07.000000000 +0100
++++ 2007-02-20/xen/include/asm-ia64/bug.h 2007-02-20 10:56:04.000000000 +0100
@@ -0,0 +1,6 @@
+#ifndef __ASM_IA64_BUG_H__
+#define __ASM_IA64_BUG_H__
@@ -151,10 +151,10 @@
+#define DUMP_STATE() printk("FIXME: implement ia64 dump_execution_state()\n");
+
+#endif /* __ASM_IA64_BUG_H__ */
-Index: 2007-01-31/xen/include/asm-ia64/linux-xen/asm/iosapic.h
+Index: 2007-02-20/xen/include/asm-ia64/linux-xen/asm/iosapic.h
===================================================================
---- 2007-01-31.orig/xen/include/asm-ia64/linux-xen/asm/iosapic.h 2006-12-13 11:15:55.000000000 +0100
-+++ 2007-01-31/xen/include/asm-ia64/linux-xen/asm/iosapic.h 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/include/asm-ia64/linux-xen/asm/iosapic.h 2006-12-13 11:15:55.000000000 +0100
++++ 2007-02-20/xen/include/asm-ia64/linux-xen/asm/iosapic.h 2007-02-20 10:56:04.000000000 +0100
@@ -123,11 +123,10 @@ static inline void list_move(struct list
#define move_irq(x)
@@ -171,10 +171,10 @@
} while (0)
#ifdef nop
-Index: 2007-01-31/xen/include/asm-ia64/xenprocessor.h
+Index: 2007-02-20/xen/include/asm-ia64/xenprocessor.h
===================================================================
---- 2007-01-31.orig/xen/include/asm-ia64/xenprocessor.h 2006-12-13 11:15:55.000000000 +0100
-+++ 2007-01-31/xen/include/asm-ia64/xenprocessor.h 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/include/asm-ia64/xenprocessor.h 2006-12-13 11:15:55.000000000 +0100
++++ 2007-02-20/xen/include/asm-ia64/xenprocessor.h 2007-02-20 10:56:04.000000000 +0100
@@ -237,6 +237,4 @@ typedef union {
u64 itir;
} ia64_itir_t;
@@ -182,10 +182,10 @@
-#define dump_execution_state() printk("FIXME: implement ia64 dump_execution_state()\n");
-
#endif // _ASM_IA64_XENPROCESSOR_H
-Index: 2007-01-31/xen/include/asm-powerpc/bug.h
+Index: 2007-02-20/xen/include/asm-powerpc/bug.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ 2007-01-31/xen/include/asm-powerpc/bug.h 2007-01-31 09:42:07.000000000 +0100
++++ 2007-02-20/xen/include/asm-powerpc/bug.h 2007-02-20 10:56:04.000000000 +0100
@@ -0,0 +1,7 @@
+#ifndef __ASM_PPC_BUG_H__
+#define __ASM_PPC_BUG_H__
@@ -194,10 +194,10 @@
+#define DUMP_STATE() dump_execution_state()
+
+#endif /* __ASM_PPC_BUG_H__ */
-Index: 2007-01-31/xen/include/asm-powerpc/debugger.h
+Index: 2007-02-20/xen/include/asm-powerpc/debugger.h
===================================================================
---- 2007-01-31.orig/xen/include/asm-powerpc/debugger.h 2006-12-15 16:33:59.000000000 +0100
-+++ 2007-01-31/xen/include/asm-powerpc/debugger.h 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/include/asm-powerpc/debugger.h 2006-12-15 16:33:59.000000000 +0100
++++ 2007-02-20/xen/include/asm-powerpc/debugger.h 2007-02-20 10:56:04.000000000 +0100
@@ -67,10 +67,6 @@ static inline void unimplemented(void)
#endif
}
@@ -209,10 +209,10 @@
extern void __attn(void);
#define ATTN() __attn();
-Index: 2007-01-31/xen/include/asm-x86/bug.h
+Index: 2007-02-20/xen/include/asm-x86/bug.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ 2007-01-31/xen/include/asm-x86/bug.h 2007-01-31 09:42:07.000000000 +0100
++++ 2007-02-20/xen/include/asm-x86/bug.h 2007-02-20 10:56:04.000000000 +0100
@@ -0,0 +1,60 @@
+#ifndef __ASM_X86_BUG_H__
+#define __ASM_X86_BUG_H__
@@ -274,10 +274,10 @@
+ } while (0)
+
+#endif /* __ASM_X86_BUG_H__ */
-Index: 2007-01-31/xen/include/asm-x86/processor.h
+Index: 2007-02-20/xen/include/asm-x86/processor.h
===================================================================
---- 2007-01-31.orig/xen/include/asm-x86/processor.h 2007-01-31 09:29:08.000000000 +0100
-+++ 2007-01-31/xen/include/asm-x86/processor.h 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/include/asm-x86/processor.h 2007-02-20 10:41:44.000000000 +0100
++++ 2007-02-20/xen/include/asm-x86/processor.h 2007-02-20 10:56:04.000000000 +0100
@@ -565,11 +565,6 @@ void compat_show_guest_stack(struct cpu_
#define compat_show_guest_stack(regs, lines) ((void)0)
#endif
@@ -290,10 +290,10 @@
extern void mtrr_ap_init(void);
extern void mtrr_bp_init(void);
-Index: 2007-01-31/xen/include/xen/lib.h
+Index: 2007-02-20/xen/include/xen/lib.h
===================================================================
---- 2007-01-31.orig/xen/include/xen/lib.h 2007-01-08 14:16:35.000000000 +0100
-+++ 2007-01-31/xen/include/xen/lib.h 2007-01-31 09:42:07.000000000 +0100
+--- 2007-02-20.orig/xen/include/xen/lib.h 2007-01-08 14:16:35.000000000 +0100
++++ 2007-02-20/xen/include/xen/lib.h 2007-02-20 10:56:04.000000000 +0100
@@ -7,10 +7,26 @@
#include
#include
++++++ domUloader.py ++++++
--- arch/i386/xen/domUloader.py 2007-01-10 22:10:17.000000000 +0100
+++ /mounts/work_src_done/STABLE/xen/domUloader.py 2007-03-01 03:35:58.000000000 +0100
@@ -43,6 +43,7 @@
verbose = False
dryrun = False
tmpdir = '/var/lib/xen/tmp'
+in_args = ''
# Helper functions
@@ -353,17 +354,17 @@
def main(argv):
"Main routine: Parses options etc."
- global quiet, dryrun, verbose, tmpdir
+ global quiet, dryrun, verbose, tmpdir, in_args
def usage():
"Help output (usage info)"
global verbose, quiet, dryrun
print >> sys.stderr, "domUloader usage: domUloader [--output=fd] [--quiet] [--dryrun] [--verbose]\n" +\
- "[--help] --entry=dev:kernel[,ramdisk] physdisk [virtdisk]\n"
+ "[--args] [--help] --entry=dev:kernel[,ramdisk] physdisk [virtdisk]\n"
print >> sys.stderr, __doc__
try:
(optlist, args) = getopt.gnu_getopt(argv, 'qvh', \
- ('entry=', 'output=', 'tmpdir=', 'help', 'quiet', 'dryrun', 'verbose'))
+ ('entry=', 'output=', 'tmpdir=', 'args=', 'help', 'quiet', 'dryrun', 'verbose'))
except:
usage()
sys.exit(1)
@@ -389,6 +390,8 @@
entry = oarg
elif opt == '--tmpdir':
tmpdir = oarg
+ elif opt == '--args':
+ in_args = oarg
verbose_print(str(argv))
@@ -424,6 +427,8 @@
r = 0
try:
sxpr = copyKernelAndRamdisk(disk, vdev, kernel, ramdisk)
+ if in_args:
+ sxpr += "(args %s)" % in_args
os.write(fd, sxpr)
except Exception, e:
error(str(e))
++++++ x86-mm-simplify.patch ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:14.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:14.000000000 +0100
@@ -5,10 +5,10 @@
emulation context, while ptwr_do_page_fault() doesn't on the pte stored
into that context. Shouldn't these two be symmetric?
-Index: 2007-01-08/xen/arch/x86/mm.c
+Index: 2007-02-20/xen/arch/x86/mm.c
===================================================================
---- 2007-01-08.orig/xen/arch/x86/mm.c 2007-01-11 15:33:22.000000000 +0100
-+++ 2007-01-08/xen/arch/x86/mm.c 2007-01-12 17:25:55.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/mm.c 2007-02-20 10:55:57.000000000 +0100
++++ 2007-02-20/xen/arch/x86/mm.c 2007-02-20 10:56:12.000000000 +0100
@@ -794,7 +794,7 @@ static void put_page_from_l2e(l2_pgentry
{
if ( (l2e_get_flags(l2e) & _PAGE_PRESENT) &&
@@ -36,7 +36,7 @@
}
#endif
-@@ -3365,7 +3365,6 @@ int ptwr_do_page_fault(struct vcpu *v, u
+@@ -3369,7 +3369,6 @@ int ptwr_do_page_fault(struct vcpu *v, u
struct cpu_user_regs *regs)
{
struct domain *d = v->domain;
@@ -44,7 +44,7 @@
struct page_info *page;
l1_pgentry_t pte;
struct ptwr_emulate_ctxt ptwr_ctxt;
-@@ -3379,8 +3378,7 @@ int ptwr_do_page_fault(struct vcpu *v, u
+@@ -3383,8 +3382,7 @@ int ptwr_do_page_fault(struct vcpu *v, u
guest_get_eff_l1e(v, addr, &pte);
if ( !(l1e_get_flags(pte) & _PAGE_PRESENT) )
goto bail;
++++++ x86-nmi-inject.patch ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:14.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:14.000000000 +0100
@@ -1,7 +1,7 @@
-Index: 2007-01-31/xen/arch/x86/physdev.c
+Index: 2007-02-20/xen/arch/x86/physdev.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/physdev.c 2007-01-31 09:29:19.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/physdev.c 2007-02-14 18:22:18.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/physdev.c 2007-02-20 10:41:50.000000000 +0100
++++ 2007-02-20/xen/arch/x86/physdev.c 2007-02-20 10:56:30.000000000 +0100
@@ -143,6 +143,57 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_H
break;
}
@@ -60,10 +60,10 @@
default:
ret = -ENOSYS;
break;
-Index: 2007-01-31/xen/arch/x86/traps.c
+Index: 2007-02-20/xen/arch/x86/traps.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/traps.c 2007-02-07 17:03:20.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/traps.c 2007-02-15 10:12:21.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/traps.c 2007-02-20 10:56:27.000000000 +0100
++++ 2007-02-20/xen/arch/x86/traps.c 2007-02-20 10:56:30.000000000 +0100
@@ -2516,6 +2516,12 @@ long do_set_trap_table(XEN_GUEST_HANDLE(
if ( cur.address == 0 )
break;
@@ -77,10 +77,10 @@
fixup_guest_code_selector(current->domain, cur.cs);
memcpy(&dst[cur.vector], &cur, sizeof(cur));
-Index: 2007-01-31/xen/arch/x86/x86_32/asm-offsets.c
+Index: 2007-02-20/xen/arch/x86/x86_32/asm-offsets.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_32/asm-offsets.c 2006-12-13 11:15:54.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_32/asm-offsets.c 2007-02-15 09:51:44.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_32/asm-offsets.c 2006-12-13 11:15:54.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_32/asm-offsets.c 2007-02-20 10:56:30.000000000 +0100
@@ -68,6 +68,7 @@ void __dummy__(void)
OFFSET(VCPU_arch_guest_fpu_ctxt, struct vcpu, arch.guest_context.fpu_ctxt);
OFFSET(VCPU_flags, struct vcpu, vcpu_flags);
@@ -89,10 +89,10 @@
DEFINE(_VCPUF_nmi_pending, _VCPUF_nmi_pending);
DEFINE(_VCPUF_nmi_masked, _VCPUF_nmi_masked);
DEFINE(_VGCF_failsafe_disables_events, _VGCF_failsafe_disables_events);
-Index: 2007-01-31/xen/arch/x86/x86_32/entry.S
+Index: 2007-02-20/xen/arch/x86/x86_32/entry.S
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_32/entry.S 2007-01-31 09:42:04.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_32/entry.S 2007-02-15 09:54:40.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_32/entry.S 2007-02-20 10:56:03.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_32/entry.S 2007-02-20 10:56:30.000000000 +0100
@@ -232,7 +232,7 @@ test_all_events:
shl $IRQSTAT_shift,%eax
test %ecx,irq_stat(%eax,1)
@@ -128,10 +128,10 @@
jmp test_guest_events
bad_hypercall:
-Index: 2007-01-31/xen/arch/x86/x86_64/asm-offsets.c
+Index: 2007-02-20/xen/arch/x86/x86_64/asm-offsets.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_64/asm-offsets.c 2007-01-31 09:29:21.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_64/asm-offsets.c 2007-02-15 10:03:33.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_64/asm-offsets.c 2007-02-20 10:41:52.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_64/asm-offsets.c 2007-02-20 10:56:30.000000000 +0100
@@ -76,6 +76,7 @@ void __dummy__(void)
OFFSET(VCPU_arch_guest_fpu_ctxt, struct vcpu, arch.guest_context.fpu_ctxt);
OFFSET(VCPU_flags, struct vcpu, vcpu_flags);
@@ -140,10 +140,10 @@
DEFINE(_VCPUF_nmi_pending, _VCPUF_nmi_pending);
DEFINE(_VCPUF_nmi_masked, _VCPUF_nmi_masked);
DEFINE(_VGCF_failsafe_disables_events, _VGCF_failsafe_disables_events);
-Index: 2007-01-31/xen/arch/x86/x86_64/compat/entry.S
+Index: 2007-02-20/xen/arch/x86/x86_64/compat/entry.S
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_64/compat/entry.S 2007-01-31 09:42:04.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_64/compat/entry.S 2007-02-15 10:22:57.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_64/compat/entry.S 2007-02-20 10:56:03.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_64/compat/entry.S 2007-02-20 10:56:30.000000000 +0100
@@ -68,7 +68,7 @@ compat_test_all_events:
leaq irq_stat(%rip),%rcx
testl $~0,(%rcx,%rax,1)
@@ -198,10 +198,10 @@
movw $TBF_FAILSAFE,TRAPBOUNCE_flags(%rdx)
btq $_VGCF_failsafe_disables_events,VCPU_guest_context_flags(%rbx)
jnc 1f
-Index: 2007-01-31/xen/arch/x86/x86_64/compat/traps.c
+Index: 2007-02-20/xen/arch/x86/x86_64/compat/traps.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_64/compat/traps.c 2007-01-31 09:29:26.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_64/compat/traps.c 2007-02-15 10:10:46.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_64/compat/traps.c 2007-02-20 10:41:57.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_64/compat/traps.c 2007-02-20 10:56:30.000000000 +0100
@@ -287,6 +287,12 @@ int compat_set_trap_table(XEN_GUEST_HAND
if ( cur.address == 0 )
break;
@@ -215,10 +215,10 @@
fixup_guest_code_selector(current->domain, cur.cs);
XLAT_trap_info(dst + cur.vector, &cur);
-Index: 2007-01-31/xen/arch/x86/x86_64/entry.S
+Index: 2007-02-20/xen/arch/x86/x86_64/entry.S
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_64/entry.S 2007-01-31 09:42:04.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_64/entry.S 2007-02-14 17:15:25.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_64/entry.S 2007-02-20 10:56:03.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_64/entry.S 2007-02-20 10:56:30.000000000 +0100
@@ -177,7 +177,7 @@ test_all_events:
leaq irq_stat(%rip),%rcx
testl $~0,(%rcx,%rax,1)
@@ -246,10 +246,10 @@
jmp test_guest_events
bad_hypercall:
-Index: 2007-01-31/xen/arch/x86/x86_64/physdev.c
+Index: 2007-02-20/xen/arch/x86/x86_64/physdev.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/x86_64/physdev.c 2007-01-31 09:29:19.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/x86_64/physdev.c 2007-02-14 18:26:33.000000000 +0100
+--- 2007-02-20.orig/xen/arch/x86/x86_64/physdev.c 2007-02-20 10:41:50.000000000 +0100
++++ 2007-02-20/xen/arch/x86/x86_64/physdev.c 2007-02-20 10:56:30.000000000 +0100
@@ -30,6 +30,10 @@
#define physdev_irq_status_query compat_physdev_irq_status_query
#define physdev_irq_status_query_t physdev_irq_status_query_compat_t
@@ -261,11 +261,11 @@
#define COMPAT
#undef guest_handle_okay
#define guest_handle_okay compat_handle_okay
-Index: 2007-01-31/xen/common/kernel.c
+Index: 2007-02-20/xen/common/kernel.c
===================================================================
---- 2007-01-31.orig/xen/common/kernel.c 2007-01-31 09:44:25.000000000 +0100
-+++ 2007-01-31/xen/common/kernel.c 2007-02-15 10:18:48.000000000 +0100
-@@ -252,16 +252,20 @@ long register_guest_nmi_callback(unsigne
+--- 2007-02-20.orig/xen/common/kernel.c 2007-02-20 10:41:46.000000000 +0100
++++ 2007-02-20/xen/common/kernel.c 2007-02-20 10:56:30.000000000 +0100
+@@ -247,16 +247,20 @@ long register_guest_nmi_callback(unsigne
struct vcpu *v = current;
struct domain *d = current->domain;
@@ -290,7 +290,7 @@
set_bit(_VCPUF_nmi_pending, &v->vcpu_flags);
#endif
-@@ -272,6 +276,11 @@ long unregister_guest_nmi_callback(void)
+@@ -267,6 +271,11 @@ long unregister_guest_nmi_callback(void)
{
struct vcpu *v = current;
@@ -302,10 +302,10 @@
v->nmi_addr = 0;
return 0;
-Index: 2007-01-31/xen/include/public/physdev.h
+Index: 2007-02-20/xen/include/public/physdev.h
===================================================================
---- 2007-01-31.orig/xen/include/public/physdev.h 2006-12-13 11:15:56.000000000 +0100
-+++ 2007-01-31/xen/include/public/physdev.h 2007-02-14 18:21:35.000000000 +0100
+--- 2007-02-20.orig/xen/include/public/physdev.h 2006-12-13 11:15:56.000000000 +0100
++++ 2007-02-20/xen/include/public/physdev.h 2007-02-20 10:56:30.000000000 +0100
@@ -119,6 +119,22 @@ typedef struct physdev_irq physdev_irq_t
DEFINE_XEN_GUEST_HANDLE(physdev_irq_t);
@@ -329,10 +329,10 @@
* Argument to physdev_op_compat() hypercall. Superceded by new physdev_op()
* hypercall since 0x00030202.
*/
-Index: 2007-01-31/xen/include/xen/sched.h
+Index: 2007-02-20/xen/include/xen/sched.h
===================================================================
---- 2007-01-31.orig/xen/include/xen/sched.h 2007-01-31 09:39:18.000000000 +0100
-+++ 2007-01-31/xen/include/xen/sched.h 2007-02-15 09:38:57.000000000 +0100
+--- 2007-02-20.orig/xen/include/xen/sched.h 2007-02-20 10:42:03.000000000 +0100
++++ 2007-02-20/xen/include/xen/sched.h 2007-02-20 10:56:30.000000000 +0100
@@ -108,7 +108,11 @@ struct vcpu
/* Bitmask of CPUs on which this VCPU may run. */
cpumask_t cpu_affinity;
@@ -345,10 +345,10 @@
/* Bitmask of CPUs which are holding onto this VCPU's state. */
cpumask_t vcpu_dirty_cpumask;
-Index: 2007-01-31/xen/include/xlat.lst
+Index: 2007-02-20/xen/include/xlat.lst
===================================================================
---- 2007-01-31.orig/xen/include/xlat.lst 2007-01-31 09:29:27.000000000 +0100
-+++ 2007-01-31/xen/include/xlat.lst 2007-02-14 17:58:42.000000000 +0100
+--- 2007-02-20.orig/xen/include/xlat.lst 2007-02-20 10:41:58.000000000 +0100
++++ 2007-02-20/xen/include/xlat.lst 2007-02-20 10:56:30.000000000 +0100
@@ -40,6 +40,7 @@
! memory_map memory.h
! memory_reservation memory.h
++++++ x86-ptwr_emulate.patch ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:14.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:14.000000000 +0100
@@ -1,8 +1,8 @@
-Index: 2007-01-31/xen/arch/x86/mm.c
+Index: 2007-02-20/xen/arch/x86/mm.c
===================================================================
---- 2007-01-31.orig/xen/arch/x86/mm.c 2007-01-31 09:42:10.000000000 +0100
-+++ 2007-01-31/xen/arch/x86/mm.c 2007-01-31 09:43:38.000000000 +0100
-@@ -3248,14 +3248,15 @@ static int ptwr_emulated_update(
+--- 2007-02-20.orig/xen/arch/x86/mm.c 2007-02-20 10:56:12.000000000 +0100
++++ 2007-02-20/xen/arch/x86/mm.c 2007-02-20 10:56:25.000000000 +0100
+@@ -3252,14 +3252,15 @@ static int ptwr_emulated_update(
{
if ( (CONFIG_PAGING_LEVELS == 3 || IS_COMPAT(d)) &&
(bytes == 4) &&
@@ -22,7 +22,7 @@
*/
MEM_LOG("ptwr_emulate: fixing up invalid PAE PTE %"PRIpte,
l1e_get_intpte(nl1e));
-@@ -3387,7 +3388,7 @@ int ptwr_do_page_fault(struct vcpu *v, u
+@@ -3391,7 +3392,7 @@ int ptwr_do_page_fault(struct vcpu *v, u
(page_get_owner(page) != d) )
goto bail;
++++++ xend-actions-after.patch ++++++
# HG changeset patch
# User Jim Fehlig
# Date 1172864588 25200
# Node ID 9e87f7af7f21182be5080cac0e4715053529a797
# Parent 3ac19fda0bc256bac20a4decf7e13bb086162220
VM.actions_after_[shutdown|reboot|suspend|crash] were not set properly in VM record returned via Xen API.
This patch fixes typos in key name for these fields.
Signed-off-by: Jim Fehlig
diff -r 3ac19fda0bc2 -r 9e87f7af7f21 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Fri Mar 02 12:11:52 2007 +0000
+++ b/tools/python/xen/xend/XendDomainInfo.py Fri Mar 02 12:43:08 2007 -0700
@@ -2090,26 +2090,26 @@ class XendDomainInfo:
return self.info.get('tools_version', {})
def get_on_shutdown(self):
- after_shutdown = self.info.get('action_after_shutdown')
+ after_shutdown = self.info.get('actions_after_shutdown')
if not after_shutdown or after_shutdown not in XEN_API_ON_NORMAL_EXIT:
return XEN_API_ON_NORMAL_EXIT[-1]
return after_shutdown
def get_on_reboot(self):
- after_reboot = self.info.get('action_after_reboot')
+ after_reboot = self.info.get('actions_after_reboot')
if not after_reboot or after_reboot not in XEN_API_ON_NORMAL_EXIT:
return XEN_API_ON_NORMAL_EXIT[-1]
return after_reboot
def get_on_suspend(self):
# TODO: not supported
- after_suspend = self.info.get('action_after_suspend')
+ after_suspend = self.info.get('actions_after_suspend')
if not after_suspend or after_suspend not in XEN_API_ON_NORMAL_EXIT:
return XEN_API_ON_NORMAL_EXIT[-1]
return after_suspend
def get_on_crash(self):
- after_crash = self.info.get('action_after_crash')
+ after_crash = self.info.get('actions_after_crash')
if not after_crash or after_crash not in XEN_API_ON_CRASH_BEHAVIOUR:
return XEN_API_ON_CRASH_BEHAVIOUR[0]
return after_crash
++++++ xend_multiple_create.patch ++++++
Bugzilla #245253
Index: xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py
===================================================================
--- xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomain.py
+++ xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py
@@ -32,6 +32,7 @@ import threading
import xen.lowlevel.xc
+from xen.xend import sxp
from xen.xend import XendRoot, XendCheckpoint, XendDomainInfo
from xen.xend.PrettyPrint import prettyprint
from xen.xend.XendConfig import XendConfig
@@ -860,6 +861,11 @@ class XendDomain:
self.domains_lock.acquire()
try:
self._refresh()
+ for domid, dom in self.domains.items():
+ if (dom.state != DOM_STATE_HALTED and
+ (dom.getName() == sxp.child_value(config, 'name') or
+ dom.get_uuid() == sxp.child_value(config, 'uuid'))):
+ raise XendError("Domain is already running")
dominfo = XendDomainInfo.create(config)
self._add_domain(dominfo)
++++++ xen-domUloader.diff ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:15.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:15.000000000 +0100
@@ -1,35 +1,3 @@
-Index: xen-3.0.4-testing/tools/python/xen/xend/XendDomainInfo.py
-===================================================================
---- xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-3.0.4-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -41,7 +41,7 @@ from xen.xend import balloon, sxp, uuid,
- from xen.xend import XendRoot, XendNode, XendConfig
-
- from xen.xend.XendConfig import scrub_password
--from xen.xend.XendBootloader import bootloader
-+from xen.xend.XendBootloader import bootloader, bootfilter
- from xen.xend.XendError import XendError, VmError
- from xen.xend.XendDevices import XendDevices
- from xen.xend.xenstore.xstransact import xstransact, complete
-@@ -1556,13 +1556,17 @@ class XendDomainInfo:
- if not devtype or not devinfo or devtype not in ('vbd', 'tap'):
- continue
- disk = None
-+ vdisk = None
- for param in devinfo:
- if param[0] == 'uname':
- disk = param[1]
-- break
-+ elif param[0] == 'dev':
-+ vdisk = param[1]
-
- if disk is None:
- continue
-+ if not bootfilter(blexec, bootloader_args, vdisk):
-+ continue
- fn = blkdev_uname_to_file(disk)
- mounted = devtype == 'tap' and not os.stat(fn).st_rdev
- if mounted:
Index: xen-3.0.4-testing/tools/python/xen/xend/XendBootloader.py
===================================================================
--- xen-3.0.4-testing.orig/tools/python/xen/xend/XendBootloader.py
@@ -42,7 +10,16 @@
import shlex
from xen.xend import sxp
-@@ -97,3 +98,26 @@ def bootloader(blexec, disk, quiet = Fal
+@@ -57,6 +58,8 @@ def bootloader(blexec, disk, quiet = Fal
+ args.append("-q")
+ if dryrun:
+ args.append("--dryrun")
++ if kernel_args:
++ args.append("--args=%s" % kernel_args)
+ args.append("--output=%s" % fifo)
+ if blargs:
+ args.extend(shlex.split(blargs))
+@@ -97,3 +100,26 @@ def bootloader(blexec, disk, quiet = Fal
pin.input_eof()
blcfg = pin.val
return blcfg
@@ -69,6 +46,38 @@
+ return disk
+ return disks[0]
+
+Index: xen-3.0.4-testing/tools/python/xen/xend/XendDomainInfo.py
+===================================================================
+--- xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomainInfo.py
++++ xen-3.0.4-testing/tools/python/xen/xend/XendDomainInfo.py
+@@ -41,7 +41,7 @@ from xen.xend import balloon, sxp, uuid,
+ from xen.xend import XendRoot, XendNode, XendConfig
+
+ from xen.xend.XendConfig import scrub_password
+-from xen.xend.XendBootloader import bootloader
++from xen.xend.XendBootloader import bootloader, bootfilter
+ from xen.xend.XendError import XendError, VmError
+ from xen.xend.XendDevices import XendDevices
+ from xen.xend.xenstore.xstransact import xstransact, complete
+@@ -1556,13 +1556,17 @@ class XendDomainInfo:
+ if not devtype or not devinfo or devtype not in ('vbd', 'tap'):
+ continue
+ disk = None
++ vdisk = None
+ for param in devinfo:
+ if param[0] == 'uname':
+ disk = param[1]
+- break
++ elif param[0] == 'dev':
++ vdisk = param[1]
+
+ if disk is None:
+ continue
++ if not bootfilter(blexec, bootloader_args, vdisk):
++ continue
+ fn = blkdev_uname_to_file(disk)
+ mounted = devtype == 'tap' and not os.stat(fn).st_rdev
+ if mounted:
Index: xen-3.0.4-testing/tools/python/xen/xm/create.py
===================================================================
--- xen-3.0.4-testing.orig/tools/python/xen/xm/create.py
@@ -82,7 +91,7 @@
from xen.util import blkif
from xen.util import security
-@@ -710,14 +710,15 @@ def run_bootloader(vals, config_image):
+@@ -710,16 +710,18 @@ def run_bootloader(vals, config_image):
err("Bootloader '%s' isn't executable" % vals.bootloader)
if len(vals.disk) < 1:
err("No disks configured and boot loader requested")
@@ -98,5 +107,9 @@
+ uname = bootdisk[0]
+ file = blkif.blkdev_uname_to_file(uname)
return bootloader(vals.bootloader, file, not vals.console_autoconnect,
- vals.bootargs, config_image)
+- vals.bootargs, config_image)
++ vals.bootargs,
++ kernel_args = sxp.child_value(config_image, 'args'))
+ def make_config(vals):
+ """Create the domain configuration.
++++++ xen-ioemu-hvm-pv-support.diff ++++++
diff -Nuar ioemu-orig/hw/ide.c ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c 2007-03-01 15:18:35.000000000 -0700
+++ b/tools/ioemu/hw/ide.c 2007-03-01 15:19:15.000000000 -0700
@@ -392,6 +392,9 @@
int type; /* see IDE_TYPE_xxx */
} PCIIDEState;
+static PCIIDEState *principal_ide_controller;
+extern FILE *logfile;
+
#define DMA_MULTI_THREAD
#ifdef DMA_MULTI_THREAD
@@ -2001,6 +2004,27 @@
ide_dummy_transfer_stop(s);
}
+void ide_unplug_harddisks(void)
+{
+ IDEState *s;
+ int i;
+
+ if (!principal_ide_controller) {
+ fprintf(logfile, "No principal controller?\n");
+ return;
+ }
+ for (i = 0; i < 4; i++) {
+ s = principal_ide_controller->ide_if + i;
+ if (!s->bs)
+ continue; /* drive not present */
+ if (s->is_cdrom)
+ continue; /* cdrom */
+ /* Is a hard disk, unplug it. */
+ s->bs = NULL;
+ ide_reset(s);
+ }
+}
+
struct partition {
uint8_t boot_ind; /* 0x80 - active */
uint8_t head; /* starting head */
@@ -2436,6 +2460,9 @@
sizeof(PCIIDEState),
-1,
NULL, NULL);
+ if (principal_ide_controller)
+ abort();
+ principal_ide_controller = d;
d->type = IDE_TYPE_CMD646;
pci_conf = d->dev.config;
pci_conf[0x00] = 0x95; // CMD646
@@ -2493,6 +2520,9 @@
NULL, NULL);
d->type = IDE_TYPE_PIIX3;
+ if (principal_ide_controller)
+ abort();
+ principal_ide_controller = d;
pci_conf = d->dev.config;
pci_conf[0x00] = 0x86; // Intel
pci_conf[0x01] = 0x80;
diff -Nuar ioemu-orig/hw/pci.c ioemu/hw/pci.c
--- a/tools/ioemu/hw/pci.c 2007-03-01 15:18:35.000000000 -0700
+++ b/tools/ioemu/hw/pci.c 2007-03-01 15:19:15.000000000 -0700
@@ -514,3 +514,24 @@
}
}
+void pci_unplug_netifs(void)
+{
+ PCIBus *bus;
+ int x;
+
+ /* We only support one PCI bus */
+ for (bus = first_bus; bus; bus = NULL) {
+ for (x = 0; x < 256; x++) {
+ if (bus->devices[x] &&
+ bus->devices[x]->config[0xa] == 0 &&
+ bus->devices[x]->config[0xb] == 2) {
+ /* Found a netif. Remove it from the bus. Note that
+ we don't free it here, since there could still be
+ references to it floating around. There are only
+ ever one or two structures leaked, and it's not
+ worth finding them all. */
+ bus->devices[x] = NULL;
+ }
+ }
+ }
+}
diff -Nuar ioemu-orig/hw/xen_platform.c ioemu/hw/xen_platform.c
--- a/tools/ioemu/hw/xen_platform.c 2007-03-01 15:18:35.000000000 -0700
+++ b/tools/ioemu/hw/xen_platform.c 2007-03-01 15:19:15.000000000 -0700
@@ -29,9 +29,36 @@
extern FILE *logfile;
+static uint32_t ioport_base;
+
static void platform_ioport_write(void *opaque, uint32_t addr, uint32_t val)
{
- return;
+ DECLARE_DOMCTL;
+ int rc;
+
+ switch (addr - ioport_base) {
+ case 0:
+ fprintf(logfile, "Init hypercall page %x, addr %x.\n", val, addr);
+ domctl.domain = (domid_t)domid;
+ domctl.u.hypercall_init.gmfn = val;
+ domctl.cmd = XEN_DOMCTL_hypercall_init;
+ rc = xc_domctl(xc_handle, &domctl);
+ fprintf(logfile, "result -> %d.\n", rc);
+ break;
+ case 4:
+ fprintf(logfile, "Disconnect IDE hard disk...\n");
+ ide_unplug_harddisks();
+ fprintf(logfile, "Disconnect netifs...\n");
+ pci_unplug_netifs();
+ fprintf(logfile, "Shutdown taps...\n");
+ net_tap_shutdown_all();
+ fprintf(logfile, "Done.\n");
+ break;
+ default:
+ fprintf(logfile, "Write to bad port %x (base %x) on evtchn device.\n",
+ addr, ioport_base);
+ break;
+ }
}
static uint32_t platform_ioport_read(void *opaque, uint32_t addr)
@@ -42,6 +69,8 @@
static void platform_ioport_map(PCIDevice *pci_dev, int region_num,
uint32_t addr, uint32_t size, int type)
{
+ ioport_base = addr;
+
register_ioport_write(addr, 16, 4, platform_ioport_write, NULL);
register_ioport_read(addr, 16, 1, platform_ioport_read, NULL);
}
diff -Nuar ioemu-orig/vl.c ioemu/vl.c
--- a/tools/ioemu/vl.c 2007-03-01 15:18:35.000000000 -0700
+++ b/tools/ioemu/vl.c 2007-03-01 15:19:15.000000000 -0700
@@ -170,6 +170,19 @@
char domain_name[1024] = { 'H','V', 'M', 'X', 'E', 'N', '-'};
extern int domid;
+typedef struct IOHandlerRecord {
+ int fd;
+ IOCanRWHandler *fd_read_poll;
+ IOHandler *fd_read;
+ IOHandler *fd_write;
+ void *opaque;
+ /* temporary data */
+ struct pollfd *ufd;
+ struct IOHandlerRecord *next;
+} IOHandlerRecord;
+
+static IOHandlerRecord *first_io_handler;
+
char vncpasswd[64];
unsigned char challenge[AUTHCHALLENGESIZE];
@@ -3084,6 +3097,7 @@
typedef struct TAPState {
VLANClientState *vc;
int fd;
+ struct TAPState *next;
} TAPState;
static void tap_receive(void *opaque, const uint8_t *buf, int size)
@@ -3111,6 +3125,36 @@
}
}
+static TAPState *head_net_tap;
+
+void net_tap_shutdown_all(void)
+{
+ struct IOHandlerRecord **pioh, *ioh;
+
+ while (head_net_tap) {
+ pioh = &first_io_handler;
+ for (;;) {
+ ioh = *pioh;
+ if (ioh == NULL)
+ break;
+ if (ioh->fd == head_net_tap->fd) {
+ *pioh = ioh->next;
+ qemu_free(ioh);
+ break;
+ }
+ pioh = &ioh->next;
+ }
+ if (!ioh)
+ fprintf(stderr,
+ "warning: can't find iohandler for %d to close it properly.\n",
+ head_net_tap->fd);
+ close(head_net_tap->fd);
+ head_net_tap = head_net_tap->next;
+ }
+}
+
+
+
/* fd support */
static TAPState *net_tap_fd_init(VLANState *vlan, int fd)
@@ -3122,6 +3166,8 @@
return NULL;
s->fd = fd;
s->vc = qemu_new_vlan_client(vlan, tap_receive, NULL, s);
+ s->next = head_net_tap;
+ head_net_tap = s;
qemu_set_fd_handler(s->fd, tap_send, NULL, s);
snprintf(s->vc->info_str, sizeof(s->vc->info_str), "tap: fd=%d", fd);
return s;
@@ -4047,19 +4093,6 @@
#define MAX_IO_HANDLERS 64
-typedef struct IOHandlerRecord {
- int fd;
- IOCanRWHandler *fd_read_poll;
- IOHandler *fd_read;
- IOHandler *fd_write;
- void *opaque;
- /* temporary data */
- struct pollfd *ufd;
- struct IOHandlerRecord *next;
-} IOHandlerRecord;
-
-static IOHandlerRecord *first_io_handler;
-
/* XXX: fd_read_poll should be suppressed, but an API change is
necessary in the character devices to suppress fd_can_read(). */
int qemu_set_fd_handler2(int fd,
diff -Nuar ioemu-orig/vl.h ioemu/vl.h
--- a/tools/ioemu/vl.h 2007-03-01 15:18:35.000000000 -0700
+++ b/tools/ioemu/vl.h 2007-03-01 15:19:15.000000000 -0700
@@ -826,6 +826,7 @@
void pci_piix3_ide_init(PCIBus *bus, BlockDriverState **hd_table, int devfn);
int pmac_ide_init (BlockDriverState **hd_table,
SetIRQFunc *set_irq, void *irq_opaque, int irq);
+void ide_unplug_harddisks(void);
/* cdrom.c */
int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
@@ -1268,6 +1269,8 @@
extern char domain_name[];
void destroy_hvm_domain(void);
+void net_tap_shutdown_all(void);
+void pci_unplug_netifs(void);
/* VNC Authentication */
#define AUTHCHALLENGESIZE 16
++++++ xen-messages.diff ++++++
--- /var/tmp/diff_new_pack.s23988/_old 2007-03-06 09:12:15.000000000 +0100
+++ /var/tmp/diff_new_pack.s23988/_new 2007-03-06 09:12:15.000000000 +0100
@@ -1,8 +1,7 @@
-Index: xen-3.0.4-testing/tools/misc/xend
-===================================================================
---- xen-3.0.4-testing.orig/tools/misc/xend
-+++ xen-3.0.4-testing/tools/misc/xend
-@@ -60,22 +60,6 @@ def hline():
+diff -ru xen-3.0.4-testing.orig/tools/misc/xend xen-3.0.4-testing/tools/misc/xend
+--- xen-3.0.4-testing.orig/tools/misc/xend 2006-12-14 14:49:56.000000000 -0700
++++ xen-3.0.4-testing/tools/misc/xend 2007-03-01 18:05:38.000000000 -0700
+@@ -60,22 +60,6 @@
def msg(message):
print >>sys.stderr, "*" * 3, message
@@ -25,7 +24,7 @@
def check_user():
"""Check that the effective user id is 0 (root).
"""
-@@ -102,7 +86,6 @@ def start_blktapctrl():
+@@ -102,7 +86,6 @@
def main():
try:
@@ -33,16 +32,24 @@
check_user()
except CheckError:
sys.exit(1)
-Index: xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py
-===================================================================
---- xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomain.py
-+++ xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py
-@@ -780,6 +780,8 @@ class XendDomain:
+diff -ru xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomain.py xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py
+--- xen-3.0.4-testing.orig/tools/python/xen/xend/XendDomain.py 2006-12-18 14:57:04.000000000 -0700
++++ xen-3.0.4-testing/tools/python/xen/xend/XendDomain.py 2007-03-01 18:06:31.000000000 -0700
+@@ -780,6 +780,8 @@
if dominfo.getDomid() == DOM0_ID:
raise XendError("Cannot save privileged domain %s" % domname)
-+ if dominfo.readVm('image/ostype') == "hvm":
++ if dominfo._readVm('image/ostype') == "hvm":
+ raise XendError("Cannot save fully virtualized domains")
if dominfo.state != DOM_STATE_RUNNING:
raise XendError("Cannot suspend domain that is not running.")
+@@ -1158,6 +1160,8 @@
+
+ if dominfo.getDomid() == DOM0_ID:
+ raise XendError("Cannot save privileged domain %i" % domid)
++ if dominfo._readVm('image/ostype') == "hvm":
++ raise XendError("Cannot save fully virtualized domains")
+
+ fd = os.open(dst, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
+ try:
++++++ xen-perdomain-free.patch ++++++
Index: xen-3.0.4-testing/xen/arch/x86/domain.c
===================================================================
--- xen-3.0.4-testing.orig/xen/arch/x86/domain.c
+++ xen-3.0.4-testing/xen/arch/x86/domain.c
@@ -455,8 +455,10 @@ int arch_domain_create(struct domain *d)
fail:
free_xenheap_page(d->shared_info);
#ifdef __x86_64__
- free_domheap_page(virt_to_page(d->arch.mm_perdomain_l2));
- free_domheap_page(virt_to_page(d->arch.mm_perdomain_l3));
+ if (d->arch.mm_perdomain_l2)
+ free_domheap_page(virt_to_page(d->arch.mm_perdomain_l2));
+ if (d->arch.mm_perdomain_l3)
+ free_domheap_page(virt_to_page(d->arch.mm_perdomain_l3));
#endif
free_xenheap_pages(d->arch.mm_perdomain_pt, pdpt_order);
return rc;
++++++ xen-vm-install.tar.bz2 ++++++
++++ 14060 lines of diff (skipped)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org