diff --git a/0001-Replace-struct-siginfo-with-siginfo_t.patch b/0001-Replace-struct-siginfo-with-siginfo_t.patch
deleted file mode 100644
index 08948fe..0000000
--- a/0001-Replace-struct-siginfo-with-siginfo_t.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From baf954154e7c0acda038c01a5c28aea4db7eec67 Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Thu, 5 Jul 2012 14:28:03 +0100
-Subject: [PATCH] Replace 'struct siginfo' with 'siginfo_t'.
-
-glibc 2.16 will remove the undocumented definition of 'struct siginfo'
-from <bits/siginfo.h>.
-
-This change is already present in glibc 2.15.90, so qemu compilation
-of certain targets (eg. cris-user) breaks.
-
-This struct was always typedef'd to be the same as 'siginfo_t' which
-is what POSIX documents, so use that instead.
-
-Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
----
- linux-user/signal.c |    8 ++++----
- user-exec.c         |    2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/linux-user/signal.c b/linux-user/signal.c
-index 43346dc..108dff9 100644
---- a/linux-user/signal.c
-+++ b/linux-user/signal.c
-@@ -2849,7 +2849,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
-     * Arguments to signal handler:
-     *
-     *   a0 = signal number
--    *   a1 = pointer to struct siginfo
-+    *   a1 = pointer to siginfo_t
-     *   a2 = pointer to struct ucontext
-     *
-     * $25 and PC point to the signal handler, $29 points to the
-@@ -3255,7 +3255,7 @@ struct target_signal_frame {
- };
- 
- struct rt_signal_frame {
--    struct siginfo info;
-+    siginfo_t info;
-     struct ucontext uc;
-     uint32_t tramp[2];
- };
-@@ -3474,9 +3474,9 @@ struct target_signal_frame {
- };
- 
- struct rt_signal_frame {
--        struct siginfo *pinfo;
-+        siginfo_t *pinfo;
-         void *puc;
--        struct siginfo info;
-+        siginfo_t info;
-         struct ucontext uc;
-         uint8_t retcode[8];       /* Trampoline code. */
- };
-diff --git a/user-exec.c b/user-exec.c
-index b2a4261..1a9c276 100644
---- a/user-exec.c
-+++ b/user-exec.c
-@@ -588,7 +588,7 @@ int cpu_signal_handler(int host_signum, void *pinfo,
- int cpu_signal_handler(int host_signum, void *pinfo,
-                        void *puc)
- {
--    struct siginfo *info = pinfo;
-+    siginfo_t *info = pinfo;
-     struct ucontext *uc = puc;
-     unsigned long pc = uc->uc_mcontext.sc_iaoq[0];
-     uint32_t insn = *(uint32_t *)pc;
--- 
-1.7.10.4
-
diff --git a/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch b/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch
deleted file mode 100644
index fa3f4d5..0000000
--- a/0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From bbf3b80401d55ac3339160cefa17f0015317f512 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Thu, 17 May 2012 10:32:37 -0300
-Subject: [PATCH] kvm: Enable use of kvm_irqchip_in_kernel in hwlib code
-
-Provide a dummy kvm_kernel_irqchip so that kvm_irqchip_in_kernel can be
-used by code that is not under CONFIG_KVM protection.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
-Signed-off-by: Avi Kivity <avi@redhat.com>
----
- kvm-stub.c |    1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/kvm-stub.c b/kvm-stub.c
-index b4cf03f..ec9a364 100644
---- a/kvm-stub.c
-+++ b/kvm-stub.c
-@@ -18,6 +18,7 @@
- #include "kvm.h"
- 
- KVMState *kvm_state;
-+bool kvm_kernel_irqchip;
- 
- int kvm_init_vcpu(CPUArchState *env)
- {
--- 
-1.7.10.4
-
diff --git a/0001-mips-Fix-link-error-with-piix4_pm_init.patch b/0001-mips-Fix-link-error-with-piix4_pm_init.patch
new file mode 100644
index 0000000..03c79c8
--- /dev/null
+++ b/0001-mips-Fix-link-error-with-piix4_pm_init.patch
@@ -0,0 +1,28 @@
+From 2852820d9d765141c9bae0f586c9b782258fb07d Mon Sep 17 00:00:00 2001
+From: Cole Robinson <crobinso@redhat.com>
+Date: Mon, 6 Aug 2012 17:12:40 -0400
+Subject: [PATCH] mips: Fix link error with 'piix4_pm_init'
+
+  LINK  mips-softmmu/qemu-system-mips
+  LINK  m68k-softmmu/qemu-system-m68k
+hw/mips/../mips_malta.o: In function `mips_malta_init':
+/home/crobinso/qemu-kvm/hw/mips/../mips_malta.c:961: undefined reference to `piix4_pm_init'
+---
+ hw/mips/Makefile.objs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hw/mips/Makefile.objs b/hw/mips/Makefile.objs
+index 29a5d0d..89af0e9 100644
+--- a/hw/mips/Makefile.objs
++++ b/hw/mips/Makefile.objs
+@@ -1,6 +1,7 @@
+ obj-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
+ obj-y += mips_addr.o mips_timer.o mips_int.o
+ obj-y += gt64xxx.o mc146818rtc.o
++obj-y += acpi.o acpi_piix4.o
+ obj-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o
+ 
+ obj-y := $(addprefix ../,$(obj-y))
+-- 
+1.7.11.2
+
diff --git a/0001-qemu-kvm-Fix-default-machine-options.patch b/0001-qemu-kvm-Fix-default-machine-options.patch
deleted file mode 100644
index 8c6cde7..0000000
--- a/0001-qemu-kvm-Fix-default-machine-options.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From ad47ffe7134fc7cd6a74fd3cdc0470723b883b93 Mon Sep 17 00:00:00 2001
-From: "Daniel P. Berrange" <berrange@redhat.com>
-Date: Tue, 10 Jul 2012 10:54:55 +0100
-Subject: [PATCH] qemu-kvm: Fix default machine options
-
-qemu-kvm-specific machine defaults were missing for pc-0.15 to pc-1.1.
-Then Daniel noted that --disable-kvm caused problems as the generated
-binaries would be unable to run. As we are at it, we can drop the
-kernel_irqchip=on that is now enable by default in upstream.
----
- hw/pc_piix.c |   23 ++++++++++++++++-------
- 1 file changed, 16 insertions(+), 7 deletions(-)
-
-diff --git a/hw/pc_piix.c b/hw/pc_piix.c
-index 4e8a280..50e108a 100644
---- a/hw/pc_piix.c
-+++ b/hw/pc_piix.c
-@@ -355,6 +355,12 @@ static void pc_xen_hvm_init(ram_addr_t ram_size,
- }
- #endif
- 
-+#ifdef CONFIG_KVM_OPTIONS
-+#define KVM_MACHINE_OPTIONS "accel=kvm"
-+#else
-+#define KVM_MACHINE_OPTIONS ""
-+#endif
-+
- static QEMUMachine pc_machine_v1_1 = {
-     .name = "pc-1.1",
-     .alias = "pc",
-@@ -362,7 +368,7 @@ static QEMUMachine pc_machine_v1_1 = {
-     .init = pc_init_pci,
-     .max_cpus = 255,
-     .is_default = 1,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
- };
- 
- #define PC_COMPAT_1_0 \
-@@ -393,7 +399,7 @@ static QEMUMachine pc_machine_v1_0 = {
-     .desc = "Standard PC",
-     .init = pc_init_pci,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_1_0,
-         { /* end of list */ }
-@@ -408,7 +414,7 @@ static QEMUMachine pc_machine_v0_15 = {
-     .desc = "Standard PC",
-     .init = pc_init_pci,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_15,
-         { /* end of list */ }
-@@ -440,7 +446,7 @@ static QEMUMachine pc_machine_v0_14 = {
-     .desc = "Standard PC",
-     .init = pc_init_pci,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_14, 
-         {
-@@ -473,7 +479,7 @@ static QEMUMachine pc_machine_v0_13 = {
-     .desc = "Standard PC",
-     .init = pc_init_pci_no_kvmclock,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_13,
-         {
-@@ -510,7 +516,7 @@ static QEMUMachine pc_machine_v0_12 = {
-     .desc = "Standard PC",
-     .init = pc_init_pci_no_kvmclock,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_12,
-         {
-@@ -543,7 +549,7 @@ static QEMUMachine pc_machine_v0_11 = {
-     .desc = "Standard PC, qemu 0.11",
-     .init = pc_init_pci_no_kvmclock,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_11,
-         {
-@@ -564,7 +570,7 @@ static QEMUMachine pc_machine_v0_10 = {
-     .desc = "Standard PC, qemu 0.10",
-     .init = pc_init_pci_no_kvmclock,
-     .max_cpus = 255,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         PC_COMPAT_0_11,
-         {
-@@ -597,7 +603,7 @@ static QEMUMachine isapc_machine = {
-     .desc = "ISA-only PC",
-     .init = pc_init_isa,
-     .max_cpus = 1,
--    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
-+    .default_machine_opts = KVM_MACHINE_OPTIONS,
-     .compat_props = (GlobalProperty[]) {
-         {
-             .driver   = "pc-sysfw",
diff --git a/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch b/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
index 8f5a24b..f8d08fe 100644
--- a/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
+++ b/0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
@@ -1,16 +1,15 @@
-From 5b79aa329a378537ec939cee75df10ca073b367f Mon Sep 17 00:00:00 2001
+From 618a5f8a10c69813dddd86d966ff1778f22ab456 Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 21:57:47 +0100
-Subject: [PATCH 101/114] char: Split out tcp socket close code in a separate
- function
+Subject: [PATCH] char: Split out tcp socket close code in a separate function
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- qemu-char.c |   25 ++++++++++++++++---------
+ qemu-char.c | 25 ++++++++++++++++---------
  1 file changed, 16 insertions(+), 9 deletions(-)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index fe1126f..78d2a69 100644
+index c2aaaee..132ac08 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -2141,6 +2141,21 @@ typedef struct {
@@ -53,5 +52,5 @@ index fe1126f..78d2a69 100644
          if (s->do_telnetopt)
              tcp_chr_process_IAC_bytes(chr, s, buf, &size);
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch b/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
index 5c6b719..113d521 100644
--- a/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
+++ b/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
@@ -1,51 +1,52 @@
-From 0e725325a4f3d1eb0eaa243cc059df2774c9c098 Mon Sep 17 00:00:00 2001
+From 58011a6f6c7c284f6532486f819b5895be9b76c7 Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 20:31:45 +0100
-Subject: [PATCH 102/114] char: Add a QemuChrHandlers struct to initialise
- chardev handlers
+Subject: [PATCH] char: Add a QemuChrHandlers struct to initialise chardev
+ handlers
 
 Instead of passing each handler in the qemu_add_handlers() function,
 create a struct of handlers that can be passed to the function instead.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- gdbstub.c               |    9 +++++++--
- hw/cadence_uart.c       |    9 +++++++--
- hw/ccid-card-passthru.c |   11 +++++++----
- hw/debugcon.c           |    2 +-
- hw/escc.c               |    9 +++++++--
- hw/etraxfs_ser.c        |   13 +++++++++----
- hw/exynos4210_uart.c    |    9 +++++++--
- hw/grlib_apbuart.c      |   12 +++++++-----
- hw/ivshmem.c            |   28 ++++++++++++++++++++++------
- hw/lm32_juart.c         |    8 +++++++-
- hw/lm32_uart.c          |    8 +++++++-
- hw/mcf_uart.c           |    9 +++++++--
- hw/milkymist-uart.c     |    8 +++++++-
- hw/pl011.c              |    9 +++++++--
- hw/pxa2xx.c             |   13 +++++++++----
- hw/qdev-properties.c    |    2 +-
- hw/serial.c             |    9 +++++++--
- hw/sh_serial.c          |   12 +++++++++---
- hw/spapr_vty.c          |    8 ++++++--
- hw/strongarm.c          |   12 +++++++-----
- hw/usb/dev-serial.c     |    9 +++++++--
- hw/usb/redirect.c       |    9 +++++++--
- hw/virtio-console.c     |    9 +++++++--
- hw/xen_console.c        |   16 +++++++++++-----
- hw/xilinx_uartlite.c    |   11 +++++++++--
- monitor.c               |   18 ++++++++++++++----
- net/slirp.c             |    8 ++++++--
- qemu-char.c             |   32 ++++++++++++++++++++++----------
- qemu-char.h             |   13 +++++++++----
- qtest.c                 |    9 ++++++++-
- 30 files changed, 248 insertions(+), 86 deletions(-)
+ gdbstub.c               |  9 +++++++--
+ hw/cadence_uart.c       |  9 +++++++--
+ hw/ccid-card-passthru.c | 11 +++++++----
+ hw/debugcon.c           |  2 +-
+ hw/escc.c               |  9 +++++++--
+ hw/etraxfs_ser.c        | 13 +++++++++----
+ hw/exynos4210_uart.c    |  9 +++++++--
+ hw/grlib_apbuart.c      | 12 +++++++-----
+ hw/imx_serial.c         |  9 +++++++--
+ hw/ivshmem.c            | 28 ++++++++++++++++++++++------
+ hw/lm32_juart.c         |  8 +++++++-
+ hw/lm32_uart.c          |  8 +++++++-
+ hw/mcf_uart.c           |  9 +++++++--
+ hw/milkymist-uart.c     |  8 +++++++-
+ hw/pl011.c              |  9 +++++++--
+ hw/pxa2xx.c             | 13 +++++++++----
+ hw/qdev-properties.c    |  2 +-
+ hw/serial.c             |  9 +++++++--
+ hw/sh_serial.c          | 12 +++++++++---
+ hw/spapr_vty.c          |  8 ++++++--
+ hw/strongarm.c          | 12 +++++++-----
+ hw/usb/dev-serial.c     |  9 +++++++--
+ hw/usb/redirect.c       |  9 +++++++--
+ hw/virtio-console.c     |  9 +++++++--
+ hw/xen_console.c        | 16 +++++++++++-----
+ hw/xilinx_uartlite.c    | 11 +++++++++--
+ monitor.c               | 18 ++++++++++++++----
+ net/slirp.c             |  8 ++++++--
+ qemu-char.c             | 32 ++++++++++++++++++++++----------
+ qemu-char.h             | 13 +++++++++----
+ qtest.c                 |  9 ++++++++-
+ 31 files changed, 255 insertions(+), 88 deletions(-)
 
 diff --git a/gdbstub.c b/gdbstub.c
-index 6a77a66..9e099b0 100644
+index 5d37dd9..7f6b1cb 100644
 --- a/gdbstub.c
 +++ b/gdbstub.c
-@@ -2874,6 +2874,12 @@ static void gdb_sigterm_handler(int signal)
+@@ -2929,6 +2929,12 @@ static void gdb_sigterm_handler(int signal)
  }
  #endif
  
@@ -58,7 +59,7 @@ index 6a77a66..9e099b0 100644
  int gdbserver_start(const char *device)
  {
      GDBState *s;
-@@ -2903,8 +2909,7 @@ int gdbserver_start(const char *device)
+@@ -2958,8 +2964,7 @@ int gdbserver_start(const char *device)
          if (!chr)
              return -1;
  
@@ -138,7 +139,7 @@ index 14ab326..7887fd2 100644
  
  static int debugcon_isa_initfn(ISADevice *dev)
 diff --git a/hw/escc.c b/hw/escc.c
-index 4d8a8e8..689f275 100644
+index e1f5e73..ff9d8b1 100644
 --- a/hw/escc.c
 +++ b/hw/escc.c
 @@ -867,6 +867,12 @@ void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq,
@@ -249,11 +250,38 @@ index 73fc989..fd77d52 100644
  
      sysbus_init_irq(dev, &uart->irq);
  
+diff --git a/hw/imx_serial.c b/hw/imx_serial.c
+index d4eae43..f2304d2 100644
+--- a/hw/imx_serial.c
++++ b/hw/imx_serial.c
+@@ -381,6 +381,12 @@ static const struct MemoryRegionOps imx_serial_ops = {
+     .endianness = DEVICE_NATIVE_ENDIAN,
+ };
+ 
++static const QemuChrHandlers imx_handlers = {
++    .fd_can_read = imx_can_receive,
++    .fd_read = imx_receive,
++    .fd_event = imx_event,
++};
++
+ static int imx_serial_init(SysBusDevice *dev)
+ {
+     IMXSerialState *s = FROM_SYSBUS(IMXSerialState, dev);
+@@ -391,8 +397,7 @@ static int imx_serial_init(SysBusDevice *dev)
+     sysbus_init_irq(dev, &s->irq);
+ 
+     if (s->chr) {
+-        qemu_chr_add_handlers(s->chr, imx_can_receive, imx_receive,
+-                              imx_event, s);
++        qemu_chr_add_handlers(s->chr, &imx_handlers, s);
+     } else {
+         DPRINTF("No char dev for uart at 0x%lx\n",
+                 (unsigned long)s->iomem.ram_addr);
 diff --git a/hw/ivshmem.c b/hw/ivshmem.c
-index d48e5f9..2dbf86e 100644
+index 0c58161..f9a7fe8 100644
 --- a/hw/ivshmem.c
 +++ b/hw/ivshmem.c
-@@ -279,6 +279,18 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) {
+@@ -273,6 +273,18 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) {
      msix_notify(pdev, entry->vector);
  }
  
@@ -269,10 +297,10 @@ index d48e5f9..2dbf86e 100644
 +    .fd_event = ivshmem_event,
 +};
 +
- static CharDriverState* create_eventfd_chr_device(void * opaque, int eventfd,
-                                                                     int vector)
+ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *n,
+                                                   int vector)
  {
-@@ -298,11 +310,10 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, int eventfd,
+@@ -293,11 +305,10 @@ static CharDriverState* create_eventfd_chr_device(void * opaque, EventNotifier *
          s->eventfd_table[vector].pdev = &s->dev;
          s->eventfd_table[vector].vector = vector;
  
@@ -287,7 +315,7 @@ index d48e5f9..2dbf86e 100644
      }
  
      return chr;
-@@ -635,6 +646,12 @@ static void ivshmem_write_config(PCIDevice *pci_dev, uint32_t address,
+@@ -641,6 +652,12 @@ static void ivshmem_write_config(PCIDevice *pci_dev, uint32_t address,
      msix_write_config(pci_dev, address, val, len);
  }
  
@@ -300,7 +328,7 @@ index d48e5f9..2dbf86e 100644
  static int pci_ivshmem_init(PCIDevice *dev)
  {
      IVShmemState *s = DO_UPCAST(IVShmemState, dev, dev);
-@@ -724,8 +741,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
+@@ -730,8 +747,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
  
          s->eventfd_chr = g_malloc0(s->vectors * sizeof(CharDriverState *));
  
@@ -415,10 +443,10 @@ index 291fe3c..2dcb41c 100644
  
      return 0;
 diff --git a/hw/pl011.c b/hw/pl011.c
-index 8a5a8f5..b125c40 100644
+index 3245702..0d620f8 100644
 --- a/hw/pl011.c
 +++ b/hw/pl011.c
-@@ -256,6 +256,12 @@ static const VMStateDescription vmstate_pl011 = {
+@@ -258,6 +258,12 @@ static const VMStateDescription vmstate_pl011 = {
      }
  };
  
@@ -431,7 +459,7 @@ index 8a5a8f5..b125c40 100644
  static int pl011_init(SysBusDevice *dev, const unsigned char *id)
  {
      pl011_state *s = FROM_SYSBUS(pl011_state, dev);
-@@ -271,8 +277,7 @@ static int pl011_init(SysBusDevice *dev, const unsigned char *id)
+@@ -273,8 +279,7 @@ static int pl011_init(SysBusDevice *dev, const unsigned char *id)
      s->cr = 0x300;
      s->flags = 0x90;
      if (s->chr) {
@@ -442,10 +470,10 @@ index 8a5a8f5..b125c40 100644
      vmstate_register(&dev->qdev, -1, &vmstate_pl011, s);
      return 0;
 diff --git a/hw/pxa2xx.c b/hw/pxa2xx.c
-index ddaa846..81827a4 100644
+index d5f1420..0b308cf 100644
 --- a/hw/pxa2xx.c
 +++ b/hw/pxa2xx.c
-@@ -2011,6 +2011,12 @@ static int pxa2xx_fir_load(QEMUFile *f, void *opaque, int version_id)
+@@ -1962,6 +1962,12 @@ static int pxa2xx_fir_load(QEMUFile *f, void *opaque, int version_id)
      return 0;
  }
  
@@ -458,7 +486,7 @@ index ddaa846..81827a4 100644
  static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem,
                  target_phys_addr_t base,
                  qemu_irq irq, qemu_irq rx_dma, qemu_irq tx_dma,
-@@ -2029,10 +2035,9 @@ static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem,
+@@ -1980,10 +1986,9 @@ static PXA2xxFIrState *pxa2xx_fir_init(MemoryRegion *sysmem,
      memory_region_init_io(&s->iomem, &pxa2xx_fir_ops, s, "pxa2xx-fir", 0x1000);
      memory_region_add_subregion(sysmem, base, &s->iomem);
  
@@ -473,10 +501,10 @@ index ddaa846..81827a4 100644
                      pxa2xx_fir_load, s);
  
 diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
-index b7b5597..e3c1b40 100644
+index 8aca0d4..677c665 100644
 --- a/hw/qdev-properties.c
 +++ b/hw/qdev-properties.c
-@@ -551,7 +551,7 @@ static void release_chr(Object *obj, const char *name, void *opaque)
+@@ -549,7 +549,7 @@ static void release_chr(Object *obj, const char *name, void *opaque)
      CharDriverState **ptr = qdev_get_prop_ptr(dev, prop);
  
      if (*ptr) {
@@ -513,10 +541,10 @@ index a421d1e..056d823 100644
  
  /* Change the main reference oscillator frequency. */
 diff --git a/hw/sh_serial.c b/hw/sh_serial.c
-index 43b0eb1..c322784 100644
+index 1d1883d..ce1c765 100644
 --- a/hw/sh_serial.c
 +++ b/hw/sh_serial.c
-@@ -350,6 +350,12 @@ static const MemoryRegionOps sh_serial_ops = {
+@@ -352,6 +352,12 @@ static const MemoryRegionOps sh_serial_ops = {
      .endianness = DEVICE_NATIVE_ENDIAN,
  };
  
@@ -529,7 +557,7 @@ index 43b0eb1..c322784 100644
  void sh_serial_init(MemoryRegion *sysmem,
                      target_phys_addr_t base, int feat,
                      uint32_t freq, CharDriverState *chr,
-@@ -394,9 +400,9 @@ void sh_serial_init(MemoryRegion *sysmem,
+@@ -396,9 +402,9 @@ void sh_serial_init(MemoryRegion *sysmem,
  
      s->chr = chr;
  
@@ -543,7 +571,7 @@ index 43b0eb1..c322784 100644
      s->eri = eri_source;
      s->rxi = rxi_source;
 diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c
-index c9674f3..15f61c3 100644
+index 99e52cc..e7cb84f 100644
 --- a/hw/spapr_vty.c
 +++ b/hw/spapr_vty.c
 @@ -54,6 +54,11 @@ void vty_putchars(VIOsPAPRDevice *sdev, uint8_t *buf, int len)
@@ -569,7 +597,7 @@ index c9674f3..15f61c3 100644
      return 0;
  }
 diff --git a/hw/strongarm.c b/hw/strongarm.c
-index 1b15f39..2ae2f7e 100644
+index 7150eeb..594cf31 100644
 --- a/hw/strongarm.c
 +++ b/hw/strongarm.c
 @@ -1199,6 +1199,12 @@ static const MemoryRegionOps strongarm_uart_ops = {
@@ -599,7 +627,7 @@ index 1b15f39..2ae2f7e 100644
  
      return 0;
 diff --git a/hw/usb/dev-serial.c b/hw/usb/dev-serial.c
-index 56743ee..af670cc 100644
+index 8aa6552..8fc9bdd 100644
 --- a/hw/usb/dev-serial.c
 +++ b/hw/usb/dev-serial.c
 @@ -475,6 +475,12 @@ static void usb_serial_event(void *opaque, int event)
@@ -626,10 +654,10 @@ index 56743ee..af670cc 100644
      return 0;
  }
 diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
-index 51c27b4..6e8180e 100644
+index 10b4fbb..ecb2cd4 100644
 --- a/hw/usb/redirect.c
 +++ b/hw/usb/redirect.c
-@@ -890,6 +890,12 @@ static void usbredir_chardev_event(void *opaque, int event)
+@@ -892,6 +892,12 @@ static void usbredir_chardev_event(void *opaque, int event)
      }
  }
  
@@ -642,7 +670,7 @@ index 51c27b4..6e8180e 100644
  /*
   * init + destroy
   */
-@@ -928,8 +934,7 @@ static int usbredir_initfn(USBDevice *udev)
+@@ -930,8 +936,7 @@ static int usbredir_initfn(USBDevice *udev)
  
      /* Let the backend know we are ready */
      qemu_chr_fe_open(dev->cs);
@@ -680,10 +708,10 @@ index cffee3d..066590c 100644
  
      return 0;
 diff --git a/hw/xen_console.c b/hw/xen_console.c
-index 3794b19..ee872c3 100644
+index 9426d73..e9fcadc 100644
 --- a/hw/xen_console.c
 +++ b/hw/xen_console.c
-@@ -212,6 +212,11 @@ out:
+@@ -211,6 +211,11 @@ out:
      return ret;
  }
  
@@ -695,7 +723,7 @@ index 3794b19..ee872c3 100644
  static int con_initialise(struct XenDevice *xendev)
  {
      struct XenConsole *con = container_of(xendev, struct XenConsole, xendev);
-@@ -232,9 +237,9 @@ static int con_initialise(struct XenDevice *xendev)
+@@ -231,9 +236,9 @@ static int con_initialise(struct XenDevice *xendev)
  	return -1;
  
      xen_be_bind_evtchn(&con->xendev);
@@ -708,7 +736,7 @@ index 3794b19..ee872c3 100644
  
      xen_be_printf(xendev, 1, "ring mfn %d, remote port %d, local port %d, limit %zd\n",
  		  con->ring_ref,
-@@ -251,8 +256,9 @@ static void con_disconnect(struct XenDevice *xendev)
+@@ -250,8 +255,9 @@ static void con_disconnect(struct XenDevice *xendev)
      if (!xendev->dev) {
          return;
      }
@@ -721,7 +749,7 @@ index 3794b19..ee872c3 100644
  
      if (con->sring) {
 diff --git a/hw/xilinx_uartlite.c b/hw/xilinx_uartlite.c
-index aa0170d..6ca45dc 100644
+index d0f32db..33f0cd5 100644
 --- a/hw/xilinx_uartlite.c
 +++ b/hw/xilinx_uartlite.c
 @@ -195,6 +195,12 @@ static void uart_event(void *opaque, int event)
@@ -737,7 +765,7 @@ index aa0170d..6ca45dc 100644
  static int xilinx_uartlite_init(SysBusDevice *dev)
  {
      struct xlx_uartlite *s = FROM_SYSBUS(typeof (*s), dev);
-@@ -206,8 +212,9 @@ static int xilinx_uartlite_init(SysBusDevice *dev)
+@@ -207,8 +213,9 @@ static int xilinx_uartlite_init(SysBusDevice *dev)
      sysbus_init_mmio(dev, &s->mmio);
  
      s->chr = qemu_char_get_next_serial();
@@ -750,10 +778,10 @@ index aa0170d..6ca45dc 100644
  }
  
 diff --git a/monitor.c b/monitor.c
-index 71f4392..116accb 100644
+index 99618a0..c020089 100644
 --- a/monitor.c
 +++ b/monitor.c
-@@ -4601,6 +4601,18 @@ static void sortcmdlist(void)
+@@ -4689,6 +4689,18 @@ static void sortcmdlist(void)
   * End:
   */
  
@@ -772,7 +800,7 @@ index 71f4392..116accb 100644
  void monitor_init(CharDriverState *chr, int flags)
  {
      static int is_first_init = 1;
-@@ -4623,12 +4635,10 @@ void monitor_init(CharDriverState *chr, int flags)
+@@ -4712,12 +4724,10 @@ void monitor_init(CharDriverState *chr, int flags)
      if (monitor_ctrl_mode(mon)) {
          mon->mc = g_malloc0(sizeof(MonitorControl));
          /* Control mode requires special handlers */
@@ -788,10 +816,10 @@ index 71f4392..116accb 100644
  
      QLIST_INSERT_HEAD(&mon_list, mon, entry);
 diff --git a/net/slirp.c b/net/slirp.c
-index 96f5032..aa8ed08 100644
+index 08adb97..f5ba440 100644
 --- a/net/slirp.c
 +++ b/net/slirp.c
-@@ -577,6 +577,11 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size)
+@@ -593,6 +593,11 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size)
      slirp_socket_recv(fwd->slirp, fwd->server, fwd->port, buf, size);
  }
  
@@ -803,18 +831,18 @@ index 96f5032..aa8ed08 100644
  static int slirp_guestfwd(SlirpState *s, const char *config_str,
                            int legacy_format)
  {
-@@ -633,8 +638,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str,
-     fwd->port = port;
-     fwd->slirp = s->slirp;
+@@ -658,8 +663,7 @@ static int slirp_guestfwd(SlirpState *s, const char *config_str,
+         fwd->port = port;
+         fwd->slirp = s->slirp;
  
--    qemu_chr_add_handlers(fwd->hd, guestfwd_can_read, guestfwd_read,
--                          NULL, fwd);
-+    qemu_chr_add_handlers(fwd->hd, &guestfwd_handlers, fwd);
+-        qemu_chr_add_handlers(fwd->hd, guestfwd_can_read, guestfwd_read,
+-                              NULL, fwd);
++        qemu_chr_add_handlers(fwd->hd, &guestfwd_handlers, fwd);
+     }
      return 0;
  
-  fail_syntax:
 diff --git a/qemu-char.c b/qemu-char.c
-index 78d2a69..86bdabf 100644
+index 132ac08..5c5ae1e 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -192,19 +192,26 @@ void qemu_chr_fe_printf(CharDriverState *s, const char *fmt, ...)
@@ -927,5 +955,5 @@ index fbfab4e..4ab5b69 100644
  
      inbuf = g_string_new("");
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch b/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch
index 7b70e2a..4dcf709 100644
--- a/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch
+++ b/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch
@@ -1,15 +1,14 @@
-From 32876859aeee3722398d98abfb6b6307e701091f Mon Sep 17 00:00:00 2001
+From 4ab66ef979faf3ad59fbf2bb8406117b657f966b Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 20:32:58 +0100
-Subject: [PATCH 103/114] iohandlers: Add enable/disable_write_fd_handler()
- functions
+Subject: [PATCH] iohandlers: Add enable/disable_write_fd_handler() functions
 
 These will be used to provide a cleaner API for the nonblocking case.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- iohandler.c |   35 +++++++++++++++++++++++++++++++++++
- main-loop.h |    3 +++
+ iohandler.c | 35 +++++++++++++++++++++++++++++++++++
+ main-loop.h |  3 +++
  2 files changed, 38 insertions(+)
 
 diff --git a/iohandler.c b/iohandler.c
@@ -73,5 +72,5 @@ index dce1cd9..eb31273 100644
   * qemu_set_fd_handler2: Register a file descriptor with the main loop
   *
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0104-char-Add-framework-for-a-write-unblocked-callback.patch b/0104-char-Add-framework-for-a-write-unblocked-callback.patch
index bea0d67..fbba8a3 100644
--- a/0104-char-Add-framework-for-a-write-unblocked-callback.patch
+++ b/0104-char-Add-framework-for-a-write-unblocked-callback.patch
@@ -1,7 +1,7 @@
-From 3def2c629b31cfc6dfe54a1a5464bb35359c3b10 Mon Sep 17 00:00:00 2001
+From 73426a9cec4f1a32553b122c78d083a297412cf4 Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 21:41:42 +0100
-Subject: [PATCH 104/114] char: Add framework for a 'write unblocked' callback
+Subject: [PATCH] char: Add framework for a 'write unblocked' callback
 
 The char layer can let users know that the driver will block on further
 input.  For users interested in not blocking, they can assign a function
@@ -11,12 +11,12 @@ future patches will enable the nonblocking and callback functionality.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- qemu-char.c |    3 +++
- qemu-char.h |    4 ++++
+ qemu-char.c | 3 +++
+ qemu-char.h | 4 ++++
  2 files changed, 7 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index 86bdabf..88cbbd0 100644
+index 5c5ae1e..1b70447 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -211,11 +211,14 @@ void qemu_chr_add_handlers(CharDriverState *s,
@@ -57,5 +57,5 @@ index dfa8c2d..b5e23a4 100644
  };
  
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch b/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch
index 1b954ef..7e91a22 100644
--- a/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch
+++ b/0105-char-Update-send_all-to-handle-nonblocking-chardev-w.patch
@@ -1,8 +1,8 @@
-From 6a36990b303dc64709931e16783e2f2e0a54b9d6 Mon Sep 17 00:00:00 2001
+From 8d1503b20a6a8f011b292c0f543acd98b4fc922e Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:00:27 +0100
-Subject: [PATCH 105/114] char: Update send_all() to handle nonblocking
- chardev write requests
+Subject: [PATCH] char: Update send_all() to handle nonblocking chardev write
+ requests
 
 The send_all function is modified to return to the caller in case the
 driver cannot handle any more data.  It returns -EAGAIN or
@@ -16,16 +16,16 @@ commits will add such capability.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- net/socket.c  |    4 ++--
- qemu-char.c   |   69 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
- qemu_socket.h |    2 +-
+ net/socket.c  |  4 ++--
+ qemu-char.c   | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
+ qemu_socket.h |  2 +-
  3 files changed, 66 insertions(+), 9 deletions(-)
 
 diff --git a/net/socket.c b/net/socket.c
-index 0bcf229..c21bb60 100644
+index c172c24..aa7c99e 100644
 --- a/net/socket.c
 +++ b/net/socket.c
-@@ -56,8 +56,8 @@ static ssize_t net_socket_receive(VLANClientState *nc, const uint8_t *buf, size_
+@@ -53,8 +53,8 @@ static ssize_t net_socket_receive(NetClientState *nc, const uint8_t *buf, size_t
      uint32_t len;
      len = htonl(size);
  
@@ -35,9 +35,9 @@ index 0bcf229..c21bb60 100644
 +    return send_all(NULL, s->fd, buf, size);
  }
  
- static ssize_t net_socket_receive_dgram(VLANClientState *nc, const uint8_t *buf, size_t size)
+ static ssize_t net_socket_receive_dgram(NetClientState *nc, const uint8_t *buf, size_t size)
 diff --git a/qemu-char.c b/qemu-char.c
-index 88cbbd0..d8059ff 100644
+index 1b70447..fbb6f5f 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -508,7 +508,7 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv)
@@ -184,5 +184,5 @@ index 4689ff3..3d780ce 100644
  /* New, ipv6-ready socket helper functions, see qemu-sockets.c */
  int inet_listen_opts(QemuOpts *opts, int port_offset, Error **errp);
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch b/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch
index c6a3987..56a7f64 100644
--- a/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch
+++ b/0106-char-Equip-the-unix-tcp-backend-to-handle-nonblockin.patch
@@ -1,8 +1,8 @@
-From bccdec085744256038f35b243853d7142b85cddb Mon Sep 17 00:00:00 2001
+From 7eab128ea16406bf450e0e53d9d629c290b317d7 Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:02:47 +0100
-Subject: [PATCH 106/114] char: Equip the unix/tcp backend to handle
- nonblocking writes#
+Subject: [PATCH] char: Equip the unix/tcp backend to handle nonblocking
+ writes#
 
 Now that the infrastructure is in place to return -EAGAIN to callers,
 individual char drivers can set their update_fd_handlers() function to
@@ -14,11 +14,11 @@ users of chardevs know that a driver became writable again.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- qemu-char.c |   34 ++++++++++++++++++++++++++++++++++
+ qemu-char.c | 34 ++++++++++++++++++++++++++++++++++
  1 file changed, 34 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index d8059ff..ed306e5 100644
+index fbb6f5f..cdc7f5c 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -106,6 +106,19 @@
@@ -77,5 +77,5 @@ index d8059ff..ed306e5 100644
      if (is_listen) {
          s->listen_fd = fd;
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0107-char-Throttle-when-host-connection-is-down.patch b/0107-char-Throttle-when-host-connection-is-down.patch
index 26755a5..8f7cf00 100644
--- a/0107-char-Throttle-when-host-connection-is-down.patch
+++ b/0107-char-Throttle-when-host-connection-is-down.patch
@@ -1,7 +1,7 @@
-From 52aef47122bcbdd556f9fd3510a2047b8f920064 Mon Sep 17 00:00:00 2001
+From a8803b2972223fea435b519272c347f164e05512 Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:05:10 +0100
-Subject: [PATCH 107/114] char: Throttle when host connection is down#
+Subject: [PATCH] char: Throttle when host connection is down#
 
 When the host-side connection goes down, throttle the virtio-serial bus
 and later unthrottle when a connection gets established.  This helps
@@ -16,11 +16,11 @@ worst case (host d/c, guest write, host connect).
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- qemu-char.c |   14 ++++++++++++++
+ qemu-char.c | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index ed306e5..c263328 100644
+index cdc7f5c..caa2efb 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -140,6 +140,9 @@ static void qemu_chr_generic_open_bh(void *opaque)
@@ -52,5 +52,5 @@ index ed306e5..c263328 100644
          return ret;
      } else {
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch b/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch
index d3e4afc..564c730 100644
--- a/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch
+++ b/0108-virtio-console-Enable-port-throttling-when-chardev-i.patch
@@ -1,8 +1,8 @@
-From 738da364d19bd99b70c79cb1174eef0e19f8e368 Mon Sep 17 00:00:00 2001
+From 596c901c52b211425afe4d40e361d3ee1e5ec4bc Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:06:41 +0100
-Subject: [PATCH 108/114] virtio-console: Enable port throttling when chardev
- is slow to consume data
+Subject: [PATCH] virtio-console: Enable port throttling when chardev is slow
+ to consume data
 
 When a chardev indicates it can't accept more data, we tell the
 virtio-serial code to stop sending us any more data till we tell
@@ -12,7 +12,7 @@ As soon as the chardev indicates it can accept more data, start pushing!
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- hw/virtio-console.c |   11 +++++++++++
+ hw/virtio-console.c | 11 +++++++++++
  1 file changed, 11 insertions(+)
 
 diff --git a/hw/virtio-console.c b/hw/virtio-console.c
@@ -45,5 +45,5 @@ index 066590c..2b5e515 100644
  
  static int virtconsole_initfn(VirtIOSerialPort *port)
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0109-spice-qemu-char.c-add-throttling.patch b/0109-spice-qemu-char.c-add-throttling.patch
index b64243e..ba22a44 100644
--- a/0109-spice-qemu-char.c-add-throttling.patch
+++ b/0109-spice-qemu-char.c-add-throttling.patch
@@ -1,7 +1,7 @@
-From 484eac58fb0cf9b0ba6d31db868a549ee8799437 Mon Sep 17 00:00:00 2001
+From 3229d4b7de0d2611db5d4282b5d720861e63a085 Mon Sep 17 00:00:00 2001
 From: Alon Levy <alevy@redhat.com>
 Date: Tue, 22 Mar 2011 12:27:59 +0200
-Subject: [PATCH 109/114] spice-qemu-char.c: add throttling
+Subject: [PATCH] spice-qemu-char.c: add throttling
 
 BZ: 672191
 
@@ -35,7 +35,7 @@ This patch relies on Amit's series to expose throttling to chardev's, which
 was not accepted upstream, and will not be accepted upstream until the mainloop
 is reworked to use glib.
 ---
- spice-qemu-char.c |   39 +++++++++++++++++++++++++++++++++++----
+ spice-qemu-char.c | 39 +++++++++++++++++++++++++++++++++++----
  1 file changed, 35 insertions(+), 4 deletions(-)
 
 diff --git a/spice-qemu-char.c b/spice-qemu-char.c
@@ -129,5 +129,5 @@ index 09aa22d..fba2bfb 100644
  #if SPICE_SERVER_VERSION < 0x000901
      /* See comment in vmc_state() */
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
index 7a49e1d..2ae877d 100644
--- a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
+++ b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
@@ -1,7 +1,7 @@
-From 606c5ed5369c862c70fa527892b808f189a2b482 Mon Sep 17 00:00:00 2001
+From 5b6e021bc56ffa305bfd68a23d7709df6856ec08 Mon Sep 17 00:00:00 2001
 From: Alon Levy <alevy@redhat.com>
 Date: Tue, 22 Mar 2011 12:28:00 +0200
-Subject: [PATCH 110/114] spice-qemu-char.c: remove intermediate buffer
+Subject: [PATCH] spice-qemu-char.c: remove intermediate buffer
 
 BZ: 672191
 upstream: not submitted (explained below)
@@ -16,7 +16,7 @@ Also make datalen int and not ssize_t (to fit spice_chr_write signature).
 This relied on the previous patch that introduces throttling, which
 can't go upstream right now as explained in that patch.
 ---
- spice-qemu-char.c |   18 ++++++------------
+ spice-qemu-char.c | 18 ++++++------------
  1 file changed, 6 insertions(+), 12 deletions(-)
 
 diff --git a/spice-qemu-char.c b/spice-qemu-char.c
@@ -67,5 +67,5 @@ index fba2bfb..ef44bc0 100644
          /* We'll get passed in the unconsumed data with the next call */
          s->datalen = 0;
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0111-usb-redir-Add-flow-control-support.patch b/0111-usb-redir-Add-flow-control-support.patch
index 8cd4d88..39d42a6 100644
--- a/0111-usb-redir-Add-flow-control-support.patch
+++ b/0111-usb-redir-Add-flow-control-support.patch
@@ -1,18 +1,18 @@
-From 2f61a7bed440164c35c739fcef10d19edef3f8ea Mon Sep 17 00:00:00 2001
+From 76cccf228dca6c73afabd7a82a576993bd15b3f1 Mon Sep 17 00:00:00 2001
 From: Hans de Goede <hdegoede@redhat.com>
 Date: Tue, 19 Jul 2011 10:56:19 +0200
-Subject: [PATCH 111/114] usb-redir: Add flow control support
+Subject: [PATCH] usb-redir: Add flow control support
 
 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 ---
- hw/usb/redirect.c |   26 ++++++++++++++++++++++++--
+ hw/usb/redirect.c | 26 ++++++++++++++++++++++++--
  1 file changed, 24 insertions(+), 2 deletions(-)
 
 diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
-index 6e8180e..5f55d78 100644
+index ecb2cd4..1460515 100644
 --- a/hw/usb/redirect.c
 +++ b/hw/usb/redirect.c
-@@ -238,12 +238,22 @@ static int usbredir_read(void *priv, uint8_t *data, int count)
+@@ -236,12 +236,22 @@ static int usbredir_read(void *priv, uint8_t *data, int count)
  static int usbredir_write(void *priv, uint8_t *data, int count)
  {
      USBRedirDevice *dev = priv;
@@ -37,7 +37,7 @@ index 6e8180e..5f55d78 100644
  }
  
  /*
-@@ -890,10 +900,22 @@ static void usbredir_chardev_event(void *opaque, int event)
+@@ -892,10 +902,22 @@ static void usbredir_chardev_event(void *opaque, int event)
      }
  }
  
@@ -61,5 +61,5 @@ index 6e8180e..5f55d78 100644
  
  /*
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0112-virtio-serial-bus-replay-guest_open-on-migration.patch b/0112-virtio-serial-bus-replay-guest_open-on-migration.patch
index e6464bd..9484195 100644
--- a/0112-virtio-serial-bus-replay-guest_open-on-migration.patch
+++ b/0112-virtio-serial-bus-replay-guest_open-on-migration.patch
@@ -1,7 +1,7 @@
-From be9fad02180478f6c9435257e6a7c29b9e4c9841 Mon Sep 17 00:00:00 2001
+From 6ed4b7c0b0ed061925036744f60e376194cd67a3 Mon Sep 17 00:00:00 2001
 From: Alon Levy <alevy@redhat.com>
 Date: Thu, 28 Jul 2011 15:08:48 +0300
-Subject: [PATCH 112/114] virtio-serial-bus: replay guest_open on migration
+Subject: [PATCH] virtio-serial-bus: replay guest_open on migration
 
 When migrating a host with with a spice agent running the mouse becomes
 non operational after the migration. This is rhbz #725965.
@@ -18,11 +18,11 @@ chardev.
 
 Signed-off-by: Alon Levy <alevy@redhat.com>
 ---
- hw/virtio-serial-bus.c |    6 ++++++
+ hw/virtio-serial-bus.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
 diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
-index 72287d1..7ea5bbf 100644
+index 82073f5..18c2ed3 100644
 --- a/hw/virtio-serial-bus.c
 +++ b/hw/virtio-serial-bus.c
 @@ -682,6 +682,7 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id)
@@ -46,5 +46,5 @@ index 72287d1..7ea5bbf 100644
          if (host_connected != port->host_connected) {
              /*
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch b/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch
index 16c547a..c246b51 100644
--- a/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch
+++ b/0113-char-Disable-write-callback-if-throttled-chardev-is-.patch
@@ -1,7 +1,7 @@
-From 303a46e3877f6d9600151fdf9719fdb2009db7ff Mon Sep 17 00:00:00 2001
+From 131729b07be897a363d8d769ecc056dabe2ed7da Mon Sep 17 00:00:00 2001
 From: Amit Shah <amit.shah@redhat.com>
 Date: Fri, 2 Dec 2011 15:42:55 +0530
-Subject: [PATCH 113/114] char: Disable write callback if throttled chardev is
+Subject: [PATCH] char: Disable write callback if throttled chardev is
  detached
 
 If a throttled chardev is detached from the frontend device, all future
@@ -12,11 +12,11 @@ Upstream: Not applicable, since throttling is a RHEL6-only feature.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
 ---
- qemu-char.c |    5 +++++
+ qemu-char.c | 5 +++++
  1 file changed, 5 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index c263328..622c388 100644
+index caa2efb..7f24878 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -223,6 +223,11 @@ void qemu_chr_add_handlers(CharDriverState *s,
@@ -32,5 +32,5 @@ index c263328..622c388 100644
      }
      s->chr_can_read = handlers->fd_can_read;
 -- 
-1.7.10.4
+1.7.11.2
 
diff --git a/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch b/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch
deleted file mode 100644
index 7273c25..0000000
--- a/0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 1271c4b3437a8bcf9b35ae8ed03be3dc758fe756 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 22 Jun 2012 09:43:08 +0200
-Subject: [PATCH] usb-redir: Correctly handle the usb_redir_babble usbredir
- status
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/usb/redirect.c |    2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
-index 5f55d78..c6358c0 100644
---- a/hw/usb/redirect.c
-+++ b/hw/usb/redirect.c
-@@ -1058,6 +1058,8 @@ static int usbredir_handle_status(USBRedirDevice *dev,
-     case usb_redir_inval:
-         WARNING("got invalid param error from usb-host?\n");
-         return USB_RET_NAK;
-+    case usb_redir_babble:
-+        return USB_RET_BABBLE;
-     case usb_redir_ioerror:
-     case usb_redir_timeout:
-     default:
--- 
-1.7.10.4
-
diff --git a/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch b/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch
deleted file mode 100644
index 0a62435..0000000
--- a/0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 050146c8b005683cbc36a837844d2d637b27100c Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Fri, 6 Jul 2012 12:04:15 +0200
-Subject: [PATCH] usb-ehci: Fix an assert whenever isoc transfers are used
-
-hcd-ehci.c is missing an usb_packet_init() call for the ipacket UsbPacket
-it uses for isoc transfers, triggering an assert (taking the entire vm down)
-in usb_packet_setup as soon as any isoc transfers are done by a high speed
-USB device.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- hw/usb/hcd-ehci.c |    1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c
-index e759c99..eaa3ddd 100644
---- a/hw/usb/hcd-ehci.c
-+++ b/hw/usb/hcd-ehci.c
-@@ -2300,6 +2300,7 @@ static int usb_ehci_initfn(PCIDevice *dev)
-     s->frame_timer = qemu_new_timer_ns(vm_clock, ehci_frame_timer, s);
-     QTAILQ_INIT(&s->aqueues);
-     QTAILQ_INIT(&s->pqueues);
-+    usb_packet_init(&s->ipacket);
- 
-     qemu_register_reset(ehci_reset, s);
- 
--- 
-1.7.10.4
-
diff --git a/qemu-fix-systemtap.patch b/qemu-fix-systemtap.patch
deleted file mode 100644
index bc8d9a4..0000000
--- a/qemu-fix-systemtap.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-commit 256a721d46a112d8807a488ec0176985c09bbbf1
-Author: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-Date:   Mon Apr 16 12:47:58 2012 +0100
-
-    tracetool: handle DTrace keywords 'in', 'next', 'self'
-    
-    Language keywords cannot be used as argument names.  The DTrace backend
-    appends an underscore to the argument name in order to make the argument
-    name legal.
-    
-    This patch adds 'in', 'next', and 'self' keywords to dtrace.py.
-    
-    Also drop the unnecessary argument name lstrip() call.  The
-    Arguments.build() method already ensures there is no space around
-    argument names.  Furthermore it is misleading to do the lstrip() *after*
-    checking against keywords because the keyword check would not match if
-    spaces were in the name.
-    
-    Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-    Reviewed-by: Alon Levy <alevy@redhat.com>
-    Reviewed-by: LluĂ­s Vilanova <vilanova@ac.upc.edu>
-
-diff --git a/scripts/tracetool/backend/dtrace.py b/scripts/tracetool/backend/dtrace.py
-index cebbd57..9cab75c 100644
---- a/scripts/tracetool/backend/dtrace.py
-+++ b/scripts/tracetool/backend/dtrace.py
-@@ -86,10 +86,10 @@ def stap(events):
-         i = 1
-         if len(e.args) > 0:
-             for name in e.args.names():
--                # 'limit' is a reserved keyword
--                if name == 'limit':
--                    name = '_limit'
--                out('  %s = $arg%d;' % (name.lstrip(), i))
-+                # Append underscore to reserved keywords
-+                if name in ('limit', 'in', 'next', 'self'):
-+                    name += '_'
-+                out('  %s = $arg%d;' % (name, i))
-                 i += 1
- 
-         out('}')
diff --git a/qemu-fix-vnc-audio.patch b/qemu-fix-vnc-audio.patch
deleted file mode 100644
index f7bc464..0000000
--- a/qemu-fix-vnc-audio.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-commit 83617103984eb4d81cf46c94435f3da2c6f33b55
-Author: malc <av1474@comtv.ru>
-Date:   Mon Jul 16 18:08:36 2012 +0400
-
-    audio: Unbreak capturing in mixemu case
-    
-    Signed-off-by: malc <av1474@comtv.ru>
-
-diff --git a/audio/audio.c b/audio/audio.c
-index 583ee51..1c77389 100644
---- a/audio/audio.c
-+++ b/audio/audio.c
-@@ -818,6 +818,7 @@ static int audio_attach_capture (HWVoiceOut *hw)
-         sw->active = hw->enabled;
-         sw->conv = noop_conv;
-         sw->ratio = ((int64_t) hw_cap->info.freq << 32) / sw->info.freq;
-+        sw->vol = nominal_volume;
-         sw->rate = st_rate_start (sw->info.freq, hw_cap->info.freq);
-         if (!sw->rate) {
-             dolog ("Could not start rate conversion for `%s'\n", SW_NAME (sw));
diff --git a/qemu.spec b/qemu.spec
index 334db42..4647a9f 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -34,11 +34,13 @@
 %bcond_without fdt              # enabled
 %endif
 
+%global gitdate 20120806
+%global gitcommit 3e430569
 
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
-Version: 1.1.1
-Release: 1%{?dist}
+Version: 1.2
+Release: 0.1.%{gitdate}git%{gitcommit}%{?dist}
 # Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
 Epoch: 2
 License: GPLv2+ and LGPLv2+ and BSD
@@ -54,7 +56,14 @@ ExclusiveArch: x86_64
 %define _smp_mflags %{nil}
 %endif
 
-Source0: http://downloads.sourceforge.net/sourceforge/kvm/qemu-kvm-%{version}.tar.gz
+# There aren't any 1.2 releases yet, so we have to pull from git:
+#
+# git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git
+# cd qemu-kvm
+# git archive -o ../qemu-kvm-%{version}-%{gitcommit}.tar.gz \
+#     --prefix=qemu-kvm-%{version}/ %{gitcommit}
+Source0: qemu-kvm-%{version}-%{gitcommit}.tar.gz
+#Source0: http://downloads.sourceforge.net/sourceforge/kvm/qemu-kvm-%{version}.tar.gz
 
 Source1: qemu.binfmt
 
@@ -75,17 +84,8 @@ Source9: ksmtuned.conf
 Source10: qemu-guest-agent.service
 Source11: 99-qemu-guest-agent.rules
 
-# Upstream patch to fix build of msi/virtio-pci.
-Patch3:   0001-kvm-Enable-use-of-kvm_irqchip_in_kernel-in-hwlib-cod.patch
-
-# Use siginfo_t instead of struct siginfo, for glibc in Rawhide.
-# Sent upstream 2012-07-05.
-Patch4:   0001-Replace-struct-siginfo-with-siginfo_t.patch
-
-# Patch to fix default machine options.
-# http://www.spinics.net/lists/kvm/msg75509.html
-# Sent upstream by danpb on 2012-07-06.
-Patch5:   0001-qemu-kvm-Fix-default-machine-options.patch
+# Non upstream build fix
+Patch1: 0001-mips-Fix-link-error-with-piix4_pm_init.patch
 
 # The infamous chardev flow control patches
 Patch101: 0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
@@ -102,14 +102,13 @@ Patch111: 0111-usb-redir-Add-flow-control-support.patch
 Patch112: 0112-virtio-serial-bus-replay-guest_open-on-migration.patch
 Patch113: 0113-char-Disable-write-callback-if-throttled-chardev-is-.patch
 
-# USB-redir bugfixes
-Patch201: 0201-usb-redir-Correctly-handle-the-usb_redir_babble-usbr.patch
-Patch202: 0202-usb-ehci-Fix-an-assert-whenever-isoc-transfers-are-u.patch
-
-# Fix VNC audio tunnelling (bz 840653)
-Patch203: %{name}-fix-vnc-audio.patch
-
-BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel
+BuildRequires: SDL-devel
+BuildRequires: zlib-devel
+BuildRequires: which
+BuildRequires: texi2html
+BuildRequires: gnutls-devel
+BuildRequires: cyrus-sasl-devel
+BuildRequires: libtool
 BuildRequires: libaio-devel
 BuildRequires: rsync
 BuildRequires: pciutils-devel
@@ -362,9 +361,8 @@ such as kvm_stat.
 
 %prep
 %setup -q -n qemu-kvm-%{version}
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
+
+%patch1 -p1
 
 %patch101 -p1
 %patch102 -p1
@@ -380,11 +378,6 @@ such as kvm_stat.
 %patch112 -p1
 %patch113 -p1
 
-%patch201 -p1
-%patch202 -p1
-
-%patch203 -p1
-
 
 %build
 # By default we build everything, but allow x86 to build a minimal version
@@ -754,7 +747,6 @@ fi
 %{_datadir}/%{name}/sgabios.bin
 %{_datadir}/%{name}/linuxboot.bin
 %{_datadir}/%{name}/multiboot.bin
-%{_datadir}/%{name}/mpc8544ds.dtb
 %{_datadir}/%{name}/kvmvapic.bin
 %{_datadir}/%{name}/vgabios.bin
 %{_datadir}/%{name}/vgabios-cirrus.bin
@@ -826,9 +818,13 @@ fi
 %defattr(-,root,root)
 %{_bindir}/qemu-img
 %{_bindir}/qemu-io
+%{_bindir}/vscclient
 %{_mandir}/man1/qemu-img.1*
 
 %changelog
+* Mon Aug 06 2012 Cole Robinson <crobinso@redhat.com> - 1.2-0.1.20120806git3e430569.fc18
+- Update to git snapshot
+
 * Sun Jul 29 2012 Cole Robinson <crobinso@redhat.com> - 1.1.1-1
 - Upstream stable release 1.1.1
 - Fix systemtap tapsets (bz 831763)