commit xen for openSUSE:Factory
Hello community,
here is the log from the commit of package xen for openSUSE:Factory checked in at 2013-07-04 09:14:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xen (Old)
and /work/SRC/openSUSE:Factory/.xen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xen"
Changes:
--------
--- /work/SRC/openSUSE:Factory/xen/xen.changes 2013-06-20 17:06:25.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.xen.new/xen.changes 2013-07-04 09:14:04.000000000 +0200
@@ -1,0 +2,15 @@
+Thu Jun 27 16:57:08 MDT 2013 - carnold@suse.com
+
+- Update to Xen 4.3.0-rc6
+
+-------------------------------------------------------------------
+Wed Jun 19 14:34:20 MDT 2013 - carnold@suse.com
+
+- Update to Xen 4.3.0-rc5
+
+-------------------------------------------------------------------
+Wed Jun 14 11:06:23 MDT 2013 - carnold@suse.com
+
+- Update to Xen 4.3.0-rc4
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.Z362Hq/_old 2013-07-04 09:14:07.000000000 +0200
+++ /var/tmp/diff_new_pack.Z362Hq/_new 2013-07-04 09:14:07.000000000 +0200
@@ -20,7 +20,7 @@
ExclusiveArch: %ix86 x86_64
%define xvers 4.3
%define xvermaj 4
-%define changeset 27093
+%define changeset 27190
%define xen_build_dir xen-4.3.0-testing
%define with_kmp 1
%define with_stubdom 1
@@ -120,7 +120,7 @@
BuildRequires: lndir
%endif
%endif
-Version: 4.3.0_03
+Version: 4.3.0_06
Release: 0
PreReq: %insserv_prereq %fillup_prereq
Summary: Xen Virtualization: Hypervisor (aka VMM aka Microkernel)
@@ -887,6 +887,7 @@
rm -rf $RPM_BUILD_ROOT/%{_libdir}/xen
rm -rf $RPM_BUILD_ROOT/%{_libdir}/python*
rm -rf $RPM_BUILD_ROOT/usr/sbin
+rm -f $RPM_BUILD_ROOT/usr/bin/xencov_split
rm -rf $RPM_BUILD_ROOT/etc/bash_completion.d
rm -rf $RPM_BUILD_ROOT/etc/init.d
rm -rf $RPM_BUILD_ROOT/etc/logrotate.d
@@ -945,6 +946,7 @@
/usr/bin/pygrub
/usr/bin/tapdisk-ioemu
/usr/bin/remus
+/usr/bin/xencov_split
/usr/sbin/blktapctrl
/usr/sbin/flask-*
/usr/sbin/tap*
++++++ blktap-pv-cdrom.patch ++++++
--- /var/tmp/diff_new_pack.Z362Hq/_old 2013-07-04 09:14:07.000000000 +0200
+++ /var/tmp/diff_new_pack.Z362Hq/_new 2013-07-04 09:14:07.000000000 +0200
@@ -696,7 +696,7 @@
===================================================================
--- xen-4.3.0-testing.orig/xen/include/public/io/blkif.h
+++ xen-4.3.0-testing/xen/include/public/io/blkif.h
-@@ -439,7 +439,7 @@
+@@ -444,7 +444,7 @@
* Used in SLES sources for device specific command packet
* contained within the request. Reserved for that purpose.
*/
++++++ disable-wget-check.patch ++++++
--- /var/tmp/diff_new_pack.Z362Hq/_old 2013-07-04 09:14:07.000000000 +0200
+++ /var/tmp/diff_new_pack.Z362Hq/_new 2013-07-04 09:14:07.000000000 +0200
@@ -219,32 +219,17 @@
===================================================================
--- xen-4.3.0-testing.orig/stubdom/configure
+++ xen-4.3.0-testing/stubdom/configure
-@@ -593,7 +593,6 @@ CPPFLAGS
- LDFLAGS
+@@ -594,8 +594,6 @@ LDFLAGS
CFLAGS
CC
+ FETCHER
+-FTP
-WGET
CMAKE
extfiles
debug
-@@ -657,7 +656,6 @@ enable_extfiles
- host_alias
- target_alias
- CMAKE
--WGET
- CC
- CFLAGS
- LDFLAGS
-@@ -1299,7 +1297,6 @@ Optional Features:
+@@ -2165,104 +2163,104 @@ extfiles=$ax_cv_extfiles
- Some influential environment variables:
- CMAKE Path to the cmake program
-- WGET Path to wget program
- CC C compiler command
- CFLAGS C compiler flags
- LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
-@@ -3079,50 +3076,50 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
- test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
# Extract the first word of "wget", so it can be a program name with args.
-set dummy wget; ac_word=$2
@@ -287,9 +272,63 @@
-fi
-
-
--if test x"${WGET}" = x"no"
--then
-- as_fn_error $? "Unable to find wget, please install wget" "$LINENO" 5
+-if test x"$WGET" != x"no"; then :
+-
+- FETCHER="$WGET -c -O"
+-
+-else
+-
+- # Extract the first word of "ftp", so it can be a program name with args.
+-set dummy ftp; ac_word=$2
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+-$as_echo_n "checking for $ac_word... " >&6; }
+-if test "${ac_cv_path_FTP+set}" = set; then :
+- $as_echo_n "(cached) " >&6
+-else
+- case $FTP in
+- [\\/]* | ?:[\\/]*)
+- ac_cv_path_FTP="$FTP" # Let the user override the test with a path.
+- ;;
+- *)
+- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+-for as_dir in $PATH
+-do
+- IFS=$as_save_IFS
+- test -z "$as_dir" && as_dir=.
+- for ac_exec_ext in '' $ac_executable_extensions; do
+- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+- ac_cv_path_FTP="$as_dir/$ac_word$ac_exec_ext"
+- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+- break 2
+- fi
+-done
+- done
+-IFS=$as_save_IFS
+-
+- test -z "$ac_cv_path_FTP" && ac_cv_path_FTP="no"
+- ;;
+-esac
+-fi
+-FTP=$ac_cv_path_FTP
+-if test -n "$FTP"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FTP" >&5
+-$as_echo "$FTP" >&6; }
+-else
+- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+-$as_echo "no" >&6; }
+-fi
+-
+-
+- if test x"$FTP" != x"no"; then :
+-
+- FETCHER="$FTP -o"
+-
+-else
+-
+- as_fn_error $? "cannot find wget or ftp" "$LINENO" 5
+-
+-fi
+-
-fi
+#set dummy wget; ac_word=$2
+#{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
@@ -331,10 +370,64 @@
+#fi
+#
+#
-+#if test x"${WGET}" = x"no"
-+#then
-+# as_fn_error $? "Unable to find wget, please install wget" "$LINENO" 5
++#if test x"$WGET" != x"no"; then :
++#
++# FETCHER="$WGET -c -O"
++#
++#else
++#
++# # Extract the first word of "ftp", so it can be a program name with args.
++#set dummy ftp; ac_word=$2
++#{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
++#$as_echo_n "checking for $ac_word... " >&6; }
++#if test "${ac_cv_path_FTP+set}" = set; then :
++# $as_echo_n "(cached) " >&6
++#else
++# case $FTP in
++# [\\/]* | ?:[\\/]*)
++# ac_cv_path_FTP="$FTP" # Let the user override the test with a path.
++# ;;
++# *)
++# as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
++#for as_dir in $PATH
++#do
++# IFS=$as_save_IFS
++# test -z "$as_dir" && as_dir=.
++# for ac_exec_ext in '' $ac_executable_extensions; do
++# if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
++# ac_cv_path_FTP="$as_dir/$ac_word$ac_exec_ext"
++# $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
++# break 2
++# fi
++#done
++# done
++#IFS=$as_save_IFS
++#
++# test -z "$ac_cv_path_FTP" && ac_cv_path_FTP="no"
++# ;;
++#esac
+#fi
++#FTP=$ac_cv_path_FTP
++#if test -n "$FTP"; then
++# { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FTP" >&5
++#$as_echo "$FTP" >&6; }
++#else
++# { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++#$as_echo "no" >&6; }
++#fi
++#
++#
++# if test x"$FTP" != x"no"; then :
++#
++# FETCHER="$FTP -o"
++#
++#else
++#
++# as_fn_error $? "cannot find wget or ftp" "$LINENO" 5
++#
++#fi
++#
++#fi
+
- # Checks for programs that depend on a feature
++++++ qemu-xen-dir-remote.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/docs/specs/acpi_cpu_hotplug.txt new/tools/qemu-xen-dir-remote/docs/specs/acpi_cpu_hotplug.txt
--- old/tools/qemu-xen-dir-remote/docs/specs/acpi_cpu_hotplug.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/tools/qemu-xen-dir-remote/docs/specs/acpi_cpu_hotplug.txt 2013-06-28 00:04:09.000000000 +0200
@@ -0,0 +1,22 @@
+QEMU<->ACPI BIOS CPU hotplug interface
+--------------------------------------
+
+QEMU supports CPU hotplug via ACPI. This document
+describes the interface between QEMU and the ACPI BIOS.
+
+ACPI GPE block (IO ports 0xafe0-0xafe3, byte access):
+-----------------------------------------
+
+Generic ACPI GPE block. Bit 2 (GPE.2) used to notify CPU
+hot-add/remove event to ACPI BIOS, via SCI interrupt.
+
+CPU present bitmap (IO port 0xaf00-0xae1f, 1-byte access):
+---------------------------------------------------------------
+One bit per CPU. Bit position reflects corresponding CPU APIC ID.
+Read-only.
+
+CPU hot-add/remove notification:
+-----------------------------------------------------
+QEMU sets/clears corresponding CPU bit on hot-add/remove event.
+CPU present map read by ACPI BIOS GPE.2 handler to notify OS of CPU
+hot-(un)plug events.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/exec.c new/tools/qemu-xen-dir-remote/exec.c
--- old/tools/qemu-xen-dir-remote/exec.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/exec.c 2013-06-28 00:04:09.000000000 +0200
@@ -692,6 +692,16 @@
return env;
}
+void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data)
+{
+ CPUArchState *env = first_cpu;
+
+ while (env) {
+ func(ENV_GET_CPU(env), data);
+ env = env->next_cpu;
+ }
+}
+
void cpu_exec_init(CPUArchState *env)
{
#ifndef CONFIG_USER_ONLY
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/hw/acpi_piix4.c new/tools/qemu-xen-dir-remote/hw/acpi_piix4.c
--- old/tools/qemu-xen-dir-remote/hw/acpi_piix4.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/hw/acpi_piix4.c 2013-06-28 00:04:09.000000000 +0200
@@ -28,6 +28,7 @@
#include "range.h"
#include "ioport.h"
#include "fw_cfg.h"
+#include "qemu/cpu.h"
//#define DEBUG
@@ -46,16 +47,26 @@
#define PCI_EJ_BASE 0xae08
#define PCI_RMV_BASE 0xae0c
+#define PIIX4_PROC_BASE 0xaf00
+#define PIIX4_PROC_LEN 32
+
#define PIIX4_PCI_HOTPLUG_STATUS 2
+#define PIIX4_CPU_HOTPLUG_STATUS 4
struct pci_status {
uint32_t up; /* deprecated, maintained for migration compatibility */
uint32_t down;
};
+typedef struct CPUStatus {
+ uint8_t sts[PIIX4_PROC_LEN];
+} CPUStatus;
+
typedef struct PIIX4PMState {
PCIDevice dev;
IORange ioport;
+
+ MemoryRegion io_cpu;
ACPIREGS ar;
APMState apm;
@@ -77,6 +88,8 @@
uint8_t disable_s3;
uint8_t disable_s4;
uint8_t s4_val;
+
+ CPUStatus gpe_cpu;
} PIIX4PMState;
static void piix4_acpi_system_hot_add_init(PCIBus *bus, PIIX4PMState *s);
@@ -94,8 +107,8 @@
ACPI_BITMASK_POWER_BUTTON_ENABLE |
ACPI_BITMASK_GLOBAL_LOCK_ENABLE |
ACPI_BITMASK_TIMER_ENABLE)) != 0) ||
- (((s->ar.gpe.sts[0] & s->ar.gpe.en[0])
- & PIIX4_PCI_HOTPLUG_STATUS) != 0);
+ (((s->ar.gpe.sts[0] & s->ar.gpe.en[0]) &
+ (PIIX4_PCI_HOTPLUG_STATUS | PIIX4_CPU_HOTPLUG_STATUS)) != 0);
qemu_set_irq(s->irq, sci_level);
/* schedule a timer interruption if needed */
@@ -602,6 +615,83 @@
return s->pci0_hotplug_enable;
}
+static uint64_t cpu_status_read(void *opaque, hwaddr addr, unsigned int size)
+{
+ PIIX4PMState *s = opaque;
+ CPUStatus *cpus = &s->gpe_cpu;
+ uint64_t val = cpus->sts[addr];
+
+ return val;
+}
+
+static void cpu_status_write(void *opaque, hwaddr addr, uint64_t data,
+ unsigned int size)
+{
+ /* TODO: implement VCPU removal on guest signal that CPU can be removed */
+}
+
+static const MemoryRegionOps cpu_hotplug_ops = {
+ .read = cpu_status_read,
+ .write = cpu_status_write,
+ .endianness = DEVICE_LITTLE_ENDIAN,
+ .valid = {
+ .min_access_size = 1,
+ .max_access_size = 1,
+ },
+};
+
+typedef enum {
+ PLUG,
+ UNPLUG,
+} HotplugEventType;
+
+static void piix4_cpu_hotplug_req(PIIX4PMState *s, int64_t cpu_id,
+ HotplugEventType action)
+{
+ CPUStatus *g = &s->gpe_cpu;
+ ACPIGPE *gpe = &s->ar.gpe;
+
+ assert(s != NULL);
+
+ *gpe->sts = *gpe->sts | PIIX4_CPU_HOTPLUG_STATUS;
+ if (action == PLUG) {
+ g->sts[cpu_id / 8] |= (1 << (cpu_id % 8));
+ } else {
+ g->sts[cpu_id / 8] &= ~(1 << (cpu_id % 8));
+ }
+ pm_update_sci(s);
+}
+
+static PIIX4PMState *piix4pm_state;
+void piix4_cpu_hotplug_add(const int64_t cpu_id, Error **errp)
+{
+ CPUStatus *g = &piix4pm_state->gpe_cpu;
+
+ if (cpu_id >= max_cpus) {
+ error_setg(errp, "Unable to add CPU: %" PRIi64
+ ", max allowed: %d", cpu_id, max_cpus - 1);
+ return;
+ }
+ if (g->sts[cpu_id / 8] & (1 << (cpu_id % 8))) {
+ /* Already requested to be hotplug. */
+ error_setg(errp, "Unable to add CPU: %" PRIi64
+ ", it already exists", cpu_id);
+ return;
+ }
+
+ piix4_cpu_hotplug_req(piix4pm_state, cpu_id, PLUG);
+}
+
+static void piix4_init_cpu_status(CPUState *cpu, void *data)
+{
+ CPUStatus *g = (CPUStatus *)data;
+ CPUClass *k = CPU_GET_CLASS(cpu);
+ int64_t id = k->get_arch_id(cpu);
+
+ g_assert((id / 8) < PIIX4_PROC_LEN);
+ g->sts[id / 8] |= (1 << (id % 8));
+}
+
static int piix4_device_hotplug(DeviceState *qdev, PCIDevice *dev,
PCIHotplugState state);
@@ -621,6 +711,13 @@
register_ioport_read(PCI_RMV_BASE, 4, 4, pcirmv_read, s);
pci_bus_hotplug(bus, piix4_device_hotplug, &s->dev.qdev);
+
+ qemu_for_each_cpu(piix4_init_cpu_status, &s->gpe_cpu);
+ memory_region_init_io(&s->io_cpu, &cpu_hotplug_ops, s, "apci-cpu-hotplug",
+ PIIX4_PROC_LEN);
+ memory_region_add_subregion(pci_address_space_io(&s->dev),
+ PIIX4_PROC_BASE, &s->io_cpu);
+ piix4pm_state = s;
}
static void enable_device(PIIX4PMState *s, int slot)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/hw/boards.h new/tools/qemu-xen-dir-remote/hw/boards.h
--- old/tools/qemu-xen-dir-remote/hw/boards.h 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/hw/boards.h 2013-06-28 00:04:09.000000000 +0200
@@ -18,6 +18,8 @@
typedef void QEMUMachineResetFunc(void);
+typedef void QEMUMachineHotAddCPUFunc(const int64_t id, Error **errp);
+
typedef struct QEMUMachine {
const char *name;
const char *alias;
@@ -25,6 +27,7 @@
QEMUMachineInitFunc *init;
QEMUMachineResetFunc *reset;
int use_scsi;
+ QEMUMachineHotAddCPUFunc *hot_add_cpu;
int max_cpus;
unsigned int no_serial:1,
no_parallel:1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/hw/pc_piix.c new/tools/qemu-xen-dir-remote/hw/pc_piix.c
--- old/tools/qemu-xen-dir-remote/hw/pc_piix.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/hw/pc_piix.c 2013-06-28 00:04:09.000000000 +0200
@@ -621,6 +621,7 @@
.init = pc_xen_hvm_init,
.max_cpus = HVM_MAX_VCPUS,
.default_machine_opts = "accel=xen",
+ .hot_add_cpu = piix4_cpu_hotplug_add,
};
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/hw/xen.h new/tools/qemu-xen-dir-remote/hw/xen.h
--- old/tools/qemu-xen-dir-remote/hw/xen.h 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/hw/xen.h 2013-06-28 00:04:09.000000000 +0200
@@ -25,11 +25,7 @@
static inline int xen_enabled(void)
{
-#if defined(CONFIG_XEN_BACKEND) && !defined(CONFIG_NO_XEN)
return xen_allowed;
-#else
- return 0;
-#endif
}
int xen_pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/include/qemu/cpu.h new/tools/qemu-xen-dir-remote/include/qemu/cpu.h
--- old/tools/qemu-xen-dir-remote/include/qemu/cpu.h 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/include/qemu/cpu.h 2013-06-28 00:04:09.000000000 +0200
@@ -41,6 +41,7 @@
/**
* CPUClass:
* @reset: Callback to reset the #CPUState to its initial state.
+ * @get_arch_id: Callback for getting architecture-dependent CPU ID.
*
* Represents a CPU family or model.
*/
@@ -50,6 +51,7 @@
/*< public >*/
void (*reset)(CPUState *cpu);
+ int64_t (*get_arch_id)(CPUState *cpu);
} CPUClass;
/**
@@ -136,5 +138,14 @@
*/
void run_on_cpu(CPUState *cpu, void (*func)(void *data), void *data);
+/**
+ * qemu_for_each_cpu:
+ * @func: The function to be executed.
+ * @data: Data to pass to the function.
+ *
+ * Executes @func for each CPU.
+ */
+void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data);
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/qapi-schema.json new/tools/qemu-xen-dir-remote/qapi-schema.json
--- old/tools/qemu-xen-dir-remote/qapi-schema.json 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/qapi-schema.json 2013-06-28 00:04:09.000000000 +0200
@@ -1284,6 +1284,19 @@
{ 'command': 'cpu', 'data': {'index': 'int'} }
##
+# @cpu-add
+#
+# Adds CPU with specified ID
+#
+# @id: ID of CPU to be created, valid values [0..max_cpus)
+#
+# Returns: Nothing on success
+#
+# Since 1.5
+##
+{ 'command': 'cpu-add', 'data': {'id': 'int'} }
+
+##
# @memsave:
#
# Save a portion of guest memory to a file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/qmp-commands.hx new/tools/qemu-xen-dir-remote/qmp-commands.hx
--- old/tools/qemu-xen-dir-remote/qmp-commands.hx 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/qmp-commands.hx 2013-06-28 00:04:09.000000000 +0200
@@ -385,6 +385,29 @@
EQMP
{
+ .name = "cpu-add",
+ .args_type = "id:i",
+ .mhandler.cmd_new = qmp_marshal_input_cpu_add,
+ },
+
+SQMP
+cpu-add
+-------
+
+Adds virtual cpu
+
+Arguments:
+
+- "id": cpu id (json-int)
+
+Example:
+
+-> { "execute": "cpu-add", "arguments": { "id": 2 } }
+<- { "return": {} }
+
+EQMP
+
+ {
.name = "memsave",
.args_type = "val:l,size:i,filename:s,cpu:i?",
.mhandler.cmd_new = qmp_marshal_input_memsave,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/qmp.c new/tools/qemu-xen-dir-remote/qmp.c
--- old/tools/qemu-xen-dir-remote/qmp.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/qmp.c 2013-06-28 00:04:09.000000000 +0200
@@ -23,6 +23,7 @@
#include "hw/qdev.h"
#include "blockdev.h"
#include "qemu/qom-qobject.h"
+#include "hw/boards.h"
NameInfo *qmp_query_name(Error **errp)
{
@@ -107,6 +108,15 @@
/* Just do nothing */
}
+void qmp_cpu_add(int64_t id, Error **errp)
+{
+ if (current_machine->hot_add_cpu) {
+ current_machine->hot_add_cpu(id, errp);
+ } else {
+ error_setg(errp, "Not supported");
+ }
+}
+
#ifndef CONFIG_VNC
/* If VNC support is enabled, the "true" query-vnc command is
defined in the VNC subsystem */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/qom/cpu.c new/tools/qemu-xen-dir-remote/qom/cpu.c
--- old/tools/qemu-xen-dir-remote/qom/cpu.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/qom/cpu.c 2013-06-28 00:04:09.000000000 +0200
@@ -34,11 +34,19 @@
{
}
+static int64_t cpu_common_get_arch_id(CPUState *cpu)
+{
+ /* Not used in Xen, so no backport.
+ * There is a missing cpu_index field in CPUState. */
+ abort();
+}
+
static void cpu_class_init(ObjectClass *klass, void *data)
{
CPUClass *k = CPU_CLASS(klass);
k->reset = cpu_common_reset;
+ k->get_arch_id = cpu_common_get_arch_id;
}
static TypeInfo cpu_type_info = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/sysemu.h new/tools/qemu-xen-dir-remote/sysemu.h
--- old/tools/qemu-xen-dir-remote/sysemu.h 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/sysemu.h 2013-06-28 00:04:09.000000000 +0200
@@ -183,4 +183,6 @@
bool usb_enabled(bool default_usb);
+void piix4_cpu_hotplug_add(const int64_t cpu_id, Error **errp);
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/target-i386/cpu.c new/tools/qemu-xen-dir-remote/target-i386/cpu.c
--- old/tools/qemu-xen-dir-remote/target-i386/cpu.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/target-i386/cpu.c 2013-06-28 00:04:09.000000000 +0200
@@ -2111,6 +2111,14 @@
}
}
+static int64_t x86_cpu_get_arch_id(CPUState *cs)
+{
+ X86CPU *cpu = X86_CPU(cs);
+ CPUX86State *env = &cpu->env;
+
+ return env->cpuid_apic_id;
+}
+
static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
{
X86CPUClass *xcc = X86_CPU_CLASS(oc);
@@ -2118,6 +2126,8 @@
xcc->parent_reset = cc->reset;
cc->reset = x86_cpu_reset;
+
+ cc->get_arch_id = x86_cpu_get_arch_id;
}
static const TypeInfo x86_cpu_type_info = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/vl.c new/tools/qemu-xen-dir-remote/vl.c
--- old/tools/qemu-xen-dir-remote/vl.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/vl.c 2013-06-28 00:04:09.000000000 +0200
@@ -1763,7 +1763,7 @@
int64_t ti;
#endif
do {
- nonblocking = !kvm_enabled() && last_io > 0;
+ nonblocking = !kvm_enabled() && !xen_enabled() && last_io > 0;
#ifdef CONFIG_PROFILER
ti = profile_getclock();
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-dir-remote/xen-all.c new/tools/qemu-xen-dir-remote/xen-all.c
--- old/tools/qemu-xen-dir-remote/xen-all.c 2013-06-05 18:57:29.000000000 +0200
+++ new/tools/qemu-xen-dir-remote/xen-all.c 2013-06-28 00:04:09.000000000 +0200
@@ -632,13 +632,13 @@
}
if (port != -1) {
- for (i = 0; i < smp_cpus; i++) {
+ for (i = 0; i < max_cpus; i++) {
if (state->ioreq_local_port[i] == port) {
break;
}
}
- if (i == smp_cpus) {
+ if (i == max_cpus) {
hw_error("Fatal error while trying to get io event!\n");
}
@@ -1123,10 +1123,10 @@
hw_error("map buffered IO page returned error %d", errno);
}
- state->ioreq_local_port = g_malloc0(smp_cpus * sizeof (evtchn_port_t));
+ state->ioreq_local_port = g_malloc0(max_cpus * sizeof (evtchn_port_t));
/* FIXME: how about if we overflow the page here? */
- for (i = 0; i < smp_cpus; i++) {
+ for (i = 0; i < max_cpus; i++) {
rc = xc_evtchn_bind_interdomain(state->xce_handle, xen_domid,
xen_vcpu_eport(state->shared_page, i));
if (rc == -1) {
++++++ qemu-xen-traditional-dir-remote.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak new/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak
--- old/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak 2013-06-05 18:57:57.000000000 +0200
+++ new/tools/qemu-xen-traditional-dir-remote/xen-hooks.mak 2013-06-28 00:25:12.000000000 +0200
@@ -83,4 +83,6 @@
docdir := $(subst qemu,xen/qemu,$(docdir))
mandir := $(subst share/man,share/xen/man,$(mandir))
+BUILD_DOCS=
+
configdir := $(XEN_SCRIPT_DIR)
++++++ seabios-dir-remote.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tools/firmware/seabios-dir-remote/src/smp.c new/tools/firmware/seabios-dir-remote/src/smp.c
--- old/tools/firmware/seabios-dir-remote/src/smp.c 2013-06-05 18:58:02.000000000 +0200
+++ new/tools/firmware/seabios-dir-remote/src/smp.c 2013-06-28 00:26:32.000000000 +0200
@@ -9,6 +9,7 @@
#include "config.h" // CONFIG_*
#include "cmos.h" // CMOS_BIOS_SMP_COUNT
#include "paravirt.h"
+#include "xen.h"
#define APIC_ICR_LOW ((u8*)BUILD_APIC_ADDR + 0x300)
#define APIC_SVR ((u8*)BUILD_APIC_ADDR + 0x0F0)
@@ -84,6 +85,9 @@
void
smp_probe(void)
{
+ if (usingXen())
+ return;
+
ASSERT32FLAT();
u32 eax, ebx, ecx, cpuid_features;
cpuid(1, &eax, &ebx, &ecx, &cpuid_features);
++++++ xen-4.3.0-testing-src.tar.bz2 ++++++
++++ 7953 lines of diff (skipped)
++++++ xen-xmexample.patch ++++++
--- /var/tmp/diff_new_pack.Z362Hq/_old 2013-07-04 09:14:18.000000000 +0200
+++ /var/tmp/diff_new_pack.Z362Hq/_new 2013-07-04 09:14:18.000000000 +0200
@@ -351,3 +351,12 @@
The basic structure of every B<xl> command is almost always:
+@@ -910,8 +911,6 @@ The following is the effect of combining
+
+ =item B<-p [pool] -d>... : Illegal
+
+-=item
+-
+ =back
+
+ =item B<sched-credit2> [I<OPTIONS>]
++++++ xend-traditional-qemu.patch ++++++
--- /var/tmp/diff_new_pack.Z362Hq/_old 2013-07-04 09:14:18.000000000 +0200
+++ /var/tmp/diff_new_pack.Z362Hq/_new 2013-07-04 09:14:18.000000000 +0200
@@ -560,7 +560,7 @@
=over 4
=item B<sched-credit> [ B<-d> I<domain-id> [ B<-w>[B<=>I<WEIGHT>] | B<-c>[B<=>I<CAP>] ] ]
-@@ -788,8 +785,6 @@ The normal EDF scheduling usage in nanos
+@@ -801,8 +798,6 @@ The normal EDF scheduling usage in nanos
The normal EDF scheduling usage in nanoseconds
@@ -569,7 +569,7 @@
=item I<latency-hint>
Scaled period if domain is doing heavy I/O.
-@@ -939,9 +934,6 @@ the default setting in xend-config.sxp f
+@@ -952,9 +947,6 @@ the default setting in xend-config.sxp f
Passes the specified IP Address to the adapter on creation.
@@ -579,7 +579,7 @@
=item B
participants (1)
-
root@hilbert.suse.de