Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2012-03-23 10:36:41 +0100
committerJan Beulich <jbeulich@novell.com>2012-03-23 10:36:41 +0100
commit6c5f5ef960fe598a5ca5eb709fc6582761e3b6b1 (patch)
tree033869d12c9f885be29e586ad70372d21cd349b9
parentb244b179a5e2982e103d9073abbf9c2f601abb30 (diff)
- Update Xen patches to 3.3 final and c/s 1165.
-rw-r--r--patches.xen/xen-blkback-cdrom22
-rw-r--r--patches.xen/xen-blkif-op-packet12
-rw-r--r--patches.xen/xen-blkif-protocol-fallback-hack8
-rw-r--r--patches.xen/xen-clockevents10
-rw-r--r--patches.xen/xen-ipi-per-cpu-irq8
-rw-r--r--patches.xen/xen-unpriv-build74
-rw-r--r--patches.xen/xen-virq-per-cpu-irq10
-rw-r--r--patches.xen/xen-x86-EFI14
-rw-r--r--patches.xen/xen-x86-no-lapic8
-rw-r--r--patches.xen/xen-x86-per-cpu-vcpu-info6
-rw-r--r--patches.xen/xen3-auto-arch-i386.diff2
-rw-r--r--patches.xen/xen3-auto-arch-x86.diff2
-rw-r--r--patches.xen/xen3-auto-arch-x86_64.diff2
-rw-r--r--patches.xen/xen3-auto-common.diff2
-rw-r--r--patches.xen/xen3-auto-include-xen-interface.diff2
-rw-r--r--patches.xen/xen3-auto-xen-arch.diff15
-rw-r--r--patches.xen/xen3-auto-xen-drivers.diff106
-rw-r--r--patches.xen/xen3-auto-xen-kconfig.diff2
-rw-r--r--patches.xen/xen3-fixup-common8
-rw-r--r--patches.xen/xen3-fixup-xen2
-rw-r--r--patches.xen/xen3-patch-2.6.1869
-rw-r--r--patches.xen/xen3-patch-2.6.1950
-rw-r--r--patches.xen/xen3-patch-2.6.2018
-rw-r--r--patches.xen/xen3-patch-2.6.2212
-rw-r--r--patches.xen/xen3-patch-2.6.2462
-rw-r--r--patches.xen/xen3-patch-2.6.2520
-rw-r--r--patches.xen/xen3-patch-2.6.2628
-rw-r--r--patches.xen/xen3-patch-2.6.27131
-rw-r--r--patches.xen/xen3-patch-2.6.2860
-rw-r--r--patches.xen/xen3-patch-2.6.2966
-rw-r--r--patches.xen/xen3-patch-2.6.3028
-rw-r--r--patches.xen/xen3-patch-2.6.3187
-rw-r--r--patches.xen/xen3-patch-2.6.3512
-rw-r--r--patches.xen/xen3-patch-2.6.3616
-rw-r--r--patches.xen/xen3-patch-2.6.3764
-rw-r--r--patches.xen/xen3-patch-2.6.3889
-rw-r--r--patches.xen/xen3-patch-2.6.3972
-rw-r--r--patches.xen/xen3-patch-3.138
-rw-r--r--patches.xen/xen3-patch-3.296
-rw-r--r--patches.xen/xen3-patch-3.3 (renamed from patches.xen/xen3-patch-3.3-rc5)186
-rw-r--r--series.conf2
41 files changed, 900 insertions, 621 deletions
diff --git a/patches.xen/xen-blkback-cdrom b/patches.xen/xen-blkback-cdrom
index b3410495d4..e80cb33aae 100644
--- a/patches.xen/xen-blkback-cdrom
+++ b/patches.xen/xen-blkback-cdrom
@@ -168,9 +168,9 @@ References: 159907
+ vbd_resize(be->blkif);
+ }
+}
---- head.orig/drivers/xen/blkback/common.h 2012-02-27 10:22:52.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2012-02-27 10:29:21.000000000 +0100
-@@ -106,6 +106,7 @@ struct backend_info
+--- head.orig/drivers/xen/blkback/common.h 2012-03-14 11:25:53.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-14 11:42:31.000000000 +0100
+@@ -100,6 +100,7 @@ struct backend_info
struct xenbus_device *dev;
blkif_t *blkif;
struct xenbus_watch backend_watch;
@@ -178,9 +178,9 @@ References: 159907
unsigned major;
unsigned minor;
char *mode;
-@@ -153,4 +154,7 @@ int blkback_barrier(struct xenbus_transa
- int blkback_flush_diskcache(struct xenbus_transaction,
- struct backend_info *, int state);
+@@ -147,4 +148,7 @@ void blkback_barrier(struct xenbus_trans
+ void blkback_flush_diskcache(struct xenbus_transaction,
+ struct backend_info *, int state);
+/* cdrom media change */
+void cdrom_add_media_watch(struct backend_info *be);
@@ -283,8 +283,8 @@ References: 159907
/*
* Write the current state; we will use this to synchronize
* the front-end. If the current state is "connected" the
---- head.orig/drivers/xen/blkback/xenbus.c 2012-02-27 10:25:26.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-02-27 10:29:19.000000000 +0100
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 14:31:40.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:31:46.000000000 +0100
@@ -58,7 +58,7 @@ static void update_blkif_status(blkif_t
char name[TASK_COMM_LEN];
@@ -330,7 +330,7 @@ References: 159907
if (be->blkif) {
blkif_disconnect(be->blkif);
vbd_free(&be->blkif->vbd);
-@@ -411,7 +422,13 @@ static void backend_changed(struct xenbu
+@@ -379,7 +390,13 @@ static void backend_changed(struct xenbu
| (strchr(be->mode, 'w') ? FMODE_WRITE : 0)
| (strchr(be->mode, '!') ? 0 : FMODE_EXCL),
cdrom);
@@ -345,7 +345,7 @@ References: 159907
be->major = be->minor = 0;
xenbus_dev_fatal(dev, err, "creating vbd structure");
return;
-@@ -427,6 +444,9 @@ static void backend_changed(struct xenbu
+@@ -395,6 +412,9 @@ static void backend_changed(struct xenbu
/* We're potentially connected now */
update_blkif_status(be->blkif);
@@ -355,7 +355,7 @@ References: 159907
}
}
-@@ -467,7 +487,8 @@ static void frontend_changed(struct xenb
+@@ -435,7 +455,8 @@ static void frontend_changed(struct xenb
err = connect_ring(be);
if (err)
break;
diff --git a/patches.xen/xen-blkif-op-packet b/patches.xen/xen-blkif-op-packet
index c98a29e3d4..198ddf9dd9 100644
--- a/patches.xen/xen-blkif-op-packet
+++ b/patches.xen/xen-blkif-op-packet
@@ -3,8 +3,8 @@ Subject: add support for new operation type BLKIF_OP_PACKET
Patch-mainline: n/a
References: fate#300964
---- head.orig/drivers/xen/blkback/blkback.c 2012-02-09 17:50:22.000000000 +0100
-+++ head/drivers/xen/blkback/blkback.c 2012-02-10 13:32:12.000000000 +0100
+--- head.orig/drivers/xen/blkback/blkback.c 2012-03-14 11:29:26.000000000 +0100
++++ head/drivers/xen/blkback/blkback.c 2012-03-14 11:42:51.000000000 +0100
@@ -196,10 +196,11 @@ static void fast_flush_area(pending_req_
static void print_stats(blkif_t *blkif)
{
@@ -27,7 +27,7 @@ References: fate#300964
}
int blkif_schedule(void *arg)
-@@ -420,6 +422,13 @@ static int _do_block_io_op(blkif_t *blki
+@@ -418,6 +420,13 @@ static int _do_block_io_op(blkif_t *blki
case BLKIF_OP_DISCARD:
dispatch_rw_block_io(blkif, &req, pending_req);
break;
@@ -41,9 +41,9 @@ References: fate#300964
default:
/* A good sign something is wrong: sleep for a while to
* avoid excessive CPU consumption by a bad guest. */
---- head.orig/drivers/xen/blkback/common.h 2012-02-27 10:29:21.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2012-02-10 13:32:15.000000000 +0100
-@@ -95,6 +95,7 @@ typedef struct blkif_st {
+--- head.orig/drivers/xen/blkback/common.h 2012-03-14 11:42:31.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-14 11:42:53.000000000 +0100
+@@ -89,6 +89,7 @@ typedef struct blkif_st {
int st_br_req;
int st_fl_req;
int st_ds_req;
diff --git a/patches.xen/xen-blkif-protocol-fallback-hack b/patches.xen/xen-blkif-protocol-fallback-hack
index bcef3b513c..ad60a35f08 100644
--- a/patches.xen/xen-blkif-protocol-fallback-hack
+++ b/patches.xen/xen-blkif-protocol-fallback-hack
@@ -33,8 +33,8 @@ See the comment below. Oh well.
help
The block tap driver is an alternative to the block back driver
and allows VM block requests to be redirected to userspace through
---- head.orig/drivers/xen/blkback/xenbus.c 2012-02-27 10:22:58.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 14:01:52.000000000 +0100
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 14:26:51.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:31:40.000000000 +0100
@@ -20,6 +20,7 @@
#include <stdarg.h>
#include <linux/kthread.h>
@@ -43,7 +43,7 @@ See the comment below. Oh well.
#undef DPRINTK
#define DPRINTK(fmt, args...) \
-@@ -585,8 +586,10 @@ static int connect_ring(struct backend_i
+@@ -547,8 +548,10 @@ static int connect_ring(struct backend_i
be->blkif->blk_protocol = BLKIF_PROTOCOL_NATIVE;
err = xenbus_gather(XBT_NIL, dev->otherend, "protocol",
NULL, &protocol, NULL);
@@ -55,7 +55,7 @@ See the comment below. Oh well.
else if (0 == strcmp(protocol, XEN_IO_PROTO_ABI_NATIVE))
be->blkif->blk_protocol = BLKIF_PROTOCOL_NATIVE;
else if (0 == strcmp(protocol, XEN_IO_PROTO_ABI_X86_32))
-@@ -600,7 +603,7 @@ static int connect_ring(struct backend_i
+@@ -562,7 +565,7 @@ static int connect_ring(struct backend_i
}
pr_info("blkback: ring-ref %u, event-channel %u, protocol %d (%s)\n",
ring_ref, evtchn, be->blkif->blk_protocol,
diff --git a/patches.xen/xen-clockevents b/patches.xen/xen-clockevents
index 042c02c2bd..93bad0ce71 100644
--- a/patches.xen/xen-clockevents
+++ b/patches.xen/xen-clockevents
@@ -981,8 +981,8 @@ Once validated this could be merged into the 2.6.?? patch.
if (!suspend_cancelled) {
#ifdef __x86_64__
/*
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 15:07:30.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:07:34.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:23:53.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:24:55.000000000 +0100
@@ -16,6 +16,7 @@
#include <linux/percpu.h>
#include <asm/desc.h>
@@ -996,9 +996,9 @@ Once validated this could be merged into the 2.6.?? patch.
touch_softlockup_watchdog();
preempt_disable();
+ xen_setup_cpu_clockevents();
- local_irq_enable();
- }
-
+ cpu = smp_processor_id();
+ notify_cpu_starting(cpu);
+ ipi_call_lock_irq();
--- head.orig/drivers/xen/core/spinlock.c 2012-02-01 09:18:11.000000000 +0100
+++ head/drivers/xen/core/spinlock.c 2012-02-01 09:18:36.000000000 +0100
@@ -13,6 +13,7 @@
diff --git a/patches.xen/xen-ipi-per-cpu-irq b/patches.xen/xen-ipi-per-cpu-irq
index 8e374fce4b..ba267c844a 100644
--- a/patches.xen/xen-ipi-per-cpu-irq
+++ b/patches.xen/xen-ipi-per-cpu-irq
@@ -659,8 +659,8 @@ Patch-mainline: n/a
if (irq >= 0) {
BUG_ON(type_from_irq_cfg(cfg) != IRQT_UNBOUND);
cfg->bindcount++;
---- head.orig/drivers/xen/core/smpboot.c 2011-11-18 15:44:14.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:07:26.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:22:50.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:23:49.000000000 +0100
@@ -34,19 +34,7 @@ cpumask_var_t vcpu_initialized_mask;
DEFINE_PER_CPU_READ_MOSTLY(struct cpuinfo_x86, cpu_info);
EXPORT_PER_CPU_SYMBOL(cpu_info);
@@ -825,7 +825,7 @@ Patch-mainline: n/a
return rc;
}
-@@ -172,13 +133,7 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -171,13 +132,7 @@ static void __cpuinit xen_smp_intr_exit(
if (cpu != 0)
local_teardown_timer(cpu);
@@ -839,7 +839,7 @@ Patch-mainline: n/a
+ unbind_from_per_cpu_irq(ipi_irq, cpu);
xen_spinlock_cleanup(cpu);
}
- #endif
+
--- head.orig/include/xen/evtchn.h 2012-02-10 11:30:51.000000000 +0100
+++ head/include/xen/evtchn.h 2012-02-10 11:31:51.000000000 +0100
@@ -95,6 +95,8 @@ int bind_virq_to_irqhandler(
diff --git a/patches.xen/xen-unpriv-build b/patches.xen/xen-unpriv-build
index 9bf0f34efa..8871fc21a7 100644
--- a/patches.xen/xen-unpriv-build
+++ b/patches.xen/xen-unpriv-build
@@ -178,25 +178,25 @@ Patch-mainline: n/a
EXPORT_SYMBOL_GPL(balloon_release_driver_page);
MODULE_LICENSE("Dual BSD/GPL");
---- head.orig/drivers/xen/console/console.c 2012-02-16 18:00:45.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-11-18 16:46:26.000000000 +0100
-@@ -46,7 +46,6 @@
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:26:59.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:31:13.000000000 +0100
+@@ -45,7 +45,6 @@
#include <linux/init.h>
#include <linux/console.h>
#include <linux/sysrq.h>
-#include <linux/screen_info.h>
#include <linux/vt.h>
- #include <asm/io.h>
- #include <asm/irq.h>
-@@ -243,6 +242,7 @@ static int __init xen_console_init(void)
+ #include <xen/interface/xen.h>
+ #include <xen/interface/event_channel.h>
+@@ -236,6 +235,7 @@ static int __init xen_console_init(void)
}
console_initcall(xen_console_init);
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
/*** Useful function for console debugging -- goes straight to Xen. ***/
- asmlinkage int xprintk(const char *fmt, ...)
+ int xprintk(const char *fmt, ...)
{
-@@ -260,6 +260,7 @@ asmlinkage int xprintk(const char *fmt,
+@@ -253,6 +253,7 @@ int xprintk(const char *fmt, ...)
return 0;
}
@@ -204,7 +204,7 @@ Patch-mainline: n/a
/*** Forcibly flush console data before dying. ***/
void xencons_force_flush(void)
-@@ -284,6 +285,9 @@ void xencons_force_flush(void)
+@@ -277,6 +278,9 @@ void xencons_force_flush(void)
}
@@ -214,7 +214,7 @@ Patch-mainline: n/a
void __init dom0_init_screen_info(const struct dom0_vga_console_info *info, size_t size)
{
/* This is drawn from a dump from vgacon:startup in
-@@ -339,6 +343,7 @@ void __init dom0_init_screen_info(const
+@@ -332,6 +336,7 @@ void __init dom0_init_screen_info(const
break;
}
}
@@ -222,6 +222,21 @@ Patch-mainline: n/a
/******************** User-space console driver (/dev/console) ************/
+--- head.orig/drivers/xen/console/xencons_ring.c 2012-03-22 14:04:29.000000000 +0100
++++ head/drivers/xen/console/xencons_ring.c 2012-03-22 14:31:18.000000000 +0100
+@@ -89,7 +89,11 @@ static irqreturn_t handle_input(int irq,
+ return IRQ_HANDLED;
+ }
+
+-int xencons_ring_init(void)
++int
++#ifndef CONFIG_PM_SLEEP
++__init
++#endif
++xencons_ring_init(void)
+ {
+ int irq;
+
--- head.orig/drivers/xen/core/evtchn.c 2012-02-16 14:40:59.000000000 +0100
+++ head/drivers/xen/core/evtchn.c 2012-02-16 14:41:07.000000000 +0100
@@ -1819,6 +1819,7 @@ void evtchn_register_pirq(int irq)
@@ -361,7 +376,7 @@ Patch-mainline: n/a
return IRQ_HANDLED;
}
--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:55:51.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 14:01:37.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:31:27.000000000 +0100
@@ -93,7 +93,11 @@ static unsigned long xen_store_mfn;
extern struct mutex xenwatch_mutex;
@@ -390,6 +405,43 @@ Patch-mainline: n/a
{
BUG_ON(!is_xenstored_ready());
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-11-17 15:56:06.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-13 14:38:50.000000000 +0100
+@@ -322,7 +322,7 @@ subsys_initcall(xenbus_probe_backend_ini
+
+ #else
+
+-void xenbus_backend_bus_register(void)
++void __init xenbus_backend_bus_register(void)
+ {
+ xenbus_backend.error = bus_register(&xenbus_backend.bus);
+ if (xenbus_backend.error)
+@@ -330,7 +330,7 @@ void xenbus_backend_bus_register(void)
+ xenbus_backend.error);
+ }
+
+-void xenbus_backend_device_register(void)
++void __init xenbus_backend_device_register(void)
+ {
+ if (xenbus_backend.error)
+ return;
+--- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:18:49.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:31:25.000000000 +0100
+@@ -949,7 +949,13 @@ static int xenbus_thread(void *unused)
+ return 0;
+ }
+
+-int xs_init(void)
++int
++#ifndef MODULE
++__init
++#else
++__devinit
++#endif
++xs_init(void)
+ {
+ struct task_struct *task;
+
--- head.orig/fs/compat_ioctl.c 2012-02-08 12:18:41.000000000 +0100
+++ head/fs/compat_ioctl.c 2012-02-10 11:56:38.000000000 +0100
@@ -1488,7 +1488,7 @@ static long do_ioctl_trans(int fd, unsig
diff --git a/patches.xen/xen-virq-per-cpu-irq b/patches.xen/xen-virq-per-cpu-irq
index c328862932..d795fa7239 100644
--- a/patches.xen/xen-virq-per-cpu-irq
+++ b/patches.xen/xen-virq-per-cpu-irq
@@ -533,8 +533,8 @@ Patch-mainline: n/a
init_evtchn_cpu_bindings();
#ifdef CONFIG_SPARSE_IRQ
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 15:07:26.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:07:30.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:23:49.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:23:53.000000000 +0100
@@ -123,7 +123,7 @@ static int __cpuinit xen_smp_intr_init(u
fail:
xen_spinlock_cleanup(cpu);
@@ -544,7 +544,7 @@ Patch-mainline: n/a
return rc;
}
-@@ -133,7 +133,7 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -132,7 +132,7 @@ static void __cpuinit xen_smp_intr_exit(
if (cpu != 0)
local_teardown_timer(cpu);
@@ -552,8 +552,8 @@ Patch-mainline: n/a
+ unbind_from_per_cpu_irq(ipi_irq, cpu, NULL);
xen_spinlock_cleanup(cpu);
}
- #endif
---- head.orig/drivers/xen/netback/netback.c 2011-11-21 16:36:45.000000000 +0100
+
+--- head.orig/drivers/xen/netback/netback.c 2012-02-17 09:00:33.000000000 +0100
+++ head/drivers/xen/netback/netback.c 2011-11-18 16:10:28.000000000 +0100
@@ -1637,6 +1637,12 @@ static irqreturn_t netif_be_dbg(int irq,
diff --git a/patches.xen/xen-x86-EFI b/patches.xen/xen-x86-EFI
index 208874cfc5..113022bdc2 100644
--- a/patches.xen/xen-x86-EFI
+++ b/patches.xen/xen-x86-EFI
@@ -49,7 +49,7 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
} else
screen_info.orig_video_isVGA = 0;
copy_edid();
---- head.orig/arch/x86/platform/efi/Makefile 2011-01-05 01:50:19.000000000 +0100
+--- head.orig/arch/x86/platform/efi/Makefile 2012-03-22 13:24:33.000000000 +0100
+++ head/arch/x86/platform/efi/Makefile 2011-06-09 17:06:13.000000000 +0200
@@ -1 +1,2 @@
obj-$(CONFIG_EFI) += efi.o efi_$(BITS).o efi_stub_$(BITS).o
@@ -564,7 +564,7 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
+ info->mem.size = 0;
+ return HYPERVISOR_platform_op(&op) ? 0 : info->mem.attr;
+}
---- head.orig/drivers/rtc/Kconfig 2012-02-08 09:32:36.000000000 +0100
+--- head.orig/drivers/rtc/Kconfig 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/rtc/Kconfig 2011-07-04 12:33:03.000000000 +0200
@@ -556,7 +556,7 @@ config RTC_DRV_DS1742
@@ -575,9 +575,9 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
help
If you say yes here you will get support for the EFI
Real Time Clock.
---- head.orig/drivers/xen/console/console.c 2011-11-18 16:46:26.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-11-18 17:18:01.000000000 +0100
-@@ -314,6 +314,7 @@ void __init dom0_init_screen_info(const
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:31:13.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 15:29:12.000000000 +0100
+@@ -307,6 +307,7 @@ void __init dom0_init_screen_info(const
break;
case XEN_VGATYPE_VESA_LFB:
@@ -585,7 +585,7 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
if (size < offsetof(struct dom0_vga_console_info,
u.vesa_lfb.gbl_caps))
break;
-@@ -332,6 +333,10 @@ void __init dom0_init_screen_info(const
+@@ -325,6 +326,10 @@ void __init dom0_init_screen_info(const
screen_info.blue_pos = info->u.vesa_lfb.blue_pos;
screen_info.rsvd_size = info->u.vesa_lfb.rsvd_size;
screen_info.rsvd_pos = info->u.vesa_lfb.rsvd_pos;
@@ -596,7 +596,7 @@ References: fate#311376, fate#311529, bnc#578927, bnc#628554
if (size >= offsetof(struct dom0_vga_console_info,
u.vesa_lfb.gbl_caps)
+ sizeof(info->u.vesa_lfb.gbl_caps))
---- head.orig/include/linux/efi.h 2012-02-08 09:32:41.000000000 +0100
+--- head.orig/include/linux/efi.h 2012-03-22 13:24:33.000000000 +0100
+++ head/include/linux/efi.h 2012-02-10 14:01:31.000000000 +0100
@@ -408,7 +408,9 @@ typedef struct {
* All runtime access to EFI goes through this structure:
diff --git a/patches.xen/xen-x86-no-lapic b/patches.xen/xen-x86-no-lapic
index 34ba3cd81a..bfa7f8e400 100644
--- a/patches.xen/xen-x86-no-lapic
+++ b/patches.xen/xen-x86-no-lapic
@@ -121,7 +121,7 @@ References: bnc#191115
#endif /* CONFIG_X86_LOCAL_APIC */
#endif /* _ASM_X86_APIC_H */
---- head.orig/arch/x86/include/asm/apicdef.h 2012-02-08 09:32:34.000000000 +0100
+--- head.orig/arch/x86/include/asm/apicdef.h 2012-03-22 15:48:20.000000000 +0100
+++ head/arch/x86/include/asm/apicdef.h 2012-02-10 13:36:33.000000000 +0100
@@ -17,6 +17,8 @@
*/
@@ -321,9 +321,9 @@ References: bnc#191115
}
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 15:07:34.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:08:37.000000000 +0100
-@@ -281,7 +281,7 @@ void __init smp_prepare_cpus(unsigned in
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:24:55.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:25:18.000000000 +0100
+@@ -285,7 +285,7 @@ void __init smp_prepare_cpus(unsigned in
* Here we can be sure that there is an IO-APIC in the system. Let's
* go and set it up:
*/
diff --git a/patches.xen/xen-x86-per-cpu-vcpu-info b/patches.xen/xen-x86-per-cpu-vcpu-info
index 649afd538d..7d73bc4cb6 100644
--- a/patches.xen/xen-x86-per-cpu-vcpu-info
+++ b/patches.xen/xen-x86-per-cpu-vcpu-info
@@ -601,9 +601,9 @@ prerequisite for removing the limitation on 32 vCPU-s per guest.
if (!suspend_cancelled)
xen_clockevents_resume();
if (suspend_cancelled >= 0)
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 15:08:37.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:08:45.000000000 +0100
-@@ -288,8 +288,13 @@ void __init smp_prepare_cpus(unsigned in
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:25:18.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:25:27.000000000 +0100
+@@ -292,8 +292,13 @@ void __init smp_prepare_cpus(unsigned in
void __init smp_prepare_boot_cpu(void)
{
diff --git a/patches.xen/xen3-auto-arch-i386.diff b/patches.xen/xen3-auto-arch-i386.diff
index 23d12345e5..e3c92f58b2 100644
--- a/patches.xen/xen3-auto-arch-i386.diff
+++ b/patches.xen/xen3-auto-arch-i386.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 arch-i386
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-auto-arch-x86.diff b/patches.xen/xen3-auto-arch-x86.diff
index 30e4a84dc1..f3c5e0b1d7 100644
--- a/patches.xen/xen3-auto-arch-x86.diff
+++ b/patches.xen/xen3-auto-arch-x86.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 arch-x86
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-auto-arch-x86_64.diff b/patches.xen/xen3-auto-arch-x86_64.diff
index 05df79bda2..f80b36addc 100644
--- a/patches.xen/xen3-auto-arch-x86_64.diff
+++ b/patches.xen/xen3-auto-arch-x86_64.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 arch-x86_64
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-auto-common.diff b/patches.xen/xen3-auto-common.diff
index bc507bd10b..cc39dd8bd5 100644
--- a/patches.xen/xen3-auto-common.diff
+++ b/patches.xen/xen3-auto-common.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 common
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-auto-include-xen-interface.diff b/patches.xen/xen3-auto-include-xen-interface.diff
index 99421b529c..f373ad4cfc 100644
--- a/patches.xen/xen3-auto-include-xen-interface.diff
+++ b/patches.xen/xen3-auto-include-xen-interface.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 include-xen-interface
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-auto-xen-arch.diff b/patches.xen/xen3-auto-xen-arch.diff
index 19f32dc36f..3e57279bee 100644
--- a/patches.xen/xen3-auto-xen-arch.diff
+++ b/patches.xen/xen3-auto-xen-arch.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 xen-arch
From: xen-devel@lists.xen.org
Patch-mainline: n/a
@@ -42174,24 +42174,19 @@ for reference, prefixed with the version the removal occured):
+
+#endif /* __ASM_XEN_PROC_H__ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head/include/xen/xencons.h 2007-10-15 09:39:38.000000000 +0200
-@@ -0,0 +1,17 @@
++++ head/include/xen/xencons.h 2012-03-22 13:27:48.000000000 +0100
+@@ -0,0 +1,12 @@
+#ifndef __ASM_XENCONS_H__
+#define __ASM_XENCONS_H__
+
++int xprintk(const char *, ...) __attribute__ ((__format__(__printf__, 1, 2)));
++
+struct dom0_vga_console_info;
+void dom0_init_screen_info(const struct dom0_vga_console_info *, size_t);
+
+void xencons_force_flush(void);
+void xencons_resume(void);
+
-+/* Interrupt work hooks. Receive data, or kick data out. */
-+void xencons_rx(char *buf, unsigned len, struct pt_regs *regs);
-+void xencons_tx(void);
-+
-+int xencons_ring_init(void);
-+int xencons_ring_send(const char *data, unsigned len);
-+
+#endif /* __ASM_XENCONS_H__ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ head/include/xen/xenoprof.h 2007-06-12 13:14:19.000000000 +0200
diff --git a/patches.xen/xen3-auto-xen-drivers.diff b/patches.xen/xen3-auto-xen-drivers.diff
index 7a4f0af2de..bf74f1c472 100644
--- a/patches.xen/xen3-auto-xen-drivers.diff
+++ b/patches.xen/xen3-auto-xen-drivers.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 xen-drivers
From: xen-devel@lists.xen.org
Patch-mainline: n/a
@@ -1841,7 +1841,7 @@ and in case upstream wants to take the forward porting patches:
+
+#endif
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head/drivers/xen/blkback/common.h 2011-11-22 09:56:23.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-22 13:27:48.000000000 +0100
@@ -0,0 +1,144 @@
+/*
+ * This program is free software; you can redistribute it and/or
@@ -1983,8 +1983,8 @@ and in case upstream wants to take the forward porting patches:
+irqreturn_t blkif_be_int(int irq, void *dev_id, struct pt_regs *regs);
+int blkif_schedule(void *arg);
+
-+int blkback_barrier(struct xenbus_transaction xbt,
-+ struct backend_info *be, int state);
++void blkback_barrier(struct xenbus_transaction, struct backend_info *,
++ int state);
+
+#endif /* __BLKIF__BACKEND__COMMON_H__ */
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
@@ -2307,8 +2307,8 @@ and in case upstream wants to take the forward porting patches:
+ xenbus_transaction_end(xbt, 1);
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 12:51:05.000000000 +0100
-@@ -0,0 +1,553 @@
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 13:27:48.000000000 +0100
+@@ -0,0 +1,548 @@
+/* Xenbus code for blkif backend
+ Copyright (C) 2005 Rusty Russell <rusty@rustcorp.com.au>
+ Copyright (C) 2005 XenSource Ltd
@@ -2515,18 +2515,15 @@ and in case upstream wants to take the forward porting patches:
+ return 0;
+}
+
-+int blkback_barrier(struct xenbus_transaction xbt,
-+ struct backend_info *be, int state)
++void blkback_barrier(struct xenbus_transaction xbt,
++ struct backend_info *be, int state)
+{
+ struct xenbus_device *dev = be->dev;
-+ int err;
++ int err = xenbus_printf(xbt, dev->nodename, "feature-barrier",
++ "%d", state);
+
-+ err = xenbus_printf(xbt, dev->nodename, "feature-barrier",
-+ "%d", state);
+ if (err)
-+ xenbus_dev_fatal(dev, err, "writing feature-barrier");
-+
-+ return err;
++ xenbus_dev_error(dev, err, "writing feature-barrier");
+}
+
+/**
@@ -2746,9 +2743,7 @@ and in case upstream wants to take the forward porting patches:
+ return;
+ }
+
-+ err = blkback_barrier(xbt, be, 1);
-+ if (err)
-+ goto abort;
++ blkback_barrier(xbt, be, 1);
+
+ err = xenbus_printf(xbt, dev->nodename, "sectors", "%llu",
+ vbd_size(&be->blkif->vbd));
@@ -10435,8 +10430,8 @@ and in case upstream wants to take the forward porting patches:
+
+obj-y := console.o xencons_ring.o
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head/drivers/xen/console/console.c 2009-03-18 10:39:31.000000000 +0100
-@@ -0,0 +1,753 @@
++++ head/drivers/xen/console/console.c 2012-03-22 13:27:48.000000000 +0100
+@@ -0,0 +1,745 @@
+/******************************************************************************
+ * console.c
+ *
@@ -10469,7 +10464,6 @@ and in case upstream wants to take the forward porting patches:
+ * IN THE SOFTWARE.
+ */
+
-+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/errno.h>
+#include <linux/signal.h>
@@ -10479,7 +10473,6 @@ and in case upstream wants to take the forward porting patches:
+#include <linux/tty_flip.h>
+#include <linux/serial.h>
+#include <linux/major.h>
-+#include <linux/ptrace.h>
+#include <linux/ioport.h>
+#include <linux/mm.h>
+#include <linux/slab.h>
@@ -10489,15 +10482,9 @@ and in case upstream wants to take the forward porting patches:
+#include <linux/sysrq.h>
+#include <linux/screen_info.h>
+#include <linux/vt.h>
-+#include <asm/io.h>
-+#include <asm/irq.h>
-+#include <asm/uaccess.h>
+#include <xen/interface/xen.h>
+#include <xen/interface/event_channel.h>
-+#include <asm/hypervisor.h>
-+#include <xen/evtchn.h>
-+#include <xen/xenbus.h>
-+#include <xen/xencons.h>
++#include "xencons.h"
+
+/*
+ * Modes:
@@ -10691,7 +10678,7 @@ and in case upstream wants to take the forward porting patches:
+console_initcall(xen_console_init);
+
+/*** Useful function for console debugging -- goes straight to Xen. ***/
-+asmlinkage int xprintk(const char *fmt, ...)
++int xprintk(const char *fmt, ...)
+{
+ va_list args;
+ int printk_len;
@@ -11191,8 +11178,23 @@ and in case upstream wants to take the forward porting patches:
+
+MODULE_LICENSE("Dual BSD/GPL");
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ head/drivers/xen/console/xencons_ring.c 2007-06-12 13:13:44.000000000 +0200
-@@ -0,0 +1,143 @@
++++ head/drivers/xen/console/xencons.h 2012-03-22 13:27:48.000000000 +0100
+@@ -0,0 +1,12 @@
++#include <xen/evtchn.h>
++#include <xen/xencons.h>
++
++void xencons_force_flush(void);
++
++/* Interrupt work hooks. Receive data, or kick data out. */
++struct pt_regs;
++void xencons_rx(char *buf, unsigned len, struct pt_regs *);
++void xencons_tx(void);
++
++int xencons_ring_init(void);
++int xencons_ring_send(const char *data, unsigned len);
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ head/drivers/xen/console/xencons_ring.c 2012-03-22 13:27:48.000000000 +0100
+@@ -0,0 +1,123 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2
@@ -11219,29 +11221,10 @@ and in case upstream wants to take the forward porting patches:
+ * IN THE SOFTWARE.
+ */
+
-+#include <linux/version.h>
-+#include <linux/module.h>
+#include <linux/errno.h>
-+#include <linux/signal.h>
-+#include <linux/sched.h>
+#include <linux/interrupt.h>
-+#include <linux/tty.h>
-+#include <linux/tty_flip.h>
-+#include <linux/serial.h>
-+#include <linux/major.h>
-+#include <linux/ptrace.h>
-+#include <linux/ioport.h>
-+#include <linux/mm.h>
-+#include <linux/slab.h>
-+
-+#include <asm/hypervisor.h>
-+#include <xen/evtchn.h>
-+#include <xen/xencons.h>
-+#include <linux/wait.h>
-+#include <linux/interrupt.h>
-+#include <linux/sched.h>
-+#include <linux/err.h>
+#include <xen/interface/io/console.h>
++#include "xencons.h"
+
+static int xencons_irq;
+
@@ -11307,13 +11290,7 @@ and in case upstream wants to take the forward porting patches:
+{
+ int irq;
+
-+ if (xencons_irq)
-+ unbind_from_irqhandler(xencons_irq, NULL);
-+ xencons_irq = 0;
-+
-+ if (!is_running_on_xen() ||
-+ is_initial_xendomain() ||
-+ !xen_start_info->console.domU.evtchn)
++ if (!xen_start_info->console.domU.evtchn)
+ return -ENODEV;
+
+ irq = bind_caller_port_to_irqhandler(
@@ -11326,15 +11303,20 @@ and in case upstream wants to take the forward porting patches:
+
+ xencons_irq = irq;
+
-+ /* In case we have in-flight data after save/restore... */
-+ notify_daemon();
-+
+ return 0;
+}
+
+void xencons_resume(void)
+{
-+ (void)xencons_ring_init();
++ if (xencons_irq)
++ unbind_from_irqhandler(xencons_irq, NULL);
++ xencons_irq = 0;
++
++ if (is_running_on_xen() && !is_initial_xendomain())
++ xencons_ring_init();
++
++ /* In case we have in-flight data after save/restore... */
++ notify_daemon();
+}
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ head/drivers/xen/core/Makefile 2011-10-17 10:45:09.000000000 +0200
diff --git a/patches.xen/xen3-auto-xen-kconfig.diff b/patches.xen/xen3-auto-xen-kconfig.diff
index c3db8e72c2..910776a78b 100644
--- a/patches.xen/xen3-auto-xen-kconfig.diff
+++ b/patches.xen/xen3-auto-xen-kconfig.diff
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: xen3 xen-kconfig
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-fixup-common b/patches.xen/xen3-fixup-common
index 361479690d..c90054e5ed 100644
--- a/patches.xen/xen3-fixup-common
+++ b/patches.xen/xen3-fixup-common
@@ -20,7 +20,7 @@ Patch-mainline: n/a
/*******************************************************************************
*
---- head.orig/drivers/base/cpu.c 2012-03-12 12:42:38.000000000 +0100
+--- head.orig/drivers/base/cpu.c 2012-03-22 13:24:35.000000000 +0100
+++ head/drivers/base/cpu.c 2012-02-21 11:38:23.000000000 +0100
@@ -108,7 +108,7 @@ static inline void register_cpu_control(
}
@@ -67,9 +67,9 @@ Patch-mainline: n/a
if (drive->queue)
blk_queue_bounce_limit(drive->queue, addr);
---- head.orig/drivers/xen/console/console.c 2009-03-18 10:39:31.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
-@@ -94,7 +94,6 @@ static int __init xencons_setup(char *st
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:27:48.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 13:40:44.000000000 +0100
+@@ -86,7 +86,6 @@ static int __init xencons_setup(char *st
{
char *q;
int n;
diff --git a/patches.xen/xen3-fixup-xen b/patches.xen/xen3-fixup-xen
index 51d86d56bb..55448c3a79 100644
--- a/patches.xen/xen3-fixup-xen
+++ b/patches.xen/xen3-fixup-xen
@@ -1,4 +1,4 @@
-From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1163:e0596f39eaef)
+From http://xenbits.xen.org/linux-2.6.18-xen.hg (tip 1165:80ed65198162)
Subject: Fix Xen build wrt. Xen files coming from mainline.
From: xen-devel@lists.xen.org
Patch-mainline: n/a
diff --git a/patches.xen/xen3-patch-2.6.18 b/patches.xen/xen3-patch-2.6.18
index 78e59c7327..663a100f7a 100644
--- a/patches.xen/xen3-patch-2.6.18
+++ b/patches.xen/xen3-patch-2.6.18
@@ -36,7 +36,7 @@ Acked-by: jbeulich@novell.com
-disabled-obj-$(CONFIG_XEN) := i8237.o i8259_$(BITS).o reboot.o smpboot_$(BITS).o
+disabled-obj-$(CONFIG_XEN) := i8237.o i8253.o i8259_$(BITS).o reboot.o smpboot_$(BITS).o tsc_$(BITS).o
%/head_$(BITS).o %/head_$(BITS).s: $(if $(CONFIG_XEN),EXTRA_AFLAGS,dummy) :=
---- head.orig/arch/x86/kernel/quirks.c 2012-02-17 08:39:40.000000000 +0100
+--- head.orig/arch/x86/kernel/quirks.c 2012-03-22 15:48:29.000000000 +0100
+++ head/arch/x86/kernel/quirks.c 2011-09-07 15:20:23.000000000 +0200
@@ -6,7 +6,7 @@
@@ -538,7 +538,7 @@ Acked-by: jbeulich@novell.com
+ ret
+memset_c_end:
+ .previous
---- head.orig/arch/x86/pci/irq.c 2012-02-17 08:39:40.000000000 +0100
+--- head.orig/arch/x86/pci/irq.c 2012-03-22 15:48:29.000000000 +0100
+++ head/arch/x86/pci/irq.c 2011-08-09 10:33:29.000000000 +0200
@@ -94,13 +94,18 @@ static struct irq_routing_table * __init
u8 *addr;
@@ -578,6 +578,67 @@ Acked-by: jbeulich@novell.com
EXPORT_SYMBOL(acpi_processor_unregister_performance);
+
+#endif /* !CONFIG_PROCESSOR_EXTERNAL_CONTROL */
+--- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:38:21.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:01:06.000000000 +0100
+@@ -145,7 +145,6 @@ static int __cpuinit xen_smp_intr_init(u
+ return rc;
+ }
+
+-#ifdef CONFIG_HOTPLUG_CPU
+ static void xen_smp_intr_exit(unsigned int cpu)
+ {
+ if (cpu != 0)
+@@ -154,7 +153,6 @@ static void xen_smp_intr_exit(unsigned i
+ unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL);
+ unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
+ }
+-#endif
+
+ void __cpuinit cpu_bringup(void)
+ {
+@@ -162,7 +160,9 @@ void __cpuinit cpu_bringup(void)
+ identify_cpu(cpu_data + smp_processor_id());
+ touch_softlockup_watchdog();
+ preempt_disable();
+- local_irq_enable();
++ lock_ipi_call_lock();
++ cpu_set(smp_processor_id(), cpu_online_map);
++ unlock_ipi_call_lock();
+ }
+
+ static void __cpuinit cpu_bringup_and_idle(void)
+@@ -428,12 +428,27 @@ int __cpuinit __cpu_up(unsigned int cpu)
+ return rc;
+ }
+
+- cpu_set(cpu, cpu_online_map);
+-
+ rc = HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL);
+- BUG_ON(rc);
++ if (!rc) {
++ /* Wait 5s total for a response. */
++ unsigned long timeout = jiffies + 5 * HZ;
++
++ while (!cpu_online(cpu) && time_before_eq(jiffies, timeout))
++ HYPERVISOR_yield();
++ if (!cpu_online(cpu)) {
++ VOID(HYPERVISOR_vcpu_op(VCPUOP_down, cpu, NULL));
++ rc = -ETIMEDOUT;
++ }
++ }
+
+- return 0;
++ if (rc) {
++ xen_smp_intr_exit(cpu);
++ remove_siblinginfo(cpu);
++ if (num_online_cpus() == 1)
++ alternatives_smp_switch(0);
++ }
++
++ return rc;
+ }
+
+ void __init smp_cpus_done(unsigned int max_cpus)
--- head.orig/arch/x86/include/mach-xen/asm/processor_32.h 2008-01-28 12:24:19.000000000 +0100
+++ head/arch/x86/include/mach-xen/asm/processor_32.h 2011-01-31 17:02:29.000000000 +0100
@@ -23,7 +23,7 @@
@@ -598,7 +659,7 @@ Acked-by: jbeulich@novell.com
+#endif
+
+#include_next <asm/time.h>
---- head.orig/arch/x86/include/asm/thread_info.h 2012-02-17 08:39:40.000000000 +0100
+--- head.orig/arch/x86/include/asm/thread_info.h 2012-03-22 15:48:29.000000000 +0100
+++ head/arch/x86/include/asm/thread_info.h 2012-02-08 11:29:42.000000000 +0100
@@ -143,11 +143,15 @@ struct thread_info {
_TIF_USER_RETURN_NOTIFY)
@@ -616,7 +677,7 @@ Acked-by: jbeulich@novell.com
#define PREEMPT_ACTIVE 0x10000000
---- head.orig/kernel/time/timekeeping.c 2012-02-17 08:39:40.000000000 +0100
+--- head.orig/kernel/time/timekeeping.c 2012-03-22 15:48:29.000000000 +0100
+++ head/kernel/time/timekeeping.c 2011-07-11 10:33:46.000000000 +0200
@@ -20,6 +20,9 @@
#include <linux/time.h>
diff --git a/patches.xen/xen3-patch-2.6.19 b/patches.xen/xen3-patch-2.6.19
index 73d136f258..34ea5d8db7 100644
--- a/patches.xen/xen3-patch-2.6.19
+++ b/patches.xen/xen3-patch-2.6.19
@@ -18,7 +18,7 @@ Acked-by: jbeulich@novell.com
---help---
Say Y here to get to see options related to running Linux under
various hypervisors. This option alone does not add any kernel code.
---- head.orig/arch/x86/kernel/acpi/boot.c 2012-03-12 12:42:38.000000000 +0100
+--- head.orig/arch/x86/kernel/acpi/boot.c 2012-03-22 13:24:35.000000000 +0100
+++ head/arch/x86/kernel/acpi/boot.c 2012-02-08 11:30:15.000000000 +0100
@@ -70,8 +70,12 @@ int acpi_strict;
@@ -10124,8 +10124,8 @@ Acked-by: jbeulich@novell.com
{
blkif_notify_work(dev_id);
return IRQ_HANDLED;
---- head.orig/drivers/xen/blkback/common.h 2011-11-22 09:56:23.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2011-11-28 09:45:47.000000000 +0100
+--- head.orig/drivers/xen/blkback/common.h 2012-03-22 13:27:48.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-22 13:43:37.000000000 +0100
@@ -135,7 +135,7 @@ void blkif_interface_init(void);
void blkif_xenbus_init(void);
@@ -10134,7 +10134,7 @@ Acked-by: jbeulich@novell.com
+irqreturn_t blkif_be_int(int irq, void *dev_id);
int blkif_schedule(void *arg);
- int blkback_barrier(struct xenbus_transaction xbt,
+ void blkback_barrier(struct xenbus_transaction, struct backend_info *,
--- head.orig/drivers/xen/blkfront/blkfront.c 2012-03-12 12:51:05.000000000 +0100
+++ head/drivers/xen/blkfront/blkfront.c 2012-03-12 13:31:12.000000000 +0100
@@ -69,9 +69,9 @@ static int setup_blkring(struct xenbus_d
@@ -10310,9 +10310,9 @@ Acked-by: jbeulich@novell.com
- return 0;
+ return err;
}
---- head.orig/drivers/xen/console/console.c 2011-01-31 17:02:29.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-01-31 17:29:16.000000000 +0100
-@@ -360,7 +360,7 @@ static struct tty_struct *xencons_tty;
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:40:44.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 13:43:32.000000000 +0100
+@@ -352,7 +352,7 @@ static struct tty_struct *xencons_tty;
static int xencons_priv_irq;
static char x_char;
@@ -10321,7 +10321,7 @@ Acked-by: jbeulich@novell.com
{
int i;
unsigned long flags;
-@@ -385,8 +385,7 @@ void xencons_rx(char *buf, unsigned len,
+@@ -377,8 +377,7 @@ void xencons_rx(char *buf, unsigned len,
if (time_before(jiffies, sysrq_timeout)) {
spin_unlock_irqrestore(
&xencons_lock, flags);
@@ -10331,7 +10331,7 @@ Acked-by: jbeulich@novell.com
spin_lock_irqsave(
&xencons_lock, flags);
continue;
-@@ -451,14 +450,13 @@ void xencons_tx(void)
+@@ -443,14 +442,13 @@ void xencons_tx(void)
}
/* Privileged receive callback and transmit kicker. */
@@ -10348,7 +10348,7 @@ Acked-by: jbeulich@novell.com
xencons_tx();
-@@ -646,7 +644,7 @@ static void xencons_close(struct tty_str
+@@ -638,7 +636,7 @@ static void xencons_close(struct tty_str
spin_unlock_irqrestore(&xencons_lock, flags);
}
@@ -10357,9 +10357,20 @@ Acked-by: jbeulich@novell.com
.open = xencons_open,
.close = xencons_close,
.write = xencons_write,
---- head.orig/drivers/xen/console/xencons_ring.c 2007-06-12 13:13:44.000000000 +0200
-+++ head/drivers/xen/console/xencons_ring.c 2011-01-31 17:29:16.000000000 +0100
-@@ -83,7 +83,7 @@ int xencons_ring_send(const char *data,
+--- head.orig/drivers/xen/console/xencons.h 2012-03-22 13:27:48.000000000 +0100
++++ head/drivers/xen/console/xencons.h 2012-03-22 13:43:22.000000000 +0100
+@@ -5,7 +5,7 @@ void xencons_force_flush(void);
+
+ /* Interrupt work hooks. Receive data, or kick data out. */
+ struct pt_regs;
+-void xencons_rx(char *buf, unsigned len, struct pt_regs *);
++void xencons_rx(char *buf, unsigned len);
+ void xencons_tx(void);
+
+ int xencons_ring_init(void);
+--- head.orig/drivers/xen/console/xencons_ring.c 2012-03-22 13:27:48.000000000 +0100
++++ head/drivers/xen/console/xencons_ring.c 2012-03-22 13:43:28.000000000 +0100
+@@ -64,7 +64,7 @@ int xencons_ring_send(const char *data,
return sent;
}
@@ -10368,7 +10379,7 @@ Acked-by: jbeulich@novell.com
{
struct xencons_interface *intf = xencons_interface();
XENCONS_RING_IDX cons, prod;
-@@ -94,7 +94,7 @@ static irqreturn_t handle_input(int irq,
+@@ -75,7 +75,7 @@ static irqreturn_t handle_input(int irq,
BUG_ON((prod - cons) > sizeof(intf->in));
while (cons != prod) {
@@ -12844,17 +12855,6 @@ Acked-by: jbeulich@novell.com
+}
+
+#endif /* __XEN_NETUTIL_H__ */
---- head.orig/include/xen/xencons.h 2007-10-15 09:39:38.000000000 +0200
-+++ head/include/xen/xencons.h 2011-01-31 17:29:16.000000000 +0100
-@@ -8,7 +8,7 @@ void xencons_force_flush(void);
- void xencons_resume(void);
-
- /* Interrupt work hooks. Receive data, or kick data out. */
--void xencons_rx(char *buf, unsigned len, struct pt_regs *regs);
-+void xencons_rx(char *buf, unsigned len);
- void xencons_tx(void);
-
- int xencons_ring_init(void);
--- head.orig/mm/mprotect.c 2011-06-30 15:38:52.000000000 +0200
+++ head/mm/mprotect.c 2011-01-31 17:29:16.000000000 +0100
@@ -97,7 +97,7 @@ static inline void change_pmd_range(stru
diff --git a/patches.xen/xen3-patch-2.6.20 b/patches.xen/xen3-patch-2.6.20
index 72494c2f18..abb2f23005 100644
--- a/patches.xen/xen3-patch-2.6.20
+++ b/patches.xen/xen3-patch-2.6.20
@@ -4308,7 +4308,7 @@ Acked-by: jbeulich@novell.com
-}
-__setup("call_trace=", call_trace_setup);
-#endif
---- head.orig/arch/x86/kernel/vmlinux.lds.S 2012-03-12 12:42:38.000000000 +0100
+--- head.orig/arch/x86/kernel/vmlinux.lds.S 2012-03-22 15:48:28.000000000 +0100
+++ head/arch/x86/kernel/vmlinux.lds.S 2011-09-07 15:22:44.000000000 +0200
@@ -83,6 +83,10 @@ SECTIONS
{
@@ -4321,7 +4321,7 @@ Acked-by: jbeulich@novell.com
phys_startup_32 = startup_32 - LOAD_OFFSET;
#else
. = __START_KERNEL;
---- head.orig/arch/x86/kvm/Kconfig 2012-03-12 12:42:38.000000000 +0100
+--- head.orig/arch/x86/kvm/Kconfig 2012-03-22 15:48:28.000000000 +0100
+++ head/arch/x86/kvm/Kconfig 2011-01-31 17:32:16.000000000 +0100
@@ -7,6 +7,7 @@ source "virt/kvm/Kconfig"
menuconfig VIRTUALIZATION
@@ -5584,9 +5584,9 @@ Acked-by: jbeulich@novell.com
return ret;
}
---- head.orig/drivers/xen/console/console.c 2011-01-31 17:29:16.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-01-31 17:32:16.000000000 +0100
-@@ -85,11 +85,6 @@ static int xc_num = -1;
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:43:32.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 13:43:53.000000000 +0100
+@@ -77,11 +77,6 @@ static int xc_num = -1;
#define XEN_HVC_MAJOR 229
#define XEN_HVC_MINOR 0
@@ -5598,7 +5598,7 @@ Acked-by: jbeulich@novell.com
static int __init xencons_setup(char *str)
{
char *q;
-@@ -354,8 +349,8 @@ void __init dom0_init_screen_info(const
+@@ -346,8 +341,8 @@ void __init dom0_init_screen_info(const
#define DUMMY_TTY(_tty) ((xc_mode == XC_TTY) && \
((_tty)->index != (xc_num - 1)))
@@ -5609,7 +5609,7 @@ Acked-by: jbeulich@novell.com
static struct tty_struct *xencons_tty;
static int xencons_priv_irq;
static char x_char;
-@@ -371,7 +366,9 @@ void xencons_rx(char *buf, unsigned len)
+@@ -363,7 +358,9 @@ void xencons_rx(char *buf, unsigned len)
for (i = 0; i < len; i++) {
#ifdef CONFIG_MAGIC_SYSRQ
@@ -5713,8 +5713,8 @@ Acked-by: jbeulich@novell.com
int err;
--- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:44:39.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:45:25.000000000 +0100
-@@ -156,7 +156,12 @@ static void xen_smp_intr_exit(unsigned i
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:07:26.000000000 +0100
+@@ -154,7 +154,12 @@ static void xen_smp_intr_exit(unsigned i
void __cpuinit cpu_bringup(void)
{
diff --git a/patches.xen/xen3-patch-2.6.22 b/patches.xen/xen3-patch-2.6.22
index 9a8fad8d27..a7a83631a1 100644
--- a/patches.xen/xen3-patch-2.6.22
+++ b/patches.xen/xen3-patch-2.6.22
@@ -4054,7 +4054,7 @@ Acked-by: jbeulich@novell.com
if (err <= 0) {
WPRINTK("bind_listening_port_to_irqhandler failed "
"(err=%d)\n", err);
---- head.orig/drivers/hwmon/Kconfig 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/drivers/hwmon/Kconfig 2012-03-22 15:48:28.000000000 +0100
+++ head/drivers/hwmon/Kconfig 2011-11-17 10:51:28.000000000 +0100
@@ -434,7 +434,7 @@ config SENSORS_GPIO_FAN
@@ -4777,8 +4777,8 @@ Acked-by: jbeulich@novell.com
shinfo_mfn = xen_start_info->shared_info >> PAGE_SHIFT;
--- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:45:36.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:46:26.000000000 +0100
-@@ -156,13 +156,12 @@ static void xen_smp_intr_exit(unsigned i
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:08:04.000000000 +0100
+@@ -154,13 +154,12 @@ static void xen_smp_intr_exit(unsigned i
void __cpuinit cpu_bringup(void)
{
@@ -4794,7 +4794,7 @@ Acked-by: jbeulich@novell.com
+#endif
touch_softlockup_watchdog();
preempt_disable();
- local_irq_enable();
+ lock_ipi_call_lock();
@@ -182,11 +181,6 @@ static void __cpuinit cpu_initialize_con
static DEFINE_SPINLOCK(ctxt_lock);
@@ -5673,7 +5673,7 @@ Acked-by: jbeulich@novell.com
if (error)
return error;
---- head.orig/arch/x86/include/asm/boot.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/boot.h 2012-03-22 15:48:28.000000000 +0100
+++ head/arch/x86/include/asm/boot.h 2011-01-31 17:32:29.000000000 +0100
@@ -16,7 +16,7 @@
& ~(CONFIG_PHYSICAL_ALIGN - 1))
@@ -8053,7 +8053,7 @@ Acked-by: jbeulich@novell.com
EXPORT_SYMBOL(swiotlb_map_single);
EXPORT_SYMBOL(swiotlb_unmap_single);
EXPORT_SYMBOL(swiotlb_map_sg);
---- head.orig/mm/vmalloc.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/mm/vmalloc.c 2012-03-22 15:48:28.000000000 +0100
+++ head/mm/vmalloc.c 2012-02-08 11:32:39.000000000 +0100
@@ -1575,6 +1575,13 @@ static void *__vmalloc_area_node(struct
struct page **pages;
diff --git a/patches.xen/xen3-patch-2.6.24 b/patches.xen/xen3-patch-2.6.24
index 0f94745545..2aa36e21fe 100644
--- a/patches.xen/xen3-patch-2.6.24
+++ b/patches.xen/xen3-patch-2.6.24
@@ -218,7 +218,7 @@ Acked-by: jbeulich@novell.com
kfree(buf);
return -EINVAL;
}
---- head.orig/arch/x86/kernel/cpu/Makefile 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/Makefile 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/kernel/cpu/Makefile 2012-02-16 12:31:44.000000000 +0100
@@ -40,6 +40,8 @@ obj-$(CONFIG_MTRR) += mtrr/
@@ -250,7 +250,7 @@ Acked-by: jbeulich@novell.com
c->x86_clflush_size = 32;
memset(&c->x86_capability, 0, sizeof c->x86_capability);
---- head.orig/arch/x86/kernel/cpu/intel.c 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/intel.c 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/kernel/cpu/intel.c 2012-02-08 11:36:23.000000000 +0100
@@ -302,6 +302,7 @@ static void __cpuinit srat_detect_node(s
#endif
@@ -4269,7 +4269,7 @@ Acked-by: jbeulich@novell.com
/* Copied from arch/i386/pci/common.c */
pci_cache_line_size = 32 >> 2;
---- head.orig/drivers/acpi/processor_core.c 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/acpi/processor_core.c 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/acpi/processor_core.c 2012-02-08 11:38:53.000000000 +0100
@@ -199,11 +199,21 @@ int acpi_get_cpuid(acpi_handle handle, i
}
@@ -4335,7 +4335,7 @@ Acked-by: jbeulich@novell.com
static inline int
---- head.orig/drivers/cpuidle/Kconfig 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/cpuidle/Kconfig 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/cpuidle/Kconfig 2012-02-29 10:35:17.000000000 +0100
@@ -1,6 +1,7 @@
@@ -4345,7 +4345,7 @@ Acked-by: jbeulich@novell.com
default y if ACPI || PPC_PSERIES
help
CPU idle is a generic framework for supporting software-controlled
---- head.orig/drivers/dma/Kconfig 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/dma/Kconfig 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/dma/Kconfig 2011-01-31 17:56:27.000000000 +0100
@@ -61,7 +61,7 @@ config INTEL_IOATDMA
tristate "Intel I/OAT DMA support"
@@ -4356,14 +4356,14 @@ Acked-by: jbeulich@novell.com
select ASYNC_TX_DISABLE_PQ_VAL_DMA
select ASYNC_TX_DISABLE_XOR_VAL_DMA
help
---- head.orig/drivers/dma/ioat/Makefile 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/dma/ioat/Makefile 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/dma/ioat/Makefile 2011-01-31 17:56:27.000000000 +0100
@@ -1,2 +1,3 @@
obj-$(CONFIG_INTEL_IOATDMA) += ioatdma.o
-ioatdma-y := pci.o dma.o dma_v2.o dma_v3.o dca.o
+dca-$(CONFIG_DCA) := dca.o
+ioatdma-y := pci.o dma.o dma_v2.o dma_v3.o $(dca-y) $(dca-m)
---- head.orig/drivers/dma/ioat/dca.c 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/dma/ioat/dca.c 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/dma/ioat/dca.c 2011-01-31 17:56:27.000000000 +0100
@@ -682,3 +682,15 @@ ioat3_dca_init(struct pci_dev *pdev, voi
@@ -4381,7 +4381,7 @@ Acked-by: jbeulich@novell.com
+ free_dca_provider(device->dca);
+ device->dca = NULL;
+}
---- head.orig/drivers/dma/ioat/dma.h 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/dma/ioat/dma.h 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/dma/ioat/dma.h 2011-01-31 17:56:27.000000000 +0100
@@ -347,4 +347,22 @@ void ioat_kobject_del(struct ioatdma_dev
extern const struct sysfs_ops ioat_sysfs_ops;
@@ -4406,7 +4406,7 @@ Acked-by: jbeulich@novell.com
+#endif
+
#endif /* IOATDMA_H */
---- head.orig/drivers/dma/ioat/pci.c 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/drivers/dma/ioat/pci.c 2012-03-22 15:48:27.000000000 +0100
+++ head/drivers/dma/ioat/pci.c 2011-09-07 15:36:19.000000000 +0200
@@ -29,7 +29,6 @@
#include <linux/module.h>
@@ -4733,8 +4733,8 @@ Acked-by: jbeulich@novell.com
abort:
xenbus_transaction_end(xbt, 1);
--- head.orig/drivers/xen/blkback/xenbus.c 2011-01-31 17:49:31.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 13:40:10.000000000 +0100
-@@ -294,10 +294,9 @@ static void backend_changed(struct xenbu
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 13:44:27.000000000 +0100
+@@ -291,10 +291,9 @@ static void backend_changed(struct xenbu
if ((be->major || be->minor) &&
((be->major != major) || (be->minor != minor))) {
@@ -4748,7 +4748,7 @@ Acked-by: jbeulich@novell.com
return;
}
-@@ -360,8 +359,8 @@ static void frontend_changed(struct xenb
+@@ -357,8 +356,8 @@ static void frontend_changed(struct xenb
switch (frontend_state) {
case XenbusStateInitialising:
if (dev->state == XenbusStateClosed) {
@@ -4759,7 +4759,7 @@ Acked-by: jbeulich@novell.com
xenbus_switch_state(dev, XenbusStateInitWait);
}
break;
-@@ -508,10 +507,9 @@ static int connect_ring(struct backend_i
+@@ -503,10 +502,9 @@ static int connect_ring(struct backend_i
kfree(protocol);
return -1;
}
@@ -5019,9 +5019,9 @@ Acked-by: jbeulich@novell.com
goto out;
}
---- head.orig/drivers/xen/console/console.c 2011-01-31 17:32:16.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-01-31 17:56:27.000000000 +0100
-@@ -716,10 +716,10 @@ static int __init xencons_init(void)
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:43:53.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 13:44:18.000000000 +0100
+@@ -708,10 +708,10 @@ static int __init xencons_init(void)
tty_set_operations(xencons_driver, &xencons_ops);
if ((rc = tty_register_driver(DRV(xencons_driver))) != 0) {
@@ -5036,7 +5036,7 @@ Acked-by: jbeulich@novell.com
put_tty_driver(xencons_driver);
xencons_driver = NULL;
return rc;
-@@ -736,8 +736,8 @@ static int __init xencons_init(void)
+@@ -728,8 +728,8 @@ static int __init xencons_init(void)
BUG_ON(xencons_priv_irq < 0);
}
@@ -5047,9 +5047,9 @@ Acked-by: jbeulich@novell.com
return 0;
}
---- head.orig/drivers/xen/console/xencons_ring.c 2011-01-31 17:29:16.000000000 +0100
-+++ head/drivers/xen/console/xencons_ring.c 2011-01-31 17:56:27.000000000 +0100
-@@ -125,7 +125,7 @@ int xencons_ring_init(void)
+--- head.orig/drivers/xen/console/xencons_ring.c 2012-03-22 13:43:28.000000000 +0100
++++ head/drivers/xen/console/xencons_ring.c 2012-03-22 13:44:19.000000000 +0100
+@@ -100,7 +100,7 @@ int xencons_ring_init(void)
xen_start_info->console.domU.evtchn,
handle_input, 0, "xencons", NULL);
if (irq < 0) {
@@ -5310,8 +5310,8 @@ Acked-by: jbeulich@novell.com
return err;
}
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:46:26.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:50:38.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:08:04.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:08:42.000000000 +0100
@@ -34,31 +34,20 @@ extern void failsafe_callback(void);
extern void system_call(void);
extern void smp_trap_init(trap_info_t *);
@@ -5377,7 +5377,7 @@ Acked-by: jbeulich@novell.com
static int __cpuinit xen_smp_intr_init(unsigned int cpu)
{
int rc;
-@@ -158,9 +123,9 @@ void __cpuinit cpu_bringup(void)
+@@ -156,9 +121,9 @@ void __cpuinit cpu_bringup(void)
{
cpu_init();
#ifdef __i386__
@@ -5457,8 +5457,16 @@ Acked-by: jbeulich@novell.com
return rc;
- }
- cpu_set(cpu, cpu_online_map);
+ rc = HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL);
+ if (!rc) {
+@@ -437,7 +383,6 @@ int __cpuinit __cpu_up(unsigned int cpu)
+ if (rc) {
+ xen_smp_intr_exit(cpu);
+- remove_siblinginfo(cpu);
+ if (num_online_cpus() == 1)
+ alternatives_smp_switch(0);
+ }
--- head.orig/drivers/xen/fbfront/xenfb.c 2011-01-31 17:32:16.000000000 +0100
+++ head/drivers/xen/fbfront/xenfb.c 2011-01-31 17:56:27.000000000 +0100
@@ -240,8 +240,8 @@ static void xenfb_update_screen(struct x
@@ -10152,7 +10160,7 @@ Acked-by: jbeulich@novell.com
+#else
+# include "xor_64.h"
+#endif
---- head.orig/arch/x86/include/asm/mmu.h 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/arch/x86/include/asm/mmu.h 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/include/asm/mmu.h 2011-06-30 16:30:20.000000000 +0200
@@ -16,6 +16,9 @@ typedef struct {
/* True if mm supports a task running in 32 bit compatibility mode. */
@@ -10193,7 +10201,7 @@ Acked-by: jbeulich@novell.com
/* add a backtrace entry, to be called from the ->backtrace callback */
void oprofile_add_trace(unsigned long eip);
---- head.orig/include/linux/sysctl.h 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/include/linux/sysctl.h 2012-03-22 15:48:27.000000000 +0100
+++ head/include/linux/sysctl.h 2011-01-31 17:56:27.000000000 +0100
@@ -59,6 +59,7 @@ enum
CTL_BUS=8, /* Busses */
@@ -10383,7 +10391,7 @@ Acked-by: jbeulich@novell.com
VMCOREINFO_SYMBOL(_stext);
VMCOREINFO_SYMBOL(vmlist);
---- head.orig/kernel/sysctl_binary.c 2012-03-12 15:23:02.000000000 +0100
+--- head.orig/kernel/sysctl_binary.c 2012-03-22 15:48:27.000000000 +0100
+++ head/kernel/sysctl_binary.c 2011-01-31 17:56:27.000000000 +0100
@@ -873,6 +873,14 @@ static const struct bin_table bin_bus_ta
};
diff --git a/patches.xen/xen3-patch-2.6.25 b/patches.xen/xen3-patch-2.6.25
index a09ca134b2..78a743d558 100644
--- a/patches.xen/xen3-patch-2.6.25
+++ b/patches.xen/xen3-patch-2.6.25
@@ -5634,7 +5634,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
+ unsigned long range_end = mm->brk + 0x02000000;
+ return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
+}
---- head.orig/arch/x86/kernel/rtc.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/rtc.c 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/kernel/rtc.c 2011-12-21 10:59:00.000000000 +0100
@@ -30,6 +30,7 @@ EXPORT_SYMBOL(cmos_lock);
DEFINE_SPINLOCK(rtc_lock);
@@ -17654,7 +17654,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
vdso32.so-$(CONFIG_XEN) += $(xen-vdso32-y)
vdso32-images = $(vdso32.so-y:%=vdso32-%.so)
---- head.orig/arch/x86/vdso/vdso32/syscall.S 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/vdso/vdso32/syscall.S 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/vdso/vdso32/syscall.S 2011-01-31 18:01:51.000000000 +0100
@@ -19,8 +19,10 @@ __kernel_vsyscall:
.Lpush_ebp:
@@ -17667,7 +17667,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
movl %ebp, %ecx
popl %ebp
.Lpop_ebp:
---- head.orig/arch/x86/vdso/vdso32.S 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/vdso/vdso32.S 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/vdso/vdso32.S 2011-01-31 18:01:51.000000000 +0100
@@ -19,4 +19,16 @@ vdso32_sysenter_start:
.incbin "arch/x86/vdso/vdso32-sysenter.so"
@@ -18903,8 +18903,8 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
irq_resume();
#ifdef __x86_64__
/*
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:50:38.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:51:08.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:08:42.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:09:23.000000000 +0100
@@ -57,6 +57,10 @@ void __init prefill_possible_map(void)
return;
@@ -18935,14 +18935,14 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
return rc;
}
-@@ -116,6 +125,7 @@ static void xen_smp_intr_exit(unsigned i
+@@ -115,6 +124,7 @@ static void xen_smp_intr_exit(unsigned i
unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
+ xen_spinlock_cleanup(cpu);
}
- #endif
+ void __cpuinit cpu_bringup(void)
@@ -163,36 +173,25 @@ static void __cpuinit cpu_initialize_con
smp_trap_init(ctxt.trap_ctxt);
@@ -19519,7 +19519,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
.resume = xenoprof_resume,
.suspend = xenoprof_suspend
};
---- head.orig/arch/x86/include/asm/e820.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/e820.h 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/include/asm/e820.h 2011-01-31 18:01:51.000000000 +0100
@@ -66,7 +66,11 @@ struct e820map {
struct e820entry map[E820_X_MAX];
@@ -19533,7 +19533,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
#define ISA_END_ADDRESS 0x100000
#define BIOS_BEGIN 0x000a0000
---- head.orig/arch/x86/include/asm/hardirq.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/hardirq.h 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/include/asm/hardirq.h 2012-02-08 11:39:50.000000000 +0100
@@ -19,7 +19,11 @@ typedef struct {
#ifdef CONFIG_SMP
@@ -27898,7 +27898,7 @@ Automatically created from "patches.kernel.org/patch-2.6.25" by xen-port-patches
void leave_mm(int cpu);
#else
static inline void leave_mm(int cpu)
---- head.orig/arch/x86/include/asm/ptrace.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/ptrace.h 2012-03-22 15:48:27.000000000 +0100
+++ head/arch/x86/include/asm/ptrace.h 2011-09-07 15:37:41.000000000 +0200
@@ -286,7 +286,9 @@ static inline unsigned long regs_get_ker
}
diff --git a/patches.xen/xen3-patch-2.6.26 b/patches.xen/xen3-patch-2.6.26
index 556d7c1b8f..42611bd0c7 100644
--- a/patches.xen/xen3-patch-2.6.26
+++ b/patches.xen/xen3-patch-2.6.26
@@ -697,7 +697,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
}
void mtrr_ap_init(void)
---- head.orig/arch/x86/kernel/cpu/bugs.c 2012-03-12 15:22:59.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/bugs.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/cpu/bugs.c 2011-09-07 15:43:05.000000000 +0200
@@ -17,6 +17,7 @@
#include <asm/paravirt.h>
@@ -740,7 +740,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
}
/*
---- head.orig/arch/x86/kernel/cpu/proc.c 2012-03-12 15:22:59.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/proc.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/cpu/proc.c 2011-03-03 16:38:42.000000000 +0100
@@ -10,7 +10,7 @@
static void show_cpuinfo_core(struct seq_file *m, struct cpuinfo_x86 *c,
@@ -2233,7 +2233,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
return error;
}
---- head.orig/arch/x86/kernel/mmconf-fam10h_64.c 2012-03-12 15:22:59.000000000 +0100
+--- head.orig/arch/x86/kernel/mmconf-fam10h_64.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/mmconf-fam10h_64.c 2011-01-31 18:07:35.000000000 +0100
@@ -205,12 +205,20 @@ void __cpuinit fam10h_check_enable_mmcfg
return;
@@ -14903,7 +14903,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
EXPORT_SYMBOL(pci_disable_msix);
/**
---- head.orig/drivers/video/Kconfig 2012-03-12 15:22:59.000000000 +0100
+--- head.orig/drivers/video/Kconfig 2012-03-22 15:48:26.000000000 +0100
+++ head/drivers/video/Kconfig 2011-11-17 11:03:25.000000000 +0100
@@ -2263,7 +2263,7 @@ config FB_VIRTUAL
@@ -15736,9 +15736,9 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
/* We want to return the real error code, not EAGAIN. */
return direct_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
size, vma->vm_page_prot, DOMID_IO);
---- head.orig/drivers/xen/console/console.c 2011-01-31 17:56:27.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-01-31 18:07:35.000000000 +0100
-@@ -551,16 +551,18 @@ static int xencons_write(
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:44:18.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 13:45:36.000000000 +0100
+@@ -543,16 +543,18 @@ static int xencons_write(
return i;
}
@@ -15760,7 +15760,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
}
static void xencons_flush_chars(struct tty_struct *tty)
-@@ -582,7 +584,7 @@ static void xencons_wait_until_sent(stru
+@@ -574,7 +576,7 @@ static void xencons_wait_until_sent(stru
if (DUMMY_TTY(tty))
return;
@@ -15769,7 +15769,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(1);
if (signal_pending(current))
-@@ -631,8 +633,7 @@ static void xencons_close(struct tty_str
+@@ -623,8 +625,7 @@ static void xencons_close(struct tty_str
tty->closing = 1;
tty_wait_until_sent(tty, 0);
@@ -15833,12 +15833,12 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
/*
* Local variables:
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:51:08.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:52:34.000000000 +0100
-@@ -118,7 +118,7 @@ static int __cpuinit xen_smp_intr_init(u
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:09:23.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:09:53.000000000 +0100
+@@ -117,7 +117,7 @@ static int __cpuinit xen_smp_intr_init(u
+ return rc;
}
- #ifdef CONFIG_HOTPLUG_CPU
-static void xen_smp_intr_exit(unsigned int cpu)
+static void __cpuinit xen_smp_intr_exit(unsigned int cpu)
{
@@ -15944,7 +15944,7 @@ Automatically created from "patches.kernel.org/patch-2.6.26" by xen-port-patches
};
static int xenfb_mmap(struct fb_info *fb_info, struct vm_area_struct *vma)
---- head.orig/drivers/xen/features.c 2012-03-12 15:22:59.000000000 +0100
+--- head.orig/drivers/xen/features.c 2012-03-22 15:48:26.000000000 +0100
+++ head/drivers/xen/features.c 2011-01-31 18:07:35.000000000 +0100
@@ -9,14 +9,21 @@
#include <linux/cache.h>
diff --git a/patches.xen/xen3-patch-2.6.27 b/patches.xen/xen3-patch-2.6.27
index 4aa7b4ba79..5b55128803 100644
--- a/patches.xen/xen3-patch-2.6.27
+++ b/patches.xen/xen3-patch-2.6.27
@@ -358,7 +358,7 @@ have been needed - see SLE11 SPn).
/*
* If acpi_disabled, bail out
---- head.orig/arch/x86/kernel/amd_nb.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/amd_nb.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/amd_nb.c 2011-04-13 13:47:56.000000000 +0200
@@ -15,6 +15,10 @@ static u32 *flush_words;
const struct pci_device_id amd_nb_misc_ids[] = {
@@ -385,7 +385,7 @@ have been needed - see SLE11 SPn).
#ifndef CONFIG_XEN
static int modern_apic(void)
---- head.orig/arch/x86/kernel/cpu/amd.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/amd.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/cpu/amd.c 2012-02-08 11:50:52.000000000 +0100
@@ -612,6 +612,7 @@ static void __cpuinit init_amd(struct cp
fam10h_check_enable_mmcfg();
@@ -403,7 +403,7 @@ have been needed - see SLE11 SPn).
/*
* Family 0x12 and above processors have APIC timer
---- head.orig/arch/x86/kernel/cpu/bugs_64.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/bugs_64.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/cpu/bugs_64.c 2011-02-01 14:38:38.000000000 +0100
@@ -20,6 +20,7 @@ void __init check_bugs(void)
#endif
@@ -5054,7 +5054,7 @@ have been needed - see SLE11 SPn).
cmpl $nr_syscalls,%eax
jb syscall_call
jmp syscall_exit
---- head.orig/arch/x86/kernel/entry_64.S 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/entry_64.S 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/entry_64.S 2012-02-08 11:50:58.000000000 +0100
@@ -1256,7 +1256,7 @@ ENTRY(arch_unwind_init_running)
END(arch_unwind_init_running)
@@ -10034,7 +10034,7 @@ have been needed - see SLE11 SPn).
};
void __init no_iommu_init(void)
---- head.orig/arch/x86/kernel/probe_roms.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/probe_roms.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/kernel/probe_roms.c 2011-09-07 15:45:16.000000000 +0200
@@ -232,7 +232,7 @@ void __init probe_roms(void)
upper = system_rom_resource.start;
@@ -21009,7 +21009,7 @@ have been needed - see SLE11 SPn).
void make_lowmem_page_readonly(void *va, unsigned int feature)
{
pte_t *pte;
---- head.orig/arch/x86/pci/amd_bus.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/pci/amd_bus.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/pci/amd_bus.c 2012-02-08 11:51:07.000000000 +0100
@@ -330,6 +330,7 @@ static int __init early_fill_mp_bus_info
@@ -21058,7 +21058,7 @@ have been needed - see SLE11 SPn).
if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD)
return 0;
---- head.orig/arch/x86/pci/mmconfig-shared.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/pci/mmconfig-shared.c 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/pci/mmconfig-shared.c 2011-07-06 12:20:45.000000000 +0200
@@ -21,6 +21,10 @@
#include <asm/pci_x86.h>
@@ -21655,9 +21655,9 @@ have been needed - see SLE11 SPn).
};
static int xen_mmap_mem(struct file * file, struct vm_area_struct * vma)
---- head.orig/drivers/xen/console/console.c 2011-01-31 18:07:35.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-02-01 14:38:38.000000000 +0100
-@@ -431,9 +431,7 @@ static void __xencons_tx_flush(void)
+--- head.orig/drivers/xen/console/console.c 2012-03-22 13:45:36.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:04:26.000000000 +0100
+@@ -423,9 +423,7 @@ static void __xencons_tx_flush(void)
if (work_done && (xencons_tty != NULL)) {
wake_up_interruptible(&xencons_tty->write_wait);
@@ -21668,7 +21668,7 @@ have been needed - see SLE11 SPn).
}
}
-@@ -634,8 +632,8 @@ static void xencons_close(struct tty_str
+@@ -626,8 +624,8 @@ static void xencons_close(struct tty_str
tty->closing = 1;
tty_wait_until_sent(tty, 0);
tty_driver_flush_buffer(tty);
@@ -21679,6 +21679,21 @@ have been needed - see SLE11 SPn).
tty->closing = 0;
spin_lock_irqsave(&xencons_lock, flags);
xencons_tty = NULL;
+--- head.orig/drivers/xen/console/xencons_ring.c 2012-03-22 13:44:19.000000000 +0100
++++ head/drivers/xen/console/xencons_ring.c 2012-03-22 14:04:29.000000000 +0100
+@@ -109,6 +109,7 @@ int xencons_ring_init(void)
+ return 0;
+ }
+
++#ifdef CONFIG_PM_SLEEP
+ void xencons_resume(void)
+ {
+ if (xencons_irq)
+@@ -121,3 +122,4 @@ void xencons_resume(void)
+ /* In case we have in-flight data after save/restore... */
+ notify_daemon();
+ }
++#endif
--- head.orig/drivers/xen/core/evtchn.c 2012-01-31 15:38:08.000000000 +0100
+++ head/drivers/xen/core/evtchn.c 2012-01-31 17:03:33.000000000 +0100
@@ -126,7 +126,11 @@ static int irq_bindcount[NR_IRQS];
@@ -21777,7 +21792,7 @@ have been needed - see SLE11 SPn).
/* No event channels are 'live' right now. */
for (i = 0; i < NR_EVENT_CHANNELS; i++)
---- head.orig/drivers/xen/core/gnttab.c 2012-03-12 13:39:56.000000000 +0100
+--- head.orig/drivers/xen/core/gnttab.c 2012-03-12 15:32:00.000000000 +0100
+++ head/drivers/xen/core/gnttab.c 2012-03-12 13:47:59.000000000 +0100
@@ -40,7 +40,7 @@
#include <xen/gnttab.h>
@@ -22083,8 +22098,8 @@ have been needed - see SLE11 SPn).
static int setup_shutdown_watcher(void)
{
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:52:34.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:53:28.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:09:53.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:10:43.000000000 +0100
@@ -25,6 +25,7 @@
extern irqreturn_t smp_reschedule_interrupt(int, void *);
@@ -22157,15 +22172,14 @@ have been needed - see SLE11 SPn).
xen_spinlock_cleanup(cpu);
return rc;
}
-@@ -125,6 +140,7 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -124,22 +139,19 @@ static void __cpuinit xen_smp_intr_exit(
unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
+ unbind_from_irqhandler(per_cpu(call1func_irq, cpu), NULL);
xen_spinlock_cleanup(cpu);
}
- #endif
-@@ -132,11 +148,7 @@ static void __cpuinit xen_smp_intr_exit(
+
void __cpuinit cpu_bringup(void)
{
cpu_init();
@@ -22176,7 +22190,14 @@ have been needed - see SLE11 SPn).
-#endif
touch_softlockup_watchdog();
preempt_disable();
- local_irq_enable();
+- lock_ipi_call_lock();
++ ipi_call_lock_irq();
+ cpu_set(smp_processor_id(), cpu_online_map);
+- unlock_ipi_call_lock();
++ ipi_call_unlock_irq();
+ }
+
+ static void __cpuinit cpu_bringup_and_idle(void)
@@ -211,9 +223,6 @@ void __init smp_prepare_cpus(unsigned in
struct task_struct *idle;
int apicid;
@@ -22563,7 +22584,7 @@ have been needed - see SLE11 SPn).
} else
while (!list_empty(queue)) {
--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:47:02.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2011-06-10 11:54:17.000000000 +0200
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:03:53.000000000 +0100
@@ -36,6 +36,7 @@
__FUNCTION__, __LINE__, ##args)
@@ -22572,6 +22593,74 @@ have been needed - see SLE11 SPn).
#include <linux/err.h>
#include <linux/string.h>
#include <linux/ctype.h>
+@@ -746,6 +747,7 @@ static struct xenbus_watch fe_watch = {
+ .callback = frontend_changed,
+ };
+
++#if defined(CONFIG_PM_SLEEP) || defined(MODULE)
+ static int suspend_dev(struct device *dev, void *data)
+ {
+ int err = 0;
+@@ -854,6 +856,7 @@ void xenbus_suspend_cancel(void)
+ bus_for_each_dev(&xenbus_frontend.bus, NULL, NULL, suspend_cancel_dev);
+ xenbus_backend_resume(suspend_cancel_dev);
+ }
++#endif /* CONFIG_PM_SLEEP || MODULE */
+
+ /* A flag to determine if xenstored is 'ready' (i.e. has started) */
+ atomic_t xenbus_xsd_state = ATOMIC_INIT(XENBUS_XSD_UNCOMMITTED);
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-12-21 10:56:21.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:04:14.000000000 +0100
+@@ -227,6 +227,7 @@ static struct xenbus_watch be_watch = {
+ .callback = backend_changed,
+ };
+
++#ifdef CONFIG_PM_SLEEP
+ void xenbus_backend_suspend(int (*fn)(struct device *, void *))
+ {
+ DPRINTK("");
+@@ -240,6 +241,7 @@ void xenbus_backend_resume(int (*fn)(str
+ if (!xenbus_backend.error)
+ bus_for_each_dev(&xenbus_backend.bus, NULL, NULL, fn);
+ }
++#endif
+
+ void xenbus_backend_probe_and_watch(void)
+ {
+--- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 15:30:16.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:04:09.000000000 +0100
+@@ -187,6 +187,7 @@ static void transaction_end(void)
+ wake_up(&xs_state.transaction_wq);
+ }
+
++#if !defined(CONFIG_XEN) || defined(CONFIG_PM_SLEEP)
+ static void transaction_suspend(void)
+ {
+ mutex_lock(&xs_state.transaction_mutex);
+@@ -198,6 +199,7 @@ static void transaction_resume(void)
+ {
+ mutex_unlock(&xs_state.transaction_mutex);
+ }
++#endif
+
+ void *xenbus_dev_request_and_reply(struct xsd_sockmsg *msg)
+ {
+@@ -717,6 +719,7 @@ void unregister_xenbus_watch(struct xenb
+ }
+ EXPORT_SYMBOL_GPL(unregister_xenbus_watch);
+
++#if !defined(CONFIG_XEN) || defined(CONFIG_PM_SLEEP)
+ void xs_suspend(void)
+ {
+ transaction_suspend();
+@@ -750,6 +753,7 @@ void xs_suspend_cancel(void)
+ up_write(&xs_state.watch_mutex);
+ mutex_unlock(&xs_state.transaction_mutex);
+ }
++#endif
+
+ #if defined(CONFIG_XEN) || defined(MODULE)
+ static int xenwatch_handle_callback(void *data)
--- head.orig/fs/aio.c 2012-02-08 11:47:13.000000000 +0100
+++ head/fs/aio.c 2012-02-08 11:52:42.000000000 +0100
@@ -1376,7 +1376,7 @@ static int make_aio_fd(struct kioctx *io
@@ -22583,7 +22672,7 @@ have been needed - see SLE11 SPn).
if (fd < 0)
return fd;
---- head.orig/include/Kbuild 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/include/Kbuild 2012-03-22 15:48:26.000000000 +0100
+++ head/include/Kbuild 2011-02-01 14:38:38.000000000 +0100
@@ -8,5 +8,6 @@ header-y += mtd/
header-y += rdma/
@@ -24879,7 +24968,7 @@ have been needed - see SLE11 SPn).
-#define ARCH_SETUP machine_specific_arch_setup();
-
-static void __init machine_specific_arch_setup(void);
---- head.orig/arch/x86/include/asm/traps.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/traps.h 2012-03-22 15:48:26.000000000 +0100
+++ head/arch/x86/include/asm/traps.h 2011-09-07 15:45:44.000000000 +0200
@@ -40,6 +40,9 @@ asmlinkage void alignment_check(void);
asmlinkage void machine_check(void);
diff --git a/patches.xen/xen3-patch-2.6.28 b/patches.xen/xen3-patch-2.6.28
index 760d0ba74d..7cd6a1d056 100644
--- a/patches.xen/xen3-patch-2.6.28
+++ b/patches.xen/xen3-patch-2.6.28
@@ -7,7 +7,7 @@ Patch-mainline: 2.6.28
Acked-by: Jeff Mahoney <jeffm@suse.com>
Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches.py
---- head.orig/arch/ia64/Kconfig 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/Kconfig 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/Kconfig 2011-09-07 15:50:17.000000000 +0200
@@ -234,7 +234,7 @@ config IA64_HP_SIM
config IA64_XEN_GUEST
@@ -18,7 +18,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
help
Build a kernel that runs on Xen guest domain. At this moment only
16KB page size in supported.
---- head.orig/arch/ia64/Makefile 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/Makefile 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/Makefile 2011-02-01 14:39:24.000000000 +0100
@@ -55,7 +55,7 @@ core-$(CONFIG_IA64_XEN_GUEST) += arch/ia
core-$(CONFIG_IA64_SGI_SN2) += arch/ia64/sn/
@@ -29,7 +29,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
drivers-$(CONFIG_PCI) += arch/ia64/pci/
drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/
---- head.orig/arch/ia64/include/asm/xen/hypervisor.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/include/asm/xen/hypervisor.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/include/asm/xen/hypervisor.h 2011-02-01 14:39:24.000000000 +0100
@@ -40,7 +40,7 @@
#include <xen/xen.h>
@@ -40,7 +40,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
extern struct shared_info *HYPERVISOR_shared_info;
extern struct start_info *xen_start_info;
---- head.orig/arch/ia64/include/asm/xen/interface.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/include/asm/xen/interface.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/include/asm/xen/interface.h 2011-11-17 11:35:19.000000000 +0100
@@ -56,30 +56,19 @@
#ifndef _ASM_IA64_XEN_INTERFACE_H
@@ -88,7 +88,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#ifndef __ASSEMBLY__
---- head.orig/arch/ia64/kernel/asm-offsets.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/kernel/asm-offsets.c 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/kernel/asm-offsets.c 2011-02-01 14:39:24.000000000 +0100
@@ -290,7 +290,7 @@ void foo(void)
DEFINE(IA64_ITC_LASTCYCLE_OFFSET,
@@ -99,7 +99,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
BLANK();
DEFINE(XEN_NATIVE_ASM, XEN_NATIVE);
---- head.orig/arch/ia64/xen/Kconfig 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/xen/Kconfig 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/xen/Kconfig 2011-02-02 15:36:46.000000000 +0100
@@ -2,7 +2,7 @@
# This Kconfig describes xen/ia64 options
@@ -122,7 +122,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
- depends on XEN
+ depends on PARAVIRT_XEN
bool
---- head.orig/arch/ia64/xen/xcom_hcall.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/xen/xcom_hcall.c 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/ia64/xen/xcom_hcall.c 2011-02-01 14:39:24.000000000 +0100
@@ -343,7 +343,7 @@ xencommize_memory_reservation(struct xen
int
@@ -330,7 +330,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
.quad sys_getgroups16 /* 80 */
.quad sys_setgroups16
.quad sys32_old_select
---- head.orig/arch/x86/include/asm/agp.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/agp.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/agp.h 2011-02-01 14:39:24.000000000 +0100
@@ -15,6 +15,9 @@
#define map_page_into_agp(page) set_pages_uc(page, 1)
@@ -342,7 +342,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
/*
* Could use CLFLUSH here if the cpu supports it. But then it would
* need to be called for each cacheline of the whole page so it may
---- head.orig/arch/x86/include/asm/cpufeature.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/cpufeature.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/cpufeature.h 2012-02-16 12:35:15.000000000 +0100
@@ -293,7 +293,11 @@ extern const char * const x86_power_flag
#define cpu_has_xmm4_1 boot_cpu_has(X86_FEATURE_XMM4_1)
@@ -356,7 +356,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#define cpu_has_osxsave boot_cpu_has(X86_FEATURE_OSXSAVE)
#define cpu_has_hypervisor boot_cpu_has(X86_FEATURE_HYPERVISOR)
#define cpu_has_pclmulqdq boot_cpu_has(X86_FEATURE_PCLMULQDQ)
---- head.orig/arch/x86/include/asm/hw_irq.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/hw_irq.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/hw_irq.h 2011-09-07 15:49:58.000000000 +0200
@@ -151,6 +151,7 @@ extern void smp_error_interrupt(struct p
extern asmlinkage void smp_irq_move_cleanup_interrupt(void);
@@ -379,7 +379,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#endif
extern void (*__initconst interrupt[NR_VECTORS-FIRST_EXTERNAL_VECTOR])(void);
---- head.orig/arch/x86/include/asm/mc146818rtc.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/mc146818rtc.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/mc146818rtc.h 2011-07-15 12:38:27.000000000 +0200
@@ -14,7 +14,7 @@
#define RTC_ALWAYS_BCD 1 /* RTC operates in binary mode */
@@ -390,7 +390,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
/*
* This lock provides nmi access to the CMOS/RTC registers. It has some
* special properties. It is owned by a CPU and stores the index register
---- head.orig/arch/x86/include/asm/segment.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/segment.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/segment.h 2011-04-13 13:50:26.000000000 +0200
@@ -188,7 +188,9 @@
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
@@ -1879,7 +1879,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#endif
return 0;
---- head.orig/arch/x86/kernel/cpu/topology.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/topology.c 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/kernel/cpu/topology.c 2011-02-01 14:39:24.000000000 +0100
@@ -28,7 +28,7 @@
*/
@@ -4064,7 +4064,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
- if (is_uv_system())
- uv_cpu_init();
-}
---- head.orig/arch/x86/kernel/dumpstack_64.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/dumpstack_64.c 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/kernel/dumpstack_64.c 2011-02-01 14:39:24.000000000 +0100
@@ -21,6 +21,7 @@
#define N_EXCEPTION_STACKS_END \
@@ -22546,7 +22546,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#define ACPI_PROCESSOR_CLASS "processor"
#define _COMPONENT ACPI_PROCESSOR_COMPONENT
ACPI_MODULE_NAME("processor_extcntl")
---- head.orig/drivers/char/agp/generic.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/drivers/char/agp/generic.c 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/char/agp/generic.c 2011-04-28 11:13:24.000000000 +0200
@@ -1228,7 +1228,7 @@ int agp_generic_alloc_pages(struct agp_b
}
@@ -22566,7 +22566,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
#endif
for (i = 0; i < mem->page_count; i++) {
---- head.orig/drivers/firmware/dmi_scan.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/drivers/firmware/dmi_scan.c 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/firmware/dmi_scan.c 2011-02-17 10:11:37.000000000 +0100
@@ -482,6 +482,11 @@ static bool dmi_matches(const struct dmi
{
@@ -22580,7 +22580,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
WARN(!dmi_initialized, KERN_ERR "dmi check: not initialized yet.\n");
for (i = 0; i < ARRAY_SIZE(dmi->matches); i++) {
---- head.orig/drivers/idle/Kconfig 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/drivers/idle/Kconfig 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/idle/Kconfig 2011-02-01 14:39:24.000000000 +0100
@@ -10,7 +10,7 @@ config INTEL_IDLE
processors intel_idle does not support.
@@ -22637,7 +22637,7 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
+ return;
+ msi_acpi_init();
+}
---- head.orig/drivers/pci/probe.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/drivers/pci/probe.c 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/pci/probe.c 2012-02-21 11:39:12.000000000 +0100
@@ -1186,6 +1186,11 @@ static void pci_init_capabilities(struct
/* Vital Product Data */
@@ -22942,8 +22942,8 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
set_irq_chip_and_handler_name(i, &dynirq_chip,
handle_fasteoi_irq, "fasteoi");
}
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:53:28.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:53:44.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:10:43.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:20:41.000000000 +0100
@@ -23,10 +23,6 @@
#include <xen/cpu_hotplug.h>
#include <xen/xenbus.h>
@@ -22955,17 +22955,29 @@ Automatically created from "patches.kernel.org/patch-2.6.28" by xen-port-patches
extern int local_setup_timer(unsigned int cpu);
extern void local_teardown_timer(unsigned int cpu);
-@@ -145,7 +141,7 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -143,14 +139,18 @@ static void __cpuinit xen_smp_intr_exit(
+ xen_spinlock_cleanup(cpu);
}
- #endif
-void __cpuinit cpu_bringup(void)
+static void __cpuinit cpu_bringup(void)
{
++ unsigned int cpu;
++
cpu_init();
identify_secondary_cpu(&current_cpu_data);
-@@ -374,6 +370,20 @@ int __cpuinit __cpu_up(unsigned int cpu)
- return 0;
+ touch_softlockup_watchdog();
+ preempt_disable();
++ cpu = smp_processor_id();
++ notify_cpu_starting(cpu);
+ ipi_call_lock_irq();
+- cpu_set(smp_processor_id(), cpu_online_map);
++ cpu_set(cpu, cpu_online_map);
+ ipi_call_unlock_irq();
+ }
+
+@@ -388,6 +388,20 @@ int __cpuinit __cpu_up(unsigned int cpu)
+ return rc;
}
+void __ref play_dead(void)
diff --git a/patches.xen/xen3-patch-2.6.29 b/patches.xen/xen3-patch-2.6.29
index 27ad438ea6..642a6454f6 100644
--- a/patches.xen/xen3-patch-2.6.29
+++ b/patches.xen/xen3-patch-2.6.29
@@ -93,7 +93,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
typedef int vector_irq_t[NR_VECTORS];
DECLARE_PER_CPU(vector_irq_t, vector_irq);
---- head.orig/arch/x86/include/asm/hypervisor.h 2012-03-12 15:22:56.000000000 +0100
+--- head.orig/arch/x86/include/asm/hypervisor.h 2012-03-22 16:17:19.000000000 +0100
+++ head/arch/x86/include/asm/hypervisor.h 2011-04-13 13:52:09.000000000 +0200
@@ -60,3 +60,7 @@ static inline bool hypervisor_x2apic_ava
}
@@ -8893,7 +8893,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
int acpi_processor_cst_has_changed(struct acpi_processor *pr)
{
int cpu;
---- head.orig/drivers/gpu/drm/i915/i915_drv.c 2012-03-12 15:22:56.000000000 +0100
+--- head.orig/drivers/gpu/drm/i915/i915_drv.c 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/gpu/drm/i915/i915_drv.c 2012-02-08 12:06:37.000000000 +0100
@@ -842,7 +842,7 @@ static const struct file_operations i915
.open = drm_open,
@@ -8904,7 +8904,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
.poll = drm_poll,
.fasync = drm_fasync,
.read = drm_read,
---- head.orig/drivers/gpu/drm/i915/i915_drv.h 2012-03-12 15:22:56.000000000 +0100
+--- head.orig/drivers/gpu/drm/i915/i915_drv.h 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/gpu/drm/i915/i915_drv.h 2012-02-08 12:06:43.000000000 +0100
@@ -1201,6 +1201,11 @@ int __must_check i915_add_request(struct
struct drm_i915_gem_request *request);
@@ -8918,7 +8918,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
int __must_check
i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj,
---- head.orig/drivers/gpu/drm/i915/i915_gem.c 2012-03-12 15:22:56.000000000 +0100
+--- head.orig/drivers/gpu/drm/i915/i915_gem.c 2012-03-22 16:17:19.000000000 +0100
+++ head/drivers/gpu/drm/i915/i915_gem.c 2011-11-17 11:38:02.000000000 +0100
@@ -1172,6 +1172,17 @@ i915_gem_mmap_ioctl(struct drm_device *d
return 0;
@@ -9791,8 +9791,8 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return 0;
}
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:53:44.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-02-02 13:48:35.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:20:41.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:21:20.000000000 +0100
@@ -31,11 +31,7 @@ extern void failsafe_callback(void);
extern void system_call(void);
extern void smp_trap_init(trap_info_t *);
@@ -9822,7 +9822,16 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
}
static int __cpuinit xen_smp_intr_init(unsigned int cpu)
-@@ -165,7 +165,7 @@ static void __cpuinit cpu_initialize_con
+@@ -150,7 +150,7 @@ static void __cpuinit cpu_bringup(void)
+ cpu = smp_processor_id();
+ notify_cpu_starting(cpu);
+ ipi_call_lock_irq();
+- cpu_set(cpu, cpu_online_map);
++ set_cpu_online(cpu, true);
+ ipi_call_unlock_irq();
+ }
+
+@@ -169,7 +169,7 @@ static void __cpuinit cpu_initialize_con
struct task_struct *idle = idle_task(cpu);
@@ -9831,7 +9840,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return;
spin_lock(&ctxt_lock);
-@@ -230,13 +230,15 @@ void __init smp_prepare_cpus(unsigned in
+@@ -234,13 +234,15 @@ void __init smp_prepare_cpus(unsigned in
if (xen_smp_intr_init(0))
BUG();
@@ -9850,7 +9859,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
}
for_each_possible_cpu (cpu) {
-@@ -271,10 +273,8 @@ void __init smp_prepare_cpus(unsigned in
+@@ -275,10 +277,8 @@ void __init smp_prepare_cpus(unsigned in
#ifdef CONFIG_HOTPLUG_CPU
if (is_initial_xendomain())
@@ -9862,7 +9871,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
}
init_xenbus_allowed_cpumask();
-@@ -307,22 +307,24 @@ void __init smp_prepare_boot_cpu(void)
+@@ -311,22 +311,24 @@ void __init smp_prepare_boot_cpu(void)
*/
static int __init initialize_cpu_present_map(void)
{
@@ -9892,16 +9901,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return 0;
}
-@@ -362,7 +364,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
- if (rc)
- return rc;
-
-- cpu_set(cpu, cpu_online_map);
-+ set_cpu_online(cpu, true);
-
- rc = HYPERVISOR_vcpu_op(VCPUOP_up, cpu, NULL);
- BUG_ON(rc);
-@@ -375,7 +377,7 @@ void __ref play_dead(void)
+@@ -393,7 +395,7 @@ void __ref play_dead(void)
#ifdef CONFIG_HOTPLUG_CPU
idle_task_exit();
local_irq_disable();
@@ -10129,8 +10129,8 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
* closedown of this driver and its peer.
*/
void xenbus_dev_fatal(struct xenbus_device *dev, int err, const char *fmt, ...)
---- head.orig/drivers/xen/xenbus/xenbus_probe.c 2011-06-10 11:54:17.000000000 +0200
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:48:47.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:03:53.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:04:52.000000000 +0100
@@ -42,6 +42,7 @@
#include <linux/ctype.h>
#include <linux/fcntl.h>
@@ -10204,7 +10204,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
if (err)
goto fail;
-@@ -763,7 +787,7 @@ static int suspend_dev(struct device *de
+@@ -764,7 +788,7 @@ static int suspend_dev(struct device *de
err = drv->suspend(xdev);
if (err)
pr_warning("xenbus: suspend %s failed: %i\n",
@@ -10213,7 +10213,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return 0;
}
-@@ -783,7 +807,7 @@ static int suspend_cancel_dev(struct dev
+@@ -784,7 +808,7 @@ static int suspend_cancel_dev(struct dev
err = drv->suspend_cancel(xdev);
if (err)
pr_warning("xenbus: suspend_cancel %s failed: %i\n",
@@ -10222,7 +10222,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return 0;
}
-@@ -804,7 +828,7 @@ static int resume_dev(struct device *dev
+@@ -805,7 +829,7 @@ static int resume_dev(struct device *dev
err = talk_to_otherend(xdev);
if (err) {
pr_warning("xenbus: resume (talk_to_otherend) %s failed: %i\n",
@@ -10231,7 +10231,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return err;
}
-@@ -814,7 +838,7 @@ static int resume_dev(struct device *dev
+@@ -815,7 +839,7 @@ static int resume_dev(struct device *dev
err = drv->resume(xdev);
if (err) {
pr_warning("xenbus: resume %s failed: %i\n",
@@ -10240,7 +10240,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return err;
}
}
-@@ -822,7 +846,7 @@ static int resume_dev(struct device *dev
+@@ -823,7 +847,7 @@ static int resume_dev(struct device *dev
err = watch_otherend(xdev);
if (err) {
pr_warning("xenbus_probe: resume (watch_otherend) %s failed:"
@@ -10249,7 +10249,7 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
return err;
}
-@@ -1263,6 +1287,14 @@ xenbus_probe_init(void)
+@@ -1265,6 +1289,14 @@ xenbus_probe_init(void)
if (!is_initial_xendomain())
xenbus_probe(NULL);
@@ -10275,8 +10275,8 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
#endif
#if defined(CONFIG_XEN_BACKEND) || defined(CONFIG_XEN_BACKEND_MODULE)
---- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-12-21 10:56:21.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2011-02-01 14:42:26.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:04:14.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:04:54.000000000 +0100
@@ -36,6 +36,7 @@
__FUNCTION__, __LINE__, ##args)
@@ -10316,9 +10316,9 @@ Automatically created from "patches.kernel.org/patch-2.6.29" by xen-port-patches
},
.dev = {
.bus_id = "xen-backend",
---- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 15:30:16.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:14:12.000000000 +0100
-@@ -225,6 +225,9 @@ void *xenbus_dev_request_and_reply(struc
+--- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:04:09.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:04:55.000000000 +0100
+@@ -227,6 +227,9 @@ void *xenbus_dev_request_and_reply(struc
return ret;
}
diff --git a/patches.xen/xen3-patch-2.6.30 b/patches.xen/xen3-patch-2.6.30
index 72b6f203e2..4921d2ef95 100644
--- a/patches.xen/xen3-patch-2.6.30
+++ b/patches.xen/xen3-patch-2.6.30
@@ -24,7 +24,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
extern struct shared_info *HYPERVISOR_shared_info;
extern struct start_info *xen_start_info;
---- head.orig/arch/ia64/kernel/vmlinux.lds.S 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/ia64/kernel/vmlinux.lds.S 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/ia64/kernel/vmlinux.lds.S 2011-04-13 13:53:28.000000000 +0200
@@ -183,7 +183,7 @@ SECTIONS {
__start_gate_section = .;
@@ -167,7 +167,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
#endif
# define KEXEC_CONTROL_CODE_MAX_SIZE 2048
---- head.orig/arch/x86/include/asm/page_64_types.h 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/include/asm/page_64_types.h 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/include/asm/page_64_types.h 2011-04-13 13:53:28.000000000 +0200
@@ -69,7 +69,15 @@ extern void init_extra_mapping_wb(unsign
#endif /* !__ASSEMBLY__ */
@@ -3665,7 +3665,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
return 0;
}
---- head.orig/arch/x86/kernel/apic/Makefile 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/apic/Makefile 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/kernel/apic/Makefile 2012-02-08 12:11:33.000000000 +0100
@@ -25,3 +25,9 @@ obj-$(CONFIG_X86_ES7000) += es7000_32.o
@@ -11267,7 +11267,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
#ifdef CONFIG_XEN
static int
xen_panic_event(struct notifier_block *this, unsigned long event, void *ptr)
---- head.orig/arch/x86/kernel/setup_percpu.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/arch/x86/kernel/setup_percpu.c 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/kernel/setup_percpu.c 2011-04-13 13:53:28.000000000 +0200
@@ -219,7 +219,7 @@ void __init setup_per_cpu_areas(void)
* are zeroed indicating that the static arrays are
@@ -17689,8 +17689,8 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
#else
for (i = PIRQ_BASE; i < (PIRQ_BASE + NR_IRQS_LEGACY); i++) {
#endif
---- head.orig/drivers/xen/core/smpboot.c 2012-02-02 13:48:35.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-02-02 13:49:15.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:21:20.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:21:28.000000000 +0100
@@ -16,7 +16,6 @@
#include <linux/cpu.h>
#include <linux/percpu.h>
@@ -17699,7 +17699,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
#include <asm/pgalloc.h>
#include <xen/evtchn.h>
#include <xen/interface/vcpu.h>
-@@ -181,7 +180,7 @@ static void __cpuinit cpu_initialize_con
+@@ -185,7 +184,7 @@ static void __cpuinit cpu_initialize_con
smp_trap_init(ctxt.trap_ctxt);
@@ -17708,7 +17708,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
ctxt.gdt_ents = GDT_SIZE / 8;
ctxt.user_regs.cs = __KERNEL_CS;
-@@ -199,12 +198,13 @@ static void __cpuinit cpu_initialize_con
+@@ -203,12 +202,13 @@ static void __cpuinit cpu_initialize_con
ctxt.ctrlreg[3] = xen_pfn_to_cr3(virt_to_mfn(swapper_pg_dir));
ctxt.user_regs.fs = __KERNEL_PERCPU;
@@ -17723,7 +17723,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
#endif
if (HYPERVISOR_vcpu_op(VCPUOP_initialise, cpu, &ctxt))
-@@ -249,9 +249,6 @@ void __init smp_prepare_cpus(unsigned in
+@@ -253,9 +253,6 @@ void __init smp_prepare_cpus(unsigned in
if (IS_ERR(idle))
panic("failed fork for CPU %d", cpu);
@@ -17733,7 +17733,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
gdt_addr = get_cpu_gdt_table(cpu);
make_page_readonly(gdt_addr, XENFEAT_writable_descriptor_tables);
-@@ -262,12 +259,12 @@ void __init smp_prepare_cpus(unsigned in
+@@ -266,12 +263,12 @@ void __init smp_prepare_cpus(unsigned in
cpu_data(cpu).cpu_index = cpu;
#ifdef __x86_64__
@@ -17750,7 +17750,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
irq_ctx_init(cpu);
-@@ -291,10 +288,7 @@ void __init smp_prepare_cpus(unsigned in
+@@ -295,10 +292,7 @@ void __init smp_prepare_cpus(unsigned in
void __init smp_prepare_boot_cpu(void)
{
@@ -18038,7 +18038,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
break;
default:
xenbus_dev_fatal(dev, err, "invalid usb-ver");
---- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:48:47.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:04:52.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_probe.c 2011-06-10 12:04:05.000000000 +0200
@@ -231,7 +231,7 @@ static struct xen_bus_type xenbus_fronte
},
@@ -18049,7 +18049,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
},
#endif
};
---- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-02-01 14:42:26.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:04:54.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2011-02-01 14:44:12.000000000 +0100
@@ -129,7 +129,7 @@ static struct xen_bus_type xenbus_backen
.dev_attrs = xenbus_backend_attrs,
@@ -18060,7 +18060,7 @@ Automatically created from "patches.kernel.org/patch-2.6.30" by xen-port-patches
},
};
---- head.orig/kernel/sched/core.c 2012-03-12 12:42:37.000000000 +0100
+--- head.orig/kernel/sched/core.c 2012-03-22 15:48:25.000000000 +0100
+++ head/kernel/sched/core.c 2012-03-12 13:49:15.000000000 +0100
@@ -3247,6 +3247,11 @@ asmlinkage void __sched schedule(void)
EXPORT_SYMBOL(schedule);
diff --git a/patches.xen/xen3-patch-2.6.31 b/patches.xen/xen3-patch-2.6.31
index beb915c39b..c382df864b 100644
--- a/patches.xen/xen3-patch-2.6.31
+++ b/patches.xen/xen3-patch-2.6.31
@@ -71,7 +71,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
#endif
#endif
---- head.orig/arch/x86/include/asm/required-features.h 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/arch/x86/include/asm/required-features.h 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/include/asm/required-features.h 2011-04-13 13:55:08.000000000 +0200
@@ -48,7 +48,7 @@
#endif
@@ -3002,7 +3002,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
#include <asm/segment.h>
#include <asm/page.h>
#include <asm/msr.h>
---- head.orig/arch/x86/kernel/init_task.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/arch/x86/kernel/init_task.c 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/kernel/init_task.c 2011-04-13 13:55:08.000000000 +0200
@@ -31,6 +31,7 @@ union thread_union init_thread_union __i
struct task_struct init_task = INIT_TASK(init_task);
@@ -4933,7 +4933,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
if (pgd == NULL)
goto out;
---- head.orig/arch/x86/pci/i386.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/arch/x86/pci/i386.c 2012-03-22 15:48:25.000000000 +0100
+++ head/arch/x86/pci/i386.c 2011-04-13 13:55:08.000000000 +0200
@@ -240,12 +240,14 @@ void __init pcibios_resource_survey(void
pcibios_allocate_resources(1);
@@ -5027,7 +5027,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
return new;
}
---- head.orig/drivers/edac/Kconfig 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/drivers/edac/Kconfig 2012-03-22 15:48:25.000000000 +0100
+++ head/drivers/edac/Kconfig 2011-11-17 11:40:04.000000000 +0100
@@ -74,6 +74,7 @@ config EDAC_MM_EDAC
config EDAC_AMD64
@@ -5037,7 +5037,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
help
Support for error detection and correction of DRAM ECC errors on
the AMD64 families of memory controllers (K8 and F10h)
---- head.orig/drivers/gpu/drm/ttm/ttm_bo.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/drivers/gpu/drm/ttm/ttm_bo.c 2012-03-22 15:48:25.000000000 +0100
+++ head/drivers/gpu/drm/ttm/ttm_bo.c 2012-02-08 12:13:44.000000000 +0100
@@ -1475,6 +1475,14 @@ int ttm_bo_global_init(struct drm_global
ret = -ENOMEM;
@@ -5054,7 +5054,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
INIT_LIST_HEAD(&glob->swap_lru);
INIT_LIST_HEAD(&glob->device_list);
---- head.orig/drivers/gpu/drm/ttm/ttm_bo_vm.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/drivers/gpu/drm/ttm/ttm_bo_vm.c 2012-03-22 15:48:25.000000000 +0100
+++ head/drivers/gpu/drm/ttm/ttm_bo_vm.c 2011-04-13 13:55:08.000000000 +0200
@@ -169,7 +169,13 @@ static int ttm_bo_vm_fault(struct vm_are
if (bo->mem.bus.is_iomem) {
@@ -5325,8 +5325,8 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
}
int vbd_create(blkif_t *blkif, blkif_vdev_t handle, unsigned major,
---- head.orig/drivers/xen/blkback/xenbus.c 2012-03-12 13:40:10.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2011-06-10 12:04:24.000000000 +0200
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 13:44:27.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:09:45.000000000 +0100
@@ -108,7 +108,7 @@ static void update_blkif_status(blkif_t
if (!get_device(_dev)) \
return ret; \
@@ -5354,7 +5354,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
return 0;
}
-@@ -229,7 +229,7 @@ static int blkback_probe(struct xenbus_d
+@@ -226,7 +226,7 @@ static int blkback_probe(struct xenbus_d
return -ENOMEM;
}
be->dev = dev;
@@ -5363,7 +5363,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
be->blkif = blkif_alloc(dev->otherend_id);
if (IS_ERR(be->blkif)) {
-@@ -351,7 +351,7 @@ static void backend_changed(struct xenbu
+@@ -348,7 +348,7 @@ static void backend_changed(struct xenbu
static void frontend_changed(struct xenbus_device *dev,
enum xenbus_state frontend_state)
{
@@ -5856,9 +5856,9 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
err = class_create_file(cls, &class_attr_verbosity);
if (!err) {
err = class_create_file(cls, &class_attr_devices);
---- head.orig/drivers/xen/console/console.c 2011-02-01 14:38:38.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-02-01 14:50:44.000000000 +0100
-@@ -46,7 +46,6 @@
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:04:26.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:09:37.000000000 +0100
+@@ -44,7 +44,6 @@
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/console.h>
@@ -5866,7 +5866,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
#include <linux/sysrq.h>
#include <linux/screen_info.h>
#include <linux/vt.h>
-@@ -236,7 +235,7 @@ static int __init xen_console_init(void)
+@@ -228,7 +227,7 @@ static int __init xen_console_init(void)
goto out;
}
@@ -5875,7 +5875,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
register_console(&kcons_info);
-@@ -632,8 +631,8 @@ static void xencons_close(struct tty_str
+@@ -624,8 +623,8 @@ static void xencons_close(struct tty_str
tty->closing = 1;
tty_wait_until_sent(tty, 0);
tty_driver_flush_buffer(tty);
@@ -6129,8 +6129,8 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
eoi_gmfn.gmfn = virt_to_machine(pirq_needs_eoi) >> PAGE_SHIFT;
if (HYPERVISOR_physdev_op(PHYSDEVOP_pirq_eoi_gmfn, &eoi_gmfn) == 0)
pirq_eoi_does_unmask = true;
---- head.orig/drivers/xen/core/smpboot.c 2012-02-02 13:49:15.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 14:59:07.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:21:28.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:21:46.000000000 +0100
@@ -38,9 +38,11 @@ EXPORT_PER_CPU_SYMBOL(cpu_info);
static DEFINE_PER_CPU(int, resched_irq);
static DEFINE_PER_CPU(int, callfunc_irq);
@@ -6179,15 +6179,15 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
xen_spinlock_cleanup(cpu);
return rc;
}
-@@ -136,6 +151,7 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -135,6 +150,7 @@ static void __cpuinit xen_smp_intr_exit(
unbind_from_irqhandler(per_cpu(resched_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(call1func_irq, cpu), NULL);
+ unbind_from_irqhandler(per_cpu(reboot_irq, cpu), NULL);
xen_spinlock_cleanup(cpu);
}
- #endif
---- head.orig/drivers/xen/evtchn.c 2012-03-12 15:22:54.000000000 +0100
+
+--- head.orig/drivers/xen/evtchn.c 2012-03-22 15:48:25.000000000 +0100
+++ head/drivers/xen/evtchn.c 2011-04-13 13:55:08.000000000 +0200
@@ -48,10 +48,17 @@
#include <linux/mutex.h>
@@ -6833,7 +6833,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
netfront_accel_vnic *vnic = (netfront_accel_vnic *)np->accel_priv;
DPRINTK("%s %s\n", __FUNCTION__, dev->nodename);
---- head.orig/drivers/xen/sys-hypervisor.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/drivers/xen/sys-hypervisor.c 2012-03-22 15:48:25.000000000 +0100
+++ head/drivers/xen/sys-hypervisor.c 2012-02-17 14:32:15.000000000 +0100
@@ -12,14 +12,20 @@
#include <linux/module.h>
@@ -7221,7 +7221,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
+}
+EXPORT_SYMBOL_GPL(xen_class_device_create);
--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2011-06-10 12:04:05.000000000 +0200
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:49:46.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:09:32.000000000 +0100
@@ -92,6 +92,11 @@ static int xenbus_probe_frontend(const c
static void xenbus_dev_shutdown(struct device *_dev);
@@ -7255,19 +7255,21 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
static void frontend_changed(struct xenbus_watch *watch,
const char **vec, unsigned int len)
-@@ -771,7 +783,11 @@ static struct xenbus_watch fe_watch = {
+@@ -771,8 +783,11 @@ static struct xenbus_watch fe_watch = {
.callback = frontend_changed,
};
+-#if defined(CONFIG_PM_SLEEP) || defined(MODULE)
+-static int suspend_dev(struct device *dev, void *data)
+#if !defined(CONFIG_XEN) && !defined(MODULE)
+static int xenbus_dev_suspend(struct device *dev, pm_message_t state)
+#else
- static int suspend_dev(struct device *dev, void *data)
++static int __maybe_unused suspend_dev(struct device *dev, void *data)
+#endif
{
int err = 0;
struct xenbus_driver *drv;
-@@ -784,13 +800,18 @@ static int suspend_dev(struct device *de
+@@ -785,14 +800,19 @@ static int suspend_dev(struct device *de
drv = to_xenbus_driver(dev->driver);
xdev = container_of(dev, struct xenbus_device, dev);
if (drv->suspend)
@@ -7282,41 +7284,36 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
return 0;
}
+-static int suspend_cancel_dev(struct device *dev, void *data)
+#if defined(CONFIG_XEN) || defined(MODULE)
- static int suspend_cancel_dev(struct device *dev, void *data)
++static int __maybe_unused suspend_cancel_dev(struct device *dev, void *data)
{
int err = 0;
-@@ -810,8 +831,13 @@ static int suspend_cancel_dev(struct dev
+ struct xenbus_driver *drv;
+@@ -811,8 +831,13 @@ static int suspend_cancel_dev(struct dev
dev_name(dev), err);
return 0;
}
+#endif
+-static int resume_dev(struct device *dev, void *data)
+#if !defined(CONFIG_XEN) && !defined(MODULE)
+static int xenbus_dev_resume(struct device *dev)
+#else
- static int resume_dev(struct device *dev, void *data)
++static int __maybe_unused resume_dev(struct device *dev, void *data)
+#endif
{
int err;
struct xenbus_driver *drv;
-@@ -853,6 +879,7 @@ static int resume_dev(struct device *dev
+@@ -854,6 +879,7 @@ static int resume_dev(struct device *dev
return 0;
}
-+#if defined(CONFIG_XEN) || defined(MODULE)
++#if (defined(CONFIG_XEN) && defined(CONFIG_PM_SLEEP)) || defined(MODULE)
void xenbus_suspend(void)
{
DPRINTK("");
-@@ -879,6 +906,7 @@ void xenbus_suspend_cancel(void)
- bus_for_each_dev(&xenbus_frontend.bus, NULL, NULL, suspend_cancel_dev);
- xenbus_backend_resume(suspend_cancel_dev);
- }
-+#endif
-
- /* A flag to determine if xenstored is 'ready' (i.e. has started) */
- atomic_t xenbus_xsd_state = ATOMIC_INIT(XENBUS_XSD_UNCOMMITTED);
-@@ -1113,13 +1141,6 @@ static int xsd_port_read(char *page, cha
+@@ -1115,13 +1141,6 @@ static int xsd_port_read(char *page, cha
#endif
#ifdef CONFIG_XEN_XENBUS_DEV
@@ -7330,7 +7327,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
int xenbus_conn(domid_t remote_dom, grant_ref_t *grant_ref,
evtchn_port_t *local_port)
{
-@@ -1132,7 +1153,7 @@ int xenbus_conn(domid_t remote_dom, gran
+@@ -1134,7 +1153,7 @@ int xenbus_conn(domid_t remote_dom, gran
remove_xen_proc_entry("xsd_kva");
remove_xen_proc_entry("xsd_port");
@@ -7339,7 +7336,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
if (rc != 0)
goto fail0;
-@@ -1158,7 +1179,7 @@ int xenbus_conn(domid_t remote_dom, gran
+@@ -1160,7 +1179,7 @@ int xenbus_conn(domid_t remote_dom, gran
return 0;
fail1:
@@ -7348,9 +7345,9 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
if (rc2 != 0)
pr_warning("XENBUS: Error freeing xenstore event channel:"
" %d\n", rc2);
---- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:14:12.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:15:54.000000000 +0100
-@@ -733,6 +733,10 @@ void xs_resume(void)
+--- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:04:55.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:09:34.000000000 +0100
+@@ -736,6 +736,10 @@ void xs_resume(void)
struct xenbus_watch *watch;
char token[sizeof(watch) * 2 + 1];
@@ -7658,7 +7655,7 @@ Automatically created from "patches.kernel.org/patch-2.6.31" by xen-port-patches
}
void
---- head.orig/mm/init-mm.c 2012-03-12 15:22:54.000000000 +0100
+--- head.orig/mm/init-mm.c 2012-03-22 15:48:25.000000000 +0100
+++ head/mm/init-mm.c 2011-04-13 13:55:08.000000000 +0200
@@ -13,6 +13,10 @@
#define INIT_MM_CONTEXT(name)
diff --git a/patches.xen/xen3-patch-2.6.35 b/patches.xen/xen3-patch-2.6.35
index d35fd06582..f6c2bf3332 100644
--- a/patches.xen/xen3-patch-2.6.35
+++ b/patches.xen/xen3-patch-2.6.35
@@ -1858,7 +1858,7 @@ Automatically created from "patches.kernel.org/patch-2.6.35" by xen-port-patches
}
static void *memtype_seq_start(struct seq_file *seq, loff_t *pos)
---- head.orig/arch/x86/mm/pat_internal.h 2012-02-29 13:55:12.000000000 +0100
+--- head.orig/arch/x86/mm/pat_internal.h 2012-03-22 13:24:34.000000000 +0100
+++ head/arch/x86/mm/pat_internal.h 2011-04-13 14:02:46.000000000 +0200
@@ -21,6 +21,10 @@ static inline char *cattr_name(unsigned
case _PAGE_CACHE_UC_MINUS: return "uncached-minus";
@@ -1950,7 +1950,7 @@ Automatically created from "patches.kernel.org/patch-2.6.35" by xen-port-patches
if (processor_pm_external())
processor_notify_external(pr,
---- head.orig/drivers/edac/i7core_edac.c 2012-02-29 13:55:12.000000000 +0100
+--- head.orig/drivers/edac/i7core_edac.c 2012-03-22 13:24:34.000000000 +0100
+++ head/drivers/edac/i7core_edac.c 2011-11-17 13:11:45.000000000 +0100
@@ -1932,7 +1932,7 @@ static int i7core_mce_check_error(struct
if (mce->bank != 8)
@@ -1961,7 +1961,7 @@ Automatically created from "patches.kernel.org/patch-2.6.35" by xen-port-patches
/* Only handle if it is the right mc controller */
if (mce->socketid != pvt->i7core_dev->socket)
return NOTIFY_DONE;
---- head.orig/drivers/gpu/drm/ttm/ttm_page_alloc.c 2012-02-29 13:55:12.000000000 +0100
+--- head.orig/drivers/gpu/drm/ttm/ttm_page_alloc.c 2012-03-22 13:24:34.000000000 +0100
+++ head/drivers/gpu/drm/ttm/ttm_page_alloc.c 2012-02-29 10:40:01.000000000 +0100
@@ -500,6 +500,19 @@ static int ttm_alloc_new_pages(struct li
for (i = 0, cpages = 0; i < count; ++i) {
@@ -2283,9 +2283,9 @@ Automatically created from "patches.kernel.org/patch-2.6.35" by xen-port-patches
module_exit(blktap_exit);
MODULE_LICENSE("Dual BSD/GPL");
+MODULE_ALIAS("devname:" BLKTAP2_DEV_DIR "control");
---- head.orig/drivers/xen/console/console.c 2011-02-01 14:50:44.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-02-01 15:03:10.000000000 +0100
-@@ -365,27 +365,23 @@ void xencons_rx(char *buf, unsigned len)
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:09:37.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:10:05.000000000 +0100
+@@ -357,27 +357,23 @@ void xencons_rx(char *buf, unsigned len)
for (i = 0; i < len; i++) {
#ifdef CONFIG_MAGIC_SYSRQ
diff --git a/patches.xen/xen3-patch-2.6.36 b/patches.xen/xen3-patch-2.6.36
index b0e78ec96f..3cea5daac6 100644
--- a/patches.xen/xen3-patch-2.6.36
+++ b/patches.xen/xen3-patch-2.6.36
@@ -442,7 +442,7 @@ Automatically created from "patches.kernel.org/patch-2.6.36" by xen-port-patches
/*
* Initialize MSR_IA32_ENERGY_PERF_BIAS if BIOS did not.
---- head.orig/arch/x86/kernel/cpu/scattered.c 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/arch/x86/kernel/cpu/scattered.c 2012-03-22 13:24:34.000000000 +0100
+++ head/arch/x86/kernel/cpu/scattered.c 2012-02-16 13:40:13.000000000 +0100
@@ -41,6 +41,7 @@ void __cpuinit init_scattered_cpuid_feat
{ X86_FEATURE_XSAVEOPT, CR_EAX, 0, 0x0000000d, 1 },
@@ -1077,7 +1077,7 @@ Automatically created from "patches.kernel.org/patch-2.6.36" by xen-port-patches
config XEN_MAX_DOMAIN_MEMORY
int
---- head.orig/arch/x86/xen/enlighten.c 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/arch/x86/xen/enlighten.c 2012-03-22 13:24:34.000000000 +0100
+++ head/arch/x86/xen/enlighten.c 2011-02-01 15:04:27.000000000 +0100
@@ -115,8 +115,8 @@ static int have_vcpu_info_placement = 1;
static void clamp_max_cpus(void)
@@ -1462,9 +1462,9 @@ Automatically created from "patches.kernel.org/patch-2.6.36" by xen-port-patches
.mmap = blktap_ring_mmap,
.poll = blktap_ring_poll,
};
---- head.orig/drivers/xen/console/console.c 2011-02-01 15:03:10.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-11-03 12:47:31.000000000 +0100
-@@ -379,7 +379,7 @@ void xencons_rx(char *buf, unsigned len)
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:10:05.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:10:10.000000000 +0100
+@@ -371,7 +371,7 @@ void xencons_rx(char *buf, unsigned len)
sysrq_requested = 0;
if (time_before(jiffies, sysrq_timeout)) {
spin_unlock_irqrestore(&xencons_lock, flags);
@@ -1473,7 +1473,7 @@ Automatically created from "patches.kernel.org/patch-2.6.36" by xen-port-patches
spin_lock_irqsave(&xencons_lock, flags);
continue;
}
-@@ -613,7 +613,14 @@ static void xencons_close(struct tty_str
+@@ -605,7 +605,14 @@ static void xencons_close(struct tty_str
if (DUMMY_TTY(tty))
return;
@@ -1535,8 +1535,8 @@ Automatically created from "patches.kernel.org/patch-2.6.36" by xen-port-patches
+ IN_DEV_CONF_SET(in_dev, ARP_NOTIFY, 1);
+ rtnl_unlock();
+ if (!in_dev)
-+ printk(KERN_WARNING "Cannot enable ARP notification on %s\n",
-+ info->xbdev->nodename);
++ pr_warn("Cannot enable ARP notification on %s\n",
++ info->xbdev->nodename);
+#endif
+}
+
diff --git a/patches.xen/xen3-patch-2.6.37 b/patches.xen/xen3-patch-2.6.37
index fbff8275e0..207cfbc0f4 100644
--- a/patches.xen/xen3-patch-2.6.37
+++ b/patches.xen/xen3-patch-2.6.37
@@ -92,7 +92,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
#endif
#endif
---- head.orig/arch/x86/include/asm/io.h 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/arch/x86/include/asm/io.h 2012-03-22 15:48:23.000000000 +0100
+++ head/arch/x86/include/asm/io.h 2011-09-07 16:07:28.000000000 +0200
@@ -331,7 +331,7 @@ extern void early_iounmap(void __iomem *
extern void fixup_early_ioremap(void);
@@ -3996,7 +3996,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
return 0;
}
---- head.orig/arch/x86/kernel/resource.c 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/arch/x86/kernel/resource.c 2012-03-22 15:48:23.000000000 +0100
+++ head/arch/x86/kernel/resource.c 2011-09-23 14:48:43.000000000 +0200
@@ -1,3 +1,7 @@
+#ifdef CONFIG_XEN
@@ -5958,7 +5958,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
return;
--- head.orig/drivers/xen/blkback/common.h 2011-11-28 09:47:49.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2011-11-28 09:52:10.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-19 11:42:08.000000000 +0100
@@ -47,6 +47,7 @@ struct vbd {
blkif_vdev_t handle; /* what the domain refers to this vbd as */
unsigned char readonly; /* Non-zero -> read-only */
@@ -5987,10 +5987,10 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
@@ -139,5 +144,7 @@ int blkif_schedule(void *arg);
- int blkback_barrier(struct xenbus_transaction xbt,
- struct backend_info *be, int state);
-+int blkback_flush_diskcache(struct xenbus_transaction,
-+ struct backend_info *, int state);
+ void blkback_barrier(struct xenbus_transaction, struct backend_info *,
+ int state);
++void blkback_flush_diskcache(struct xenbus_transaction,
++ struct backend_info *, int state);
#endif /* __BLKIF__BACKEND__COMMON_H__ */
--- head.orig/drivers/xen/blkback/interface.c 2011-04-11 14:51:52.000000000 +0200
@@ -6025,8 +6025,8 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
DPRINTK("Successful creation of handle=%04x (dom=%u)\n",
handle, blkif->domid);
return 0;
---- head.orig/drivers/xen/blkback/xenbus.c 2011-06-10 12:04:24.000000000 +0200
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 13:52:34.000000000 +0100
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 14:09:45.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-19 11:42:06.000000000 +0100
@@ -119,6 +119,7 @@ VBD_SHOW(oo_req, "%d\n", be->blkif->st_
VBD_SHOW(rd_req, "%d\n", be->blkif->st_rd_req);
VBD_SHOW(wr_req, "%d\n", be->blkif->st_wr_req);
@@ -6043,40 +6043,34 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
&dev_attr_rd_sect.attr,
&dev_attr_wr_sect.attr,
NULL
-@@ -212,6 +214,20 @@ int blkback_barrier(struct xenbus_transa
- return err;
+@@ -209,6 +211,17 @@ void blkback_barrier(struct xenbus_trans
+ xenbus_dev_error(dev, err, "writing feature-barrier");
}
-+int blkback_flush_diskcache(struct xenbus_transaction xbt,
-+ struct backend_info *be, int state)
++void blkback_flush_diskcache(struct xenbus_transaction xbt,
++ struct backend_info *be, int state)
+{
+ struct xenbus_device *dev = be->dev;
-+ int err;
++ int err = xenbus_printf(xbt, dev->nodename, "feature-flush-cache",
++ "%d", state);
+
-+ err = xenbus_printf(xbt, dev->nodename, "feature-flush-cache",
-+ "%d", state);
+ if (err)
-+ xenbus_dev_fatal(dev, err, "writing feature-flush-cache");
-+
-+ return err;
++ xenbus_dev_error(dev, err, "writing feature-flush-cache");
+}
+
/**
* Entry point to this code when a new device is created. Allocate the basic
* structures, and watch the store waiting for the hotplug scripts to tell us
-@@ -428,7 +444,11 @@ again:
+@@ -425,7 +438,8 @@ again:
return;
}
-- err = blkback_barrier(xbt, be, 1);
-+ err = blkback_flush_diskcache(xbt, be, be->blkif->vbd.flush_support);
-+ if (err)
-+ goto abort;
-+
-+ err = blkback_barrier(xbt, be, be->blkif->vbd.flush_support);
- if (err)
- goto abort;
+- blkback_barrier(xbt, be, 1);
++ blkback_flush_diskcache(xbt, be, be->blkif->vbd.flush_support);
++ blkback_barrier(xbt, be, be->blkif->vbd.flush_support);
+ err = xenbus_printf(xbt, dev->nodename, "sectors", "%llu",
+ vbd_size(&be->blkif->vbd));
--- head.orig/drivers/xen/blkfront/blkfront.c 2012-03-12 13:52:07.000000000 +0100
+++ head/drivers/xen/blkfront/blkfront.c 2012-03-12 13:52:43.000000000 +0100
@@ -335,7 +335,7 @@ static void connect(struct blkfront_info
@@ -7103,8 +7097,8 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
}
void __init xen_init_IRQ(void)
---- head.orig/drivers/xen/core/smpboot.c 2012-01-20 14:59:07.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-02-02 13:50:19.000000000 +0100
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:21:46.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:22:20.000000000 +0100
@@ -32,7 +32,7 @@ extern void smp_trap_init(trap_info_t *)
cpumask_var_t vcpu_initialized_mask;
@@ -7167,7 +7161,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
xen_spinlock_cleanup(cpu);
return rc;
}
-@@ -152,6 +177,9 @@ static void __cpuinit xen_smp_intr_exit(
+@@ -151,6 +176,9 @@ static void __cpuinit xen_smp_intr_exit(
unbind_from_irqhandler(per_cpu(callfunc_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(call1func_irq, cpu), NULL);
unbind_from_irqhandler(per_cpu(reboot_irq, cpu), NULL);
@@ -7176,7 +7170,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
+#endif
xen_spinlock_cleanup(cpu);
}
- #endif
+
--- head.orig/drivers/xen/core/spinlock.c 2012-01-31 18:14:12.000000000 +0100
+++ head/drivers/xen/core/spinlock.c 2012-02-07 11:59:01.000000000 +0100
@@ -24,7 +24,7 @@ struct spinning {
@@ -7301,7 +7295,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
/* Allocate space for the per-instance private data. */
private_data = kmalloc(sizeof(*private_data), GFP_KERNEL);
if (!private_data)
---- head.orig/drivers/xen/pci.c 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/drivers/xen/pci.c 2012-03-22 15:48:23.000000000 +0100
+++ head/drivers/xen/pci.c 2011-11-17 13:22:46.000000000 +0100
@@ -23,11 +23,20 @@
#include <xen/interface/physdev.h>
@@ -7549,7 +7543,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
typedef struct xen_memory_map xen_memory_map_t;
DEFINE_XEN_GUEST_HANDLE(xen_memory_map_t);
---- head.orig/include/xen/privcmd.h 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/include/xen/privcmd.h 2012-03-22 15:48:23.000000000 +0100
+++ head/include/xen/privcmd.h 2011-04-13 14:05:37.000000000 +0200
@@ -1,77 +1,3 @@
-/******************************************************************************
@@ -7642,7 +7636,7 @@ Automatically created from "patches.kernel.org/patch-2.6.37" by xen-port-patches
typedef struct privcmd_hypercall
{
---- head.orig/kernel/power/Kconfig 2012-03-12 15:22:48.000000000 +0100
+--- head.orig/kernel/power/Kconfig 2012-03-22 15:48:23.000000000 +0100
+++ head/kernel/power/Kconfig 2011-11-17 13:22:58.000000000 +0100
@@ -139,7 +139,7 @@ config PM_ADVANCED_DEBUG
diff --git a/patches.xen/xen3-patch-2.6.38 b/patches.xen/xen3-patch-2.6.38
index 129896774f..93959dc228 100644
--- a/patches.xen/xen3-patch-2.6.38
+++ b/patches.xen/xen3-patch-2.6.38
@@ -41,7 +41,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
extern void setup_boot_APIC_clock(void);
extern void setup_secondary_APIC_clock(void);
extern int APIC_init_uniprocessor(void);
---- head.orig/arch/x86/include/asm/xen/hypervisor.h 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/arch/x86/include/asm/xen/hypervisor.h 2012-03-22 15:48:23.000000000 +0100
+++ head/arch/x86/include/asm/xen/hypervisor.h 2011-04-13 14:08:57.000000000 +0200
@@ -58,7 +58,7 @@ static inline uint32_t xen_cpuid_base(vo
return 0;
@@ -2250,7 +2250,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
}
}
mutex_unlock(&pdev_list_mutex);
---- head.orig/drivers/scsi/arcmsr/arcmsr.h 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/scsi/arcmsr/arcmsr.h 2012-03-22 15:48:23.000000000 +0100
+++ head/drivers/scsi/arcmsr/arcmsr.h 2011-04-13 14:08:57.000000000 +0200
@@ -46,7 +46,7 @@
struct device_attribute;
@@ -2302,8 +2302,8 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
obj-$(CONFIG_XEN_BLKDEV_BACKEND) += blkback/
obj-$(CONFIG_XEN_BLKDEV_TAP) += blktap/
---- head.orig/drivers/xen/blkback/common.h 2011-11-28 09:52:10.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2012-02-24 15:16:46.000000000 +0100
+--- head.orig/drivers/xen/blkback/common.h 2012-03-19 11:42:08.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-14 11:23:46.000000000 +0100
@@ -45,7 +45,7 @@
struct vbd {
@@ -2388,9 +2388,9 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
goto out;
if (likely(req->nr_sects)) {
---- head.orig/drivers/xen/blkback/xenbus.c 2012-03-12 13:52:34.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 13:53:08.000000000 +0100
-@@ -340,7 +340,10 @@ static void backend_changed(struct xenbu
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-19 11:42:06.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:19:12.000000000 +0100
+@@ -334,7 +334,10 @@ static void backend_changed(struct xenbu
be->minor = minor;
err = vbd_create(be->blkif, handle, major, minor,
@@ -2402,7 +2402,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
if (err) {
be->major = be->minor = 0;
xenbus_dev_fatal(dev, err, "creating vbd structure");
-@@ -462,7 +465,7 @@ again:
+@@ -451,7 +454,7 @@ again:
/* FIXME: use a typename instead */
err = xenbus_printf(xbt, dev->nodename, "info", "%u",
@@ -2512,17 +2512,17 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
}
spin_unlock(&irq_mapping_update_lock);
---- head.orig/drivers/xen/core/smpboot.c 2012-02-02 13:50:19.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-01-20 15:06:09.000000000 +0100
-@@ -187,7 +187,7 @@ static void __cpuinit xen_smp_intr_exit(
- static void __cpuinit cpu_bringup(void)
- {
+--- head.orig/drivers/xen/core/smpboot.c 2012-03-22 16:22:20.000000000 +0100
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:22:34.000000000 +0100
+@@ -187,7 +187,7 @@ static void __cpuinit cpu_bringup(void)
+ unsigned int cpu;
+
cpu_init();
- identify_secondary_cpu(&current_cpu_data);
+ identify_secondary_cpu(__this_cpu_ptr(&cpu_info));
touch_softlockup_watchdog();
preempt_disable();
- local_irq_enable();
+ cpu = smp_processor_id();
--- head.orig/drivers/xen/core/spinlock.c 2012-02-07 11:59:01.000000000 +0100
+++ head/drivers/xen/core/spinlock.c 2012-01-31 18:18:39.000000000 +0100
@@ -190,7 +190,7 @@ void xen_spin_irq_exit(void)
@@ -2626,7 +2626,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+obj-$(CONFIG_PARAVIRT_XEN_BACKEND) += xenbus_probe_backend.o
+obj-$(CONFIG_XEN_XENBUS_FRONTEND) += xenbus_probe_frontend.o
--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:52:29.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:53:00.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:19:07.000000000 +0100
@@ -68,8 +68,6 @@
#include <xen/events.h>
#include <xen/page.h>
@@ -3031,7 +3031,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
-#if !defined(CONFIG_XEN) && !defined(MODULE)
-static int xenbus_dev_suspend(struct device *dev, pm_message_t state)
-#else
- static int suspend_dev(struct device *dev, void *data)
+ static int __maybe_unused suspend_dev(struct device *dev, void *data)
+#else
+int xenbus_dev_suspend(struct device *dev, pm_message_t state)
#endif
@@ -3052,15 +3052,15 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
if (drv->suspend)
#if !defined(CONFIG_XEN) && !defined(MODULE)
err = drv->suspend(xdev, state);
-@@ -820,6 +833,7 @@ static int suspend_dev(struct device *de
+@@ -820,6 +833,7 @@ static int __maybe_unused suspend_dev(st
dev_name(dev), err);
return 0;
}
+PARAVIRT_EXPORT_SYMBOL(xenbus_dev_suspend);
#if defined(CONFIG_XEN) || defined(MODULE)
- static int suspend_cancel_dev(struct device *dev, void *data)
-@@ -841,26 +855,22 @@ static int suspend_cancel_dev(struct dev
+ static int __maybe_unused suspend_cancel_dev(struct device *dev, void *data)
+@@ -841,26 +855,22 @@ static int __maybe_unused suspend_cancel
dev_name(dev), err);
return 0;
}
@@ -3069,7 +3069,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
-#if !defined(CONFIG_XEN) && !defined(MODULE)
-static int xenbus_dev_resume(struct device *dev)
-#else
- static int resume_dev(struct device *dev, void *data)
+ static int __maybe_unused resume_dev(struct device *dev, void *data)
+#else
+int xenbus_dev_resume(struct device *dev)
#endif
@@ -3092,13 +3092,13 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
err = talk_to_otherend(xdev);
if (err) {
pr_warning("xenbus: resume (talk_to_otherend) %s failed: %i\n",
-@@ -888,6 +898,7 @@ static int resume_dev(struct device *dev
+@@ -888,6 +898,7 @@ static int __maybe_unused resume_dev(str
return 0;
}
+PARAVIRT_EXPORT_SYMBOL(xenbus_dev_resume);
- #if defined(CONFIG_XEN) || defined(MODULE)
+ #if (defined(CONFIG_XEN) && defined(CONFIG_PM_SLEEP)) || defined(MODULE)
void xenbus_suspend(void)
@@ -1077,17 +1088,19 @@ void xenbus_probe(struct work_struct *un
xenbus_reset_state();
@@ -3210,7 +3210,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+
#endif
--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-02-01 15:03:03.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2011-12-21 11:25:22.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:19:05.000000000 +0100
@@ -33,7 +33,7 @@
#define DPRINTK(fmt, args...) \
@@ -3228,12 +3228,12 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
#include <asm/page.h>
-#include <asm/maddr.h>
#include <asm/pgtable.h>
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+#include <asm/xen/hypervisor.h>
+#endif
#include <asm/hypervisor.h>
#include <xen/xenbus.h>
-+#if defined(CONFIG_XEN) || defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifdef CONFIG_XEN
#include <xen/xen_proc.h>
#include <xen/evtchn.h>
+#endif
@@ -3377,7 +3377,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
return err;
}
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+static void frontend_changed(struct xenbus_watch *watch,
+ const char **vec, unsigned int len)
+{
@@ -3394,7 +3394,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+ .levels = 3, /* backend/type/<frontend>/<id> */
+ .get_bus_id = backend_bus_id,
+ .probe = xenbus_probe_backend,
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+ .otherend_changed = frontend_changed,
+#else
+ .dev = {
@@ -3408,7 +3408,7 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+ .uevent = xenbus_uevent_backend,
+ .probe = xenbus_dev_probe,
+ .remove = xenbus_dev_remove,
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifdef CONFIG_XEN
+ .shutdown = xenbus_dev_shutdown,
+#endif
+ .dev_attrs = xenbus_backend_dev_attrs,
@@ -3418,16 +3418,17 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
static void backend_changed(struct xenbus_watch *watch,
const char **vec, unsigned int len)
{
-@@ -234,6 +240,35 @@ static struct xenbus_watch be_watch = {
+@@ -234,7 +240,34 @@ static struct xenbus_watch be_watch = {
.callback = backend_changed,
};
+-#ifdef CONFIG_PM_SLEEP
+static int read_frontend_details(struct xenbus_device *xendev)
+{
+ return xenbus_read_otherend_details(xendev, "frontend-id", "frontend");
+}
+
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+int xenbus_dev_is_online(struct xenbus_device *dev)
+{
+ int rc, val;
@@ -3449,18 +3450,15 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+}
+EXPORT_SYMBOL_GPL(xenbus_register_backend);
+
-+#if defined(CONFIG_XEN) || defined(HAVE_XEN_PLATFORM_COMPAT_H)
-+
++#if defined(CONFIG_XEN) && defined(CONFIG_PM_SLEEP)
void xenbus_backend_suspend(int (*fn)(struct device *, void *))
{
DPRINTK("");
-@@ -248,11 +283,48 @@ void xenbus_backend_resume(int (*fn)(str
- bus_for_each_dev(&xenbus_backend.bus, NULL, NULL, fn);
+@@ -250,12 +283,47 @@ void xenbus_backend_resume(int (*fn)(str
}
+ #endif
-+#endif
-+
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+static int backend_probe_and_watch(struct notifier_block *notifier,
+ unsigned long event,
+ void *data)
@@ -3472,12 +3470,12 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
xenbus_probe_devices(&xenbus_backend);
register_xenbus_watch(&be_watch);
+
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
++#ifndef CONFIG_XEN
+ return NOTIFY_DONE;
+#endif
-+}
-+
-+#if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
+ }
+
++#ifndef CONFIG_XEN
+
+static int __init xenbus_probe_backend_init(void)
+{
@@ -3496,20 +3494,21 @@ Automatically created from "patches.kernel.org/patch-2.6.38" by xen-port-patches
+ register_xenstore_notifier(&xenstore_notifier);
+
+ return 0;
- }
++}
+subsys_initcall(xenbus_probe_backend_init);
+
+#else
-
++
void xenbus_backend_bus_register(void)
{
-@@ -280,3 +352,5 @@ int xenbus_for_each_backend(void *arg, i
+ xenbus_backend.error = bus_register(&xenbus_backend.bus);
+@@ -282,3 +350,5 @@ int xenbus_for_each_backend(void *arg, i
return bus_for_each_dev(&xenbus_backend.bus, NULL, arg, fn);
}
EXPORT_SYMBOL_GPL(xenbus_for_each_backend);
+
+#endif
---- head.orig/include/xen/gntdev.h 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/include/xen/gntdev.h 2012-03-22 15:48:23.000000000 +0100
+++ head/include/xen/gntdev.h 2011-04-13 14:08:57.000000000 +0200
@@ -1,150 +1,3 @@
-/******************************************************************************
diff --git a/patches.xen/xen3-patch-2.6.39 b/patches.xen/xen3-patch-2.6.39
index d96d27c5d5..623e2286ec 100644
--- a/patches.xen/xen3-patch-2.6.39
+++ b/patches.xen/xen3-patch-2.6.39
@@ -91,7 +91,7 @@ Acked-by: jbeulich@novell.com
extern const unsigned char acpi_wakeup_code[];
#define acpi_wakeup_address (__pa(TRAMPOLINE_SYM(acpi_wakeup_code)))
---- head.orig/arch/x86/include/asm/trampoline.h 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/arch/x86/include/asm/trampoline.h 2012-03-22 13:24:33.000000000 +0100
+++ head/arch/x86/include/asm/trampoline.h 2011-04-14 14:59:31.000000000 +0200
@@ -1,4 +1,4 @@
-#ifndef _ASM_X86_TRAMPOLINE_H
@@ -2643,14 +2643,14 @@ Acked-by: jbeulich@novell.com
obj-$(CONFIG_USB_CATC) += usb/
obj-$(CONFIG_USB_KAWETH) += usb/
---- head.orig/drivers/net/xen-netback/Makefile 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/net/xen-netback/Makefile 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/net/xen-netback/Makefile 2011-04-13 14:42:19.000000000 +0200
@@ -1,3 +1,3 @@
-obj-$(CONFIG_XEN_NETDEV_BACKEND) := xen-netback.o
+obj-$(CONFIG_PARAVIRT_XEN_NETDEV_BACKEND) := xen-netback.o
xen-netback-y := netback.o xenbus.o interface.o
---- head.orig/drivers/watchdog/Kconfig 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/watchdog/Kconfig 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/watchdog/Kconfig 2012-02-08 12:54:20.000000000 +0100
@@ -1176,7 +1176,7 @@ config WATCHDOG_RIO
@@ -2661,18 +2661,19 @@ Acked-by: jbeulich@novell.com
help
Say Y here to support the hypervisor watchdog capability provided
by Xen 4.0 and newer. The watchdog timeout period is normally one
---- head.orig/drivers/watchdog/xen_wdt.c 2012-03-12 12:42:36.000000000 +0100
-+++ head/drivers/watchdog/xen_wdt.c 2011-04-14 16:27:37.000000000 +0200
-@@ -1,7 +1,7 @@
+--- head.orig/drivers/watchdog/xen_wdt.c 2012-03-22 13:24:33.000000000 +0100
++++ head/drivers/watchdog/xen_wdt.c 2012-03-16 16:37:39.000000000 +0100
+@@ -1,7 +1,8 @@
/*
* Xen Watchdog Driver
*
- * (c) Copyright 2010 Novell, Inc.
+ * (c) Copyright 2010,2011 Novell, Inc.
++ * (c) Copyright 2011,2012 SuSE
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
-@@ -11,7 +11,7 @@
+@@ -11,7 +12,7 @@
#define DRV_NAME "wdt"
#define DRV_VERSION "0.01"
@@ -2681,7 +2682,7 @@ Acked-by: jbeulich@novell.com
#include <linux/bug.h>
#include <linux/errno.h>
-@@ -27,8 +27,10 @@
+@@ -27,8 +28,10 @@
#include <linux/spinlock.h>
#include <linux/uaccess.h>
#include <linux/watchdog.h>
@@ -2692,17 +2693,30 @@ Acked-by: jbeulich@novell.com
#include <xen/interface/sched.h>
static struct platform_device *platform_device;
-@@ -134,8 +136,7 @@ static int xen_wdt_release(struct inode
+@@ -131,16 +134,17 @@ static int xen_wdt_open(struct inode *in
+
+ static int xen_wdt_release(struct inode *inode, struct file *file)
+ {
++ int err = 0;
++
if (expect_release)
- xen_wdt_stop();
+- xen_wdt_stop();
++ err = xen_wdt_stop();
else {
- printk(KERN_CRIT PFX
- "unexpected close, not stopping watchdog!\n");
+ pr_crit("unexpected close, not stopping watchdog!\n");
xen_wdt_kick();
}
- is_active = false;
-@@ -251,30 +252,27 @@ static int __devinit xen_wdt_probe(struc
+- is_active = false;
++ is_active = err;
+ expect_release = false;
+- return 0;
++ return err;
+ }
+
+ static ssize_t xen_wdt_write(struct file *file, const char __user *data,
+@@ -251,30 +255,27 @@ static int __devinit xen_wdt_probe(struc
case -EINVAL:
if (!timeout) {
timeout = WATCHDOG_TIMEOUT;
@@ -2739,7 +2753,27 @@ Acked-by: jbeulich@novell.com
break;
}
-@@ -323,17 +321,19 @@ static int __init xen_wdt_init_module(vo
+@@ -299,11 +300,18 @@ static void xen_wdt_shutdown(struct plat
+
+ static int xen_wdt_suspend(struct platform_device *dev, pm_message_t state)
+ {
+- return xen_wdt_stop();
++ typeof(wdt.id) id = wdt.id;
++ int rc = xen_wdt_stop();
++
++ wdt.id = id;
++ return rc;
+ }
+
+ static int xen_wdt_resume(struct platform_device *dev)
+ {
++ if (!wdt.id)
++ return 0;
++ wdt.id = 0;
+ return xen_wdt_start();
+ }
+
+@@ -323,17 +331,19 @@ static int __init xen_wdt_init_module(vo
{
int err;
@@ -2761,7 +2795,7 @@ Acked-by: jbeulich@novell.com
if (IS_ERR(platform_device)) {
err = PTR_ERR(platform_device);
platform_driver_unregister(&xen_wdt_driver);
-@@ -346,7 +346,7 @@ static void __exit xen_wdt_cleanup_modul
+@@ -346,7 +356,7 @@ static void __exit xen_wdt_cleanup_modul
{
platform_device_unregister(platform_device);
platform_driver_unregister(&xen_wdt_driver);
@@ -3323,11 +3357,11 @@ Acked-by: jbeulich@novell.com
/* per-port over current reporting and no power switching */
temp = 0x000a;
---- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:53:00.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:53:40.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:19:07.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:22:22.000000000 +0100
@@ -809,7 +809,7 @@ static struct xenbus_watch fe_watch = {
- static int suspend_dev(struct device *dev, void *data)
+ static int __maybe_unused suspend_dev(struct device *dev, void *data)
#else
-int xenbus_dev_suspend(struct device *dev, pm_message_t state)
+int xenbus_dev_suspend(struct device *dev)
@@ -3350,7 +3384,7 @@ Acked-by: jbeulich@novell.com
}
PARAVIRT_EXPORT_SYMBOL(xenbus_dev_resume);
--#if defined(CONFIG_XEN) || defined(MODULE)
+-#if (defined(CONFIG_XEN) && defined(CONFIG_PM_SLEEP)) || defined(MODULE)
+#if !defined(CONFIG_XEN) && !defined(MODULE)
+int xenbus_dev_cancel(struct device *dev)
+{
@@ -3359,7 +3393,7 @@ Acked-by: jbeulich@novell.com
+ return 0;
+}
+PARAVIRT_EXPORT_SYMBOL(xenbus_dev_cancel);
-+#else
++#elif defined(CONFIG_PM_SLEEP) || defined(MODULE)
void xenbus_suspend(void)
{
DPRINTK("");
diff --git a/patches.xen/xen3-patch-3.1 b/patches.xen/xen3-patch-3.1
index 416136e64a..5c02af9875 100644
--- a/patches.xen/xen3-patch-3.1
+++ b/patches.xen/xen3-patch-3.1
@@ -1274,7 +1274,7 @@ Acked-by: jbeulich@suse.com
pte = pfn_pte(phys >> PAGE_SHIFT, flags);
set_pte_vaddr_pud(level3_user_pgt, address, pte);
break;
---- head.orig/arch/x86/vdso/vclock_gettime.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/arch/x86/vdso/vclock_gettime.c 2012-03-22 13:24:33.000000000 +0100
+++ head/arch/x86/vdso/vclock_gettime.c 2011-09-12 13:44:31.000000000 +0200
@@ -25,6 +25,13 @@
@@ -1313,9 +1313,9 @@ Acked-by: jbeulich@suse.com
if (likely(tv != NULL)) {
BUILD_BUG_ON(offsetof(struct timeval, tv_usec) !=
offsetof(struct timespec, tv_nsec) ||
---- head.orig/drivers/gpu/drm/i915/intel_display.c 2012-03-12 12:42:36.000000000 +0100
-+++ head/drivers/gpu/drm/i915/intel_display.c 2012-03-12 13:54:24.000000000 +0100
-@@ -8292,7 +8292,11 @@ void gen6_update_ring_freq(struct drm_i9
+--- head.orig/drivers/gpu/drm/i915/intel_display.c 2012-03-22 13:24:33.000000000 +0100
++++ head/drivers/gpu/drm/i915/intel_display.c 2012-03-22 14:22:54.000000000 +0100
+@@ -8293,7 +8293,11 @@ void gen6_update_ring_freq(struct drm_i9
* over
*/
if (!max_ia_freq)
@@ -1745,7 +1745,7 @@ Acked-by: jbeulich@suse.com
sysfs_remove_group(&pdev->dev.kobj, &via_cputemp_group);
return 0;
}
---- head.orig/drivers/iommu/Kconfig 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/iommu/Kconfig 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/iommu/Kconfig 2011-09-09 17:53:01.000000000 +0200
@@ -4,6 +4,7 @@ config IOMMU_API
@@ -1755,7 +1755,7 @@ Acked-by: jbeulich@suse.com
default y
---help---
Say Y here if you want to compile device drivers for IO Memory
---- head.orig/drivers/virtio/Kconfig 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/virtio/Kconfig 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/virtio/Kconfig 2011-09-09 17:52:44.000000000 +0200
@@ -8,6 +8,7 @@ config VIRTIO_RING
depends on VIRTIO
@@ -2393,7 +2393,7 @@ Acked-by: jbeulich@suse.com
MODULE_DESCRIPTION("Xen USB backend driver (usbback)");
MODULE_LICENSE("Dual BSD/GPL");
+MODULE_ALIAS("xen-backend:vusb");
---- head.orig/drivers/xen/xen-pciback/Makefile 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/Makefile 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/Makefile 2011-09-19 13:15:03.000000000 +0200
@@ -1,7 +1,13 @@
-obj-$(CONFIG_XEN_PCIDEV_BACKEND) += xen-pciback.o
@@ -2414,7 +2414,7 @@ Acked-by: jbeulich@suse.com
+$(pcibk-y)-$(CONFIG_XEN_PCIDEV_BACKEND_PASSTHROUGH) += passthrough.o
+$(pcibk-y)-$(CONFIG_XEN_PCIDEV_BACKEND_SLOT) += slot.o
+$(pcibk-y)-$(CONFIG_XEN_PCIDEV_BACKEND_CONTROLLER) += controller.o
---- head.orig/drivers/xen/xen-pciback/conf_space_capability.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/conf_space_capability.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/conf_space_capability.c 2011-09-16 14:20:03.000000000 +0200
@@ -140,6 +140,21 @@ static int pm_ctrl_write(struct pci_dev
goto out;
@@ -2438,7 +2438,7 @@ Acked-by: jbeulich@suse.com
out:
return err;
}
---- head.orig/drivers/xen/xen-pciback/conf_space_header.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/conf_space_header.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/conf_space_header.c 2011-11-17 13:56:29.000000000 +0100
@@ -39,10 +39,11 @@ static int command_read(struct pci_dev *
@@ -2680,7 +2680,7 @@ Acked-by: jbeulich@suse.com
+ .add = _xen_pcibk_add_pci_dev,
+ .get = _xen_pcibk_get_pci_dev,
+};
---- head.orig/drivers/xen/xen-pciback/pci_stub.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/pci_stub.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/pci_stub.c 2012-02-08 13:03:46.000000000 +0100
@@ -14,9 +14,14 @@
#include <linux/wait.h>
@@ -2832,7 +2832,7 @@ Acked-by: jbeulich@suse.com
if (err)
pcistub_exit();
---- head.orig/drivers/xen/xen-pciback/pciback.h 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/pciback.h 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/pciback.h 2011-11-17 13:56:44.000000000 +0100
@@ -10,12 +10,16 @@
#include <linux/interrupt.h>
@@ -2903,7 +2903,7 @@ Acked-by: jbeulich@suse.com
extern const struct xen_pcibk_backend *xen_pcibk_backend;
static inline int xen_pcibk_add_pci_dev(struct xen_pcibk_device *pdev,
---- head.orig/drivers/xen/xen-pciback/pciback_ops.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/pciback_ops.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/pciback_ops.c 2011-11-17 13:56:47.000000000 +0100
@@ -6,13 +6,18 @@
#include <linux/module.h>
@@ -3221,7 +3221,7 @@ Acked-by: jbeulich@suse.com
+ .add = _xen_pcibk_add_pci_dev,
+ .get = _xen_pcibk_get_pci_dev,
+};
---- head.orig/drivers/xen/xen-pciback/xenbus.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-pciback/xenbus.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-pciback/xenbus.c 2012-02-21 11:40:18.000000000 +0100
@@ -6,30 +6,77 @@
#include <linux/module.h>
@@ -3436,7 +3436,7 @@ Acked-by: jbeulich@suse.com
pr_info(DRV_NAME ": backend is %s\n", xen_pcibk_backend->name);
return xenbus_register_backend(&xen_pcibk_driver);
}
---- head.orig/drivers/xen/xen-selfballoon.c 2012-03-12 12:42:36.000000000 +0100
+--- head.orig/drivers/xen/xen-selfballoon.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/xen/xen-selfballoon.c 2012-02-08 13:03:38.000000000 +0100
@@ -79,6 +79,10 @@
#include <xen/tmem.h>
@@ -3468,8 +3468,8 @@ Acked-by: jbeulich@suse.com
/**
* xenbus_map_ring_valloc
* @dev: xenbus device
---- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:53:40.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:54:12.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:22:22.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:23:46.000000000 +0100
@@ -456,35 +456,41 @@ static void xenbus_dev_release(struct de
kfree(to_xenbus_device(dev));
}
@@ -3575,8 +3575,8 @@ Acked-by: jbeulich@suse.com
extern int xenbus_match(struct device *_dev, struct device_driver *_drv);
extern int xenbus_dev_probe(struct device *_dev);
extern int xenbus_dev_remove(struct device *_dev);
---- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-12-21 11:25:22.000000000 +0100
-+++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2011-09-09 09:51:45.000000000 +0200
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:19:05.000000000 +0100
++++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:23:42.000000000 +0100
@@ -119,6 +119,9 @@ static int xenbus_uevent_backend(struct
if (xdev == NULL)
return -ENODEV;
@@ -3599,7 +3599,7 @@ Acked-by: jbeulich@suse.com
.root = "backend",
.levels = 3, /* backend/type/<frontend>/<id> */
@@ -223,7 +222,7 @@ static struct xen_bus_type xenbus_backen
- #if !defined(CONFIG_XEN) && !defined(HAVE_XEN_PLATFORM_COMPAT_H)
+ #ifdef CONFIG_XEN
.shutdown = xenbus_dev_shutdown,
#endif
- .dev_attrs = xenbus_backend_dev_attrs,
diff --git a/patches.xen/xen3-patch-3.2 b/patches.xen/xen3-patch-3.2
index 981b658bd5..ad704e0d4a 100644
--- a/patches.xen/xen3-patch-3.2
+++ b/patches.xen/xen3-patch-3.2
@@ -17,7 +17,7 @@ Acked-by: jbeulich@suse.com
+ .quad compat_sys_process_vm_readv
+ .quad compat_sys_process_vm_writev
ia32_syscall_end:
---- head.orig/arch/x86/include/asm/mach_traps.h 2012-03-12 15:22:44.000000000 +0100
+--- head.orig/arch/x86/include/asm/mach_traps.h 2012-03-22 13:24:33.000000000 +0100
+++ head/arch/x86/include/asm/mach_traps.h 2011-11-28 11:36:37.000000000 +0100
@@ -5,6 +5,8 @@
#ifndef _ASM_X86_MACH_DEFAULT_MACH_TRAPS_H
@@ -1868,7 +1868,7 @@ Acked-by: jbeulich@suse.com
#include <asm/apic.h>
#include <asm/io_apic.h>
---- head.orig/arch/x86/kernel/nmi.c 2012-03-12 15:22:44.000000000 +0100
+--- head.orig/arch/x86/kernel/nmi.c 2012-03-22 13:24:33.000000000 +0100
+++ head/arch/x86/kernel/nmi.c 2011-11-28 09:53:46.000000000 +0100
@@ -232,15 +232,12 @@ pci_serr_error(unsigned char reason, str
pr_emerg("Dazed and confused, but trying to continue\n");
@@ -2380,7 +2380,7 @@ Acked-by: jbeulich@suse.com
depends on EXPERIMENTAL
help
Support for error detection and correction the Intel
---- head.orig/drivers/edac/sb_edac.c 2012-03-12 15:22:44.000000000 +0100
+--- head.orig/drivers/edac/sb_edac.c 2012-03-22 13:24:33.000000000 +0100
+++ head/drivers/edac/sb_edac.c 2012-02-08 13:07:42.000000000 +0100
@@ -1610,7 +1610,11 @@ static int sbridge_mce_check_error(struc
mce->socketid, mce->apicid);
@@ -2588,8 +2588,8 @@ Acked-by: jbeulich@suse.com
BUG_ON(!(operation & (REQ_FLUSH|REQ_FUA)));
bio = bio_alloc(GFP_KERNEL, 0);
if (unlikely(bio == NULL))
---- head.orig/drivers/xen/blkback/common.h 2012-02-24 15:16:46.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2012-02-27 10:22:30.000000000 +0100
+--- head.orig/drivers/xen/blkback/common.h 2012-03-14 11:23:46.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-14 11:24:09.000000000 +0100
@@ -27,7 +27,6 @@
#ifndef __BLKIF__BACKEND__COMMON_H__
#define __BLKIF__BACKEND__COMMON_H__
@@ -2635,8 +2635,8 @@ Acked-by: jbeulich@suse.com
struct block_device *bdev;
blkif_sector_t sector_number;
};
---- head.orig/drivers/xen/blkback/xenbus.c 2012-03-12 13:53:08.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-03-12 13:55:01.000000000 +0100
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 14:19:12.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:25:55.000000000 +0100
@@ -18,7 +18,6 @@
*/
@@ -2661,20 +2661,18 @@ Acked-by: jbeulich@suse.com
&dev_attr_rd_sect.attr,
&dev_attr_wr_sect.attr,
NULL
-@@ -228,6 +229,62 @@ int blkback_flush_diskcache(struct xenbu
- return err;
+@@ -222,6 +223,54 @@ void blkback_flush_diskcache(struct xenb
+ xenbus_dev_error(dev, err, "writing feature-flush-cache");
}
-+static int xen_blkbk_discard(struct xenbus_transaction xbt,
-+ struct backend_info *be)
++static void blkback_discard(struct xenbus_transaction xbt,
++ struct backend_info *be)
+{
+ struct xenbus_device *dev = be->dev;
+ blkif_t *blkif = be->blkif;
-+ char *type;
-+ int err;
-+ int state = 0;
++ char *type = xenbus_read(XBT_NIL, dev->nodename, "type", NULL);
++ int err, state = 0;
+
-+ type = xenbus_read(XBT_NIL, dev->nodename, "type", NULL);
+ if (!IS_ERR(type)) {
+ if (strncmp(type, "file", 4) == 0) {
+ state = 1;
@@ -2685,54 +2683,47 @@ Acked-by: jbeulich@suse.com
+
+ q = bdev_get_queue(blkif->vbd.bdev);
+ if (blk_queue_discard(q)) {
++ blkif->blk_backend_type = BLKIF_BACKEND_PHY;
+ err = xenbus_printf(xbt, dev->nodename,
+ "discard-granularity", "%u",
+ q->limits.discard_granularity);
-+ if (err) {
-+ xenbus_dev_fatal(dev, err,
++ if (!err)
++ state = 1;
++ else
++ xenbus_dev_error(dev, err,
+ "writing discard-granularity");
-+ goto kfree;
-+ }
+ err = xenbus_printf(xbt, dev->nodename,
+ "discard-alignment", "%u",
+ q->limits.discard_alignment);
+ if (err) {
-+ xenbus_dev_fatal(dev, err,
++ xenbus_dev_error(dev, err,
+ "writing discard-alignment");
-+ goto kfree;
++ state = 0;
+ }
-+ state = 1;
-+ blkif->blk_backend_type = BLKIF_BACKEND_PHY;
+ }
+ }
-+ } else {
-+ err = PTR_ERR(type);
-+ xenbus_dev_fatal(dev, err, "reading type");
-+ goto out;
-+ }
++ kfree(type);
++ } else
++ xenbus_dev_error(dev, PTR_ERR(type),
++ "reading type for discard");
+
+ err = xenbus_printf(xbt, dev->nodename, "feature-discard",
+ "%d", state);
+ if (err)
-+ xenbus_dev_fatal(dev, err, "writing feature-discard");
-+kfree:
-+ kfree(type);
-+out:
-+ return err;
++ xenbus_dev_error(dev, err, "writing feature-discard");
+}
+
/**
* Entry point to this code when a new device is created. Allocate the basic
* structures, and watch the store waiting for the hotplug scripts to tell us
-@@ -455,6 +512,8 @@ again:
- if (err)
- goto abort;
+@@ -443,6 +492,7 @@ again:
+
+ blkback_flush_diskcache(xbt, be, be->blkif->vbd.flush_support);
+ blkback_barrier(xbt, be, be->blkif->vbd.flush_support);
++ blkback_discard(xbt, be);
-+ err = xen_blkbk_discard(xbt, be);
-+
err = xenbus_printf(xbt, dev->nodename, "sectors", "%llu",
vbd_size(&be->blkif->vbd));
- if (err) {
--- head.orig/drivers/xen/blkfront/blkfront.c 2012-03-12 13:53:12.000000000 +0100
+++ head/drivers/xen/blkfront/blkfront.c 2012-03-12 13:55:05.000000000 +0100
@@ -325,6 +325,32 @@ static void backend_changed(struct xenbu
@@ -2914,27 +2905,6 @@ Acked-by: jbeulich@suse.com
#include <linux/device.h>
#include <linux/signal.h>
#include <linux/sched.h>
---- head.orig/drivers/xen/console/console.c 2011-11-03 12:47:31.000000000 +0100
-+++ head/drivers/xen/console/console.c 2011-11-18 15:25:10.000000000 +0100
-@@ -30,7 +30,6 @@
- * IN THE SOFTWARE.
- */
-
--#include <linux/version.h>
- #include <linux/module.h>
- #include <linux/errno.h>
- #include <linux/signal.h>
---- head.orig/drivers/xen/console/xencons_ring.c 2011-01-31 17:56:27.000000000 +0100
-+++ head/drivers/xen/console/xencons_ring.c 2011-11-18 15:38:22.000000000 +0100
-@@ -24,8 +24,6 @@
- * IN THE SOFTWARE.
- */
-
--#include <linux/version.h>
--#include <linux/module.h>
- #include <linux/errno.h>
- #include <linux/signal.h>
- #include <linux/sched.h>
--- head.orig/drivers/xen/core/evtchn.c 2012-01-26 13:48:33.000000000 +0100
+++ head/drivers/xen/core/evtchn.c 2011-11-21 15:49:38.000000000 +0100
@@ -37,7 +37,6 @@
@@ -3800,7 +3770,7 @@ Acked-by: jbeulich@suse.com
else
xenbus_dev_error(dev, op.status,
"unmapping page at handle %d error %d",
---- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:54:12.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_probe.c 2012-03-22 14:23:46.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_probe.c 2012-03-12 13:54:30.000000000 +0100
@@ -48,6 +48,7 @@
#include <linux/mutex.h>
@@ -4014,7 +3984,7 @@ Acked-by: jbeulich@suse.com
return err;
}
---- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2011-09-09 09:51:45.000000000 +0200
+--- head.orig/drivers/xen/xenbus/xenbus_probe_backend.c 2012-03-22 14:23:42.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_probe_backend.c 2011-11-17 15:56:06.000000000 +0100
@@ -44,6 +44,7 @@
#include <linux/mm.h>
@@ -4033,7 +4003,7 @@ Acked-by: jbeulich@suse.com
if (add_uevent_var(env, "MODALIAS=xen-backend:%s", xdev->devicetype))
return -ENOMEM;
---- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:15:54.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_xs.c 2012-03-22 14:09:34.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_xs.c 2012-03-12 16:18:49.000000000 +0100
@@ -45,6 +45,7 @@
#include <linux/module.h>
diff --git a/patches.xen/xen3-patch-3.3-rc5 b/patches.xen/xen3-patch-3.3
index 48e2957e99..a72715e005 100644
--- a/patches.xen/xen3-patch-3.3-rc5
+++ b/patches.xen/xen3-patch-3.3
@@ -1,10 +1,10 @@
-Automatically created from "patch-3.3-rc4" by xen-port-patches.py
+Automatically created from "patch-3.3" by xen-port-patches.py
From: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
-Subject: Linux: 3.3-rc4
-Patch-mainline: 3.3-rc4
+Subject: Linux: 3.3
+Patch-mainline: 3.3
- This patch contains the differences between 3.2 and 3.3-rc4.
+ This patch contains the differences between 3.2 and 3.3.
Acked-by: jbeulich@suse.com
@@ -484,7 +484,7 @@ Acked-by: jbeulich@suse.com
- .quad compat_sys_process_vm_readv
- .quad compat_sys_process_vm_writev
-ia32_syscall_end:
---- head.orig/arch/x86/include/asm/debugreg.h 2012-03-12 15:22:43.000000000 +0100
+--- head.orig/arch/x86/include/asm/debugreg.h 2012-03-22 15:48:22.000000000 +0100
+++ head/arch/x86/include/asm/debugreg.h 2012-02-09 12:32:50.000000000 +0100
@@ -101,7 +101,7 @@ extern void aout_dump_debugregs(struct u
@@ -2777,7 +2777,7 @@ Acked-by: jbeulich@suse.com
* The return value is ignored as the calls cannot fail.
* Large pages for identity mappings are not used at boot time
* and hence no memory allocations during large page split.
---- head.orig/drivers/acpi/osl.c 2012-03-12 15:22:43.000000000 +0100
+--- head.orig/drivers/acpi/osl.c 2012-03-22 15:48:22.000000000 +0100
+++ head/drivers/acpi/osl.c 2012-02-24 10:37:00.000000000 +0100
@@ -324,8 +324,12 @@ acpi_map_lookup_virt(void __iomem *virt,
}
@@ -3196,26 +3196,43 @@ Acked-by: jbeulich@suse.com
+ unregister_balloon(&balloon_dev);
}
--- head.orig/drivers/xen/blkback/blkback.c 2011-11-18 15:34:58.000000000 +0100
-+++ head/drivers/xen/blkback/blkback.c 2012-02-09 17:50:22.000000000 +0100
-@@ -261,9 +261,15 @@ static void do_discard(blkif_t *blkif, s
- struct block_device *bdev = blkif->vbd.bdev;
++++ head/drivers/xen/blkback/blkback.c 2012-03-14 11:29:26.000000000 +0100
+@@ -256,20 +256,24 @@ int blkif_schedule(void *arg)
- if (blkif->blk_backend_type == BLKIF_BACKEND_PHY ||
+ static void do_discard(blkif_t *blkif, struct blkif_request_discard *req)
+ {
+- int err = -EOPNOTSUPP;
+ int status = BLKIF_RSP_OKAY;
+- struct block_device *bdev = blkif->vbd.bdev;
+-
+- if (blkif->blk_backend_type == BLKIF_BACKEND_PHY ||
- blkif->blk_backend_type == BLKIF_BACKEND_FILE)
-+ blkif->blk_backend_type == BLKIF_BACKEND_FILE) {
-+ unsigned long secure = (blkif->vbd.discard_secure &&
-+ (req->flag & BLKIF_DISCARD_SECURE)) ?
-+ BLKDEV_DISCARD_SECURE : 0;
-+
- err = blkdev_issue_discard(bdev, req->sector_number,
+- err = blkdev_issue_discard(bdev, req->sector_number,
- req->nr_sectors, GFP_KERNEL, 0);
-+ req->nr_sectors, GFP_KERNEL,
-+ secure);
+-
+- if (err == -EOPNOTSUPP) {
++ unsigned long secure = (blkif->vbd.discard_secure &&
++ (req->flag & BLKIF_DISCARD_SECURE)) ?
++ BLKDEV_DISCARD_SECURE : 0;
++
++ switch (blkdev_issue_discard(blkif->vbd.bdev, req->sector_number,
++ req->nr_sectors, GFP_KERNEL, secure))
++ {
++ case 0:
++ break;
++ case -EOPNOTSUPP:
+ DPRINTK("discard op failed, not supported\n");
+ status = BLKIF_RSP_EOPNOTSUPP;
+- } else if (err)
++ break;
++ default:
+ status = BLKIF_RSP_ERROR;
++ break;
+ }
- if (err == -EOPNOTSUPP) {
- DPRINTK("discard op failed, not supported\n");
-@@ -459,7 +465,7 @@ static void dispatch_rw_block_io(blkif_t
+ make_response(blkif, req->id, req->operation, status);
+ }
+@@ -459,7 +463,7 @@ static void dispatch_rw_block_io(blkif_t
struct {
unsigned long buf; unsigned int nsec;
} seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];
@@ -3224,7 +3241,7 @@ Acked-by: jbeulich@suse.com
struct bio *bio = NULL;
uint32_t flags;
int ret, i;
-@@ -485,6 +491,7 @@ static void dispatch_rw_block_io(blkif_t
+@@ -485,6 +489,7 @@ static void dispatch_rw_block_io(blkif_t
case BLKIF_OP_DISCARD:
blkif->st_ds_req++;
operation = REQ_DISCARD;
@@ -3232,7 +3249,7 @@ Acked-by: jbeulich@suse.com
break;
default:
operation = 0; /* make gcc happy */
-@@ -492,9 +499,7 @@ static void dispatch_rw_block_io(blkif_t
+@@ -492,9 +497,7 @@ static void dispatch_rw_block_io(blkif_t
}
/* Check that number of segments is sane. */
@@ -3243,9 +3260,19 @@ Acked-by: jbeulich@suse.com
unlikely(nseg > BLKIF_MAX_SEGMENTS_PER_REQUEST)) {
DPRINTK("Bad number of segments in request (%d)\n", nseg);
goto fail_response;
---- head.orig/drivers/xen/blkback/common.h 2012-02-27 10:22:30.000000000 +0100
-+++ head/drivers/xen/blkback/common.h 2012-02-27 10:22:52.000000000 +0100
-@@ -52,6 +52,7 @@ struct vbd {
+--- head.orig/drivers/xen/blkback/common.h 2012-03-14 11:24:09.000000000 +0100
++++ head/drivers/xen/blkback/common.h 2012-03-14 11:25:53.000000000 +0100
+@@ -42,16 +42,12 @@
+ pr_debug("(file=%s, line=%d) " _f, \
+ __FILE__ , __LINE__ , ## _a )
+
+-enum blkif_backend_type {
+- BLKIF_BACKEND_PHY = 1,
+- BLKIF_BACKEND_FILE = 2,
+-};
+-
+ struct vbd {
+ blkif_vdev_t handle; /* what the domain refers to this vbd as */
fmode_t mode; /* FMODE_xxx */
unsigned char type; /* VDISK_xxx */
bool flush_support;
@@ -3253,6 +3280,14 @@ Acked-by: jbeulich@suse.com
u32 pdevice; /* phys device that this vbd maps to */
struct block_device *bdev;
sector_t size; /* Cached size parameter */
+@@ -67,7 +63,6 @@ typedef struct blkif_st {
+ unsigned int irq;
+ /* Comms information. */
+ enum blkif_protocol blk_protocol;
+- enum blkif_backend_type blk_backend_type;
+ blkif_back_rings_t blk_rings;
+ struct vm_struct *blk_ring_area;
+ /* The VBD attached to this interface. */
--- head.orig/drivers/xen/blkback/vbd.c 2012-02-24 15:15:19.000000000 +0100
+++ head/drivers/xen/blkback/vbd.c 2012-02-27 10:22:57.000000000 +0100
@@ -92,6 +92,9 @@ int vbd_create(blkif_t *blkif, blkif_vde
@@ -3265,24 +3300,75 @@ Acked-by: jbeulich@suse.com
DPRINTK("Successful creation of handle=%04x (dom=%u)\n",
handle, blkif->domid);
return 0;
---- head.orig/drivers/xen/blkback/xenbus.c 2012-03-12 13:55:01.000000000 +0100
-+++ head/drivers/xen/blkback/xenbus.c 2012-02-27 10:22:58.000000000 +0100
-@@ -268,6 +268,15 @@ static int xen_blkbk_discard(struct xenb
- state = 1;
- blkif->blk_backend_type = BLKIF_BACKEND_PHY;
- }
-+ /* Optional. */
-+ err = xenbus_printf(xbt, dev->nodename,
-+ "discard-secure", "%d",
-+ blkif->vbd.discard_secure);
-+ if (err) {
-+ xenbus_dev_fatal(dev, err,
-+ "writing discard-secure");
-+ goto kfree;
-+ }
+--- head.orig/drivers/xen/blkback/xenbus.c 2012-03-22 14:25:55.000000000 +0100
++++ head/drivers/xen/blkback/xenbus.c 2012-03-22 14:26:51.000000000 +0100
+@@ -227,43 +227,34 @@ static void blkback_discard(struct xenbu
+ struct backend_info *be)
+ {
+ struct xenbus_device *dev = be->dev;
+- blkif_t *blkif = be->blkif;
+- char *type = xenbus_read(XBT_NIL, dev->nodename, "type", NULL);
++ struct vbd *vbd = &be->blkif->vbd;
++ struct request_queue *q = bdev_get_queue(vbd->bdev);
+ int err, state = 0;
+
+- if (!IS_ERR(type)) {
+- if (strncmp(type, "file", 4) == 0) {
++ if (blk_queue_discard(q)) {
++ err = xenbus_printf(xbt, dev->nodename, "discard-granularity",
++ "%u", q->limits.discard_granularity);
++ if (!err)
+ state = 1;
+- blkif->blk_backend_type = BLKIF_BACKEND_FILE;
++ else
++ xenbus_dev_error(dev, err,
++ "writing discard-granularity");
++ err = xenbus_printf(xbt, dev->nodename, "discard-alignment",
++ "%u", q->limits.discard_alignment);
++ if (err) {
++ xenbus_dev_error(dev, err,
++ "writing discard-alignment");
++ state = 0;
}
- } else {
- err = PTR_ERR(type);
+- if (strncmp(type, "phy", 3) == 0) {
+- struct request_queue *q;
++ }
+
+- q = bdev_get_queue(blkif->vbd.bdev);
+- if (blk_queue_discard(q)) {
+- blkif->blk_backend_type = BLKIF_BACKEND_PHY;
+- err = xenbus_printf(xbt, dev->nodename,
+- "discard-granularity", "%u",
+- q->limits.discard_granularity);
+- if (!err)
+- state = 1;
+- else
+- xenbus_dev_error(dev, err,
+- "writing discard-granularity");
+- err = xenbus_printf(xbt, dev->nodename,
+- "discard-alignment", "%u",
+- q->limits.discard_alignment);
+- if (err) {
+- xenbus_dev_error(dev, err,
+- "writing discard-alignment");
+- state = 0;
+- }
+- }
+- }
+- kfree(type);
+- } else
+- xenbus_dev_error(dev, PTR_ERR(type),
+- "reading type for discard");
++ /* Optional. */
++ if (state) {
++ err = xenbus_printf(xbt, dev->nodename, "discard-secure",
++ "%d", vbd->discard_secure);
++ if (err)
++ xenbus_dev_error(dev, err, "writing discard-secure");
++ }
+
+ err = xenbus_printf(xbt, dev->nodename, "feature-discard",
+ "%d", state);
--- head.orig/drivers/xen/blkfront/blkfront.c 2012-03-12 13:55:05.000000000 +0100
+++ head/drivers/xen/blkfront/blkfront.c 2012-03-12 13:55:34.000000000 +0100
@@ -331,11 +331,13 @@ static void blkfront_setup_discard(struc
@@ -3449,9 +3535,9 @@ Acked-by: jbeulich@suse.com
{
return kasprintf(GFP_KERNEL, BLKTAP2_DEV_DIR "blktap%u",
MINOR(dev->devt));
---- head.orig/drivers/xen/console/console.c 2011-11-18 15:25:10.000000000 +0100
-+++ head/drivers/xen/console/console.c 2012-02-16 18:00:45.000000000 +0100
-@@ -348,7 +348,6 @@ void __init dom0_init_screen_info(const
+--- head.orig/drivers/xen/console/console.c 2012-03-22 14:10:10.000000000 +0100
++++ head/drivers/xen/console/console.c 2012-03-22 14:26:59.000000000 +0100
+@@ -341,7 +341,6 @@ void __init dom0_init_screen_info(const
((_tty)->index != (xc_num - 1)))
static struct ktermios *xencons_termios[MAX_NR_CONSOLES];
@@ -3459,7 +3545,7 @@ Acked-by: jbeulich@suse.com
static struct tty_struct *xencons_tty;
static int xencons_priv_irq;
static char x_char;
-@@ -686,7 +685,6 @@ static int __init xencons_init(void)
+@@ -679,7 +678,6 @@ static int __init xencons_init(void)
TTY_DRIVER_REAL_RAW |
TTY_DRIVER_RESET_TERMIOS;
DRV(xencons_driver)->termios = xencons_termios;
@@ -3509,8 +3595,8 @@ Acked-by: jbeulich@suse.com
do {
/* Avoid a callback storm when we reenable delivery. */
--- head.orig/drivers/xen/core/smpboot.c 2011-11-18 15:44:14.000000000 +0100
-+++ head/drivers/xen/core/smpboot.c 2012-02-21 15:37:10.000000000 +0100
-@@ -425,6 +425,7 @@ void __ref play_dead(void)
++++ head/drivers/xen/core/smpboot.c 2012-03-22 16:22:50.000000000 +0100
+@@ -443,6 +443,7 @@ void __ref play_dead(void)
void __init smp_cpus_done(unsigned int max_cpus)
{
@@ -4024,7 +4110,7 @@ Acked-by: jbeulich@suse.com
/* For xenbus internal use. */
enum {
XENBUS_XSD_UNCOMMITTED = 0,
---- head.orig/drivers/xen/xenbus/xenbus_dev_backend.c 2012-03-12 15:22:43.000000000 +0100
+--- head.orig/drivers/xen/xenbus/xenbus_dev_backend.c 2012-03-22 15:48:22.000000000 +0100
+++ head/drivers/xen/xenbus/xenbus_dev_backend.c 2012-02-17 09:50:33.000000000 +0100
@@ -7,7 +7,9 @@
#include <linux/capability.h>
diff --git a/series.conf b/series.conf
index 533e3858be..bbf4ef4d93 100644
--- a/series.conf
+++ b/series.conf
@@ -732,7 +732,7 @@
patches.xen/xen3-patch-3.0
patches.xen/xen3-patch-3.1
patches.xen/xen3-patch-3.2
- patches.xen/xen3-patch-3.3-rc5
+ patches.xen/xen3-patch-3.3
patches.xen/xen3-004-x86_autoload.patch
patches.xen/xen3-006-x86_autoload.patch
patches.xen/xen3-009-x86_autoload.patch