diff --git a/.gitignore b/.gitignore
index 8d52685..0ad020f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ qemu-kvm-0.13.0-25fdf4a.tar.gz
 /qemu-kvm-1.1.1.tar.gz
 /qemu-1.2-0.1.20120806git3e430569.fc18.src.rpm
 /qemu-kvm-1.2-3e430569.tar.gz
+/qemu-kvm-1.2.0-rc1.tar.gz
diff --git a/0001-mips-Fix-link-error-with-piix4_pm_init.patch b/0001-mips-Fix-link-error-with-piix4_pm_init.patch
index 03c79c8..723524c 100644
--- a/0001-mips-Fix-link-error-with-piix4_pm_init.patch
+++ b/0001-mips-Fix-link-error-with-piix4_pm_init.patch
@@ -1,4 +1,4 @@
-From 2852820d9d765141c9bae0f586c9b782258fb07d Mon Sep 17 00:00:00 2001
+From 4ba58730950a376dfb9f0424acb2b2cc3fbeda4f 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'
@@ -7,6 +7,8 @@ Subject: [PATCH] mips: Fix link error with 'piix4_pm_init'
   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'
+
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  hw/mips/Makefile.objs | 1 +
  1 file changed, 1 insertion(+)
diff --git a/0001-virtio-fix-vhost-handling.patch b/0001-virtio-fix-vhost-handling.patch
deleted file mode 100644
index 3b50ede..0000000
--- a/0001-virtio-fix-vhost-handling.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 26b9b5fe17cc1b6be2e8bf8b9d16094f420bb8ad Mon Sep 17 00:00:00 2001
-From: Paolo Bonzini <pbonzini@redhat.com>
-Date: Mon, 6 Aug 2012 15:26:14 +0200
-Subject: [PATCH] virtio: fix vhost handling
-
-Commit b1f416aa8d870fab71030abc9401cfc77b948e8e breaks vhost_net
-because it always registers the virtio_pci_host_notifier_read() handler
-function on the ioeventfd, even when vhost_net.ko is using the ioeventfd.
-The result is both QEMU and vhost_net.ko polling on the same eventfd
-and the virtio_net.ko guest driver seeing inconsistent results:
-
-  # ifconfig eth0 192.168.0.1 netmask 255.255.255.0
-  virtio_net virtio0: output:id 0 is not a head!
-
-To fix this, proceed the same as we do for irqfd: add a parameter to
-virtio_queue_set_host_notifier_fd_handler and in that case only set
-the notifier, not the handler.
-
-Cc: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-Tested-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
----
- hw/virtio-pci.c |   14 +++++++-------
- hw/virtio.c     |    7 +++++--
- hw/virtio.h     |    3 ++-
- 3 files changed, 14 insertions(+), 10 deletions(-)
-
-diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
-index 3ab9747..125eded 100644
---- a/hw/virtio-pci.c
-+++ b/hw/virtio-pci.c
-@@ -160,7 +160,7 @@ static int virtio_pci_load_queue(void * opaque, int n, QEMUFile *f)
- }
- 
- static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy,
--                                                 int n, bool assign)
-+                                                 int n, bool assign, bool set_handler)
- {
-     VirtQueue *vq = virtio_get_queue(proxy->vdev, n);
-     EventNotifier *notifier = virtio_queue_get_host_notifier(vq);
-@@ -173,13 +173,13 @@ static int virtio_pci_set_host_notifier_internal(VirtIOPCIProxy *proxy,
-                          __func__, r);
-             return r;
-         }
--        virtio_queue_set_host_notifier_fd_handler(vq, true);
-+        virtio_queue_set_host_notifier_fd_handler(vq, true, set_handler);
-         memory_region_add_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,
-                                   true, n, notifier);
-     } else {
-         memory_region_del_eventfd(&proxy->bar, VIRTIO_PCI_QUEUE_NOTIFY, 2,
-                                   true, n, notifier);
--        virtio_queue_set_host_notifier_fd_handler(vq, false);
-+        virtio_queue_set_host_notifier_fd_handler(vq, false, false);
-         event_notifier_cleanup(notifier);
-     }
-     return r;
-@@ -200,7 +200,7 @@ static void virtio_pci_start_ioeventfd(VirtIOPCIProxy *proxy)
-             continue;
-         }
- 
--        r = virtio_pci_set_host_notifier_internal(proxy, n, true);
-+        r = virtio_pci_set_host_notifier_internal(proxy, n, true, true);
-         if (r < 0) {
-             goto assign_error;
-         }
-@@ -214,7 +214,7 @@ assign_error:
-             continue;
-         }
- 
--        r = virtio_pci_set_host_notifier_internal(proxy, n, false);
-+        r = virtio_pci_set_host_notifier_internal(proxy, n, false, false);
-         assert(r >= 0);
-     }
-     proxy->ioeventfd_started = false;
-@@ -235,7 +235,7 @@ static void virtio_pci_stop_ioeventfd(VirtIOPCIProxy *proxy)
-             continue;
-         }
- 
--        r = virtio_pci_set_host_notifier_internal(proxy, n, false);
-+        r = virtio_pci_set_host_notifier_internal(proxy, n, false, false);
-         assert(r >= 0);
-     }
-     proxy->ioeventfd_started = false;
-@@ -683,7 +683,7 @@ static int virtio_pci_set_host_notifier(void *opaque, int n, bool assign)
-      * currently only stops on status change away from ok,
-      * reset, vmstop and such. If we do add code to start here,
-      * need to check vmstate, device state etc. */
--    return virtio_pci_set_host_notifier_internal(proxy, n, assign);
-+    return virtio_pci_set_host_notifier_internal(proxy, n, assign, false);
- }
- 
- static void virtio_pci_vmstate_change(void *opaque, bool running)
-diff --git a/hw/virtio.c b/hw/virtio.c
-index d146f86..209c763 100644
---- a/hw/virtio.c
-+++ b/hw/virtio.c
-@@ -1021,13 +1021,16 @@ static void virtio_queue_host_notifier_read(EventNotifier *n)
-     }
- }
- 
--void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign)
-+void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
-+                                               bool set_handler)
- {
--    if (assign) {
-+    if (assign && set_handler) {
-         event_notifier_set_handler(&vq->host_notifier,
-                                    virtio_queue_host_notifier_read);
-     } else {
-         event_notifier_set_handler(&vq->host_notifier, NULL);
-+    }
-+    if (!assign) {
-         /* Test and clear notifier before after disabling event,
-          * in case poll callback didn't have time to run. */
-         virtio_queue_host_notifier_read(&vq->host_notifier);
-diff --git a/hw/virtio.h b/hw/virtio.h
-index f8b5535..7a4f564 100644
---- a/hw/virtio.h
-+++ b/hw/virtio.h
-@@ -233,7 +233,8 @@ EventNotifier *virtio_queue_get_guest_notifier(VirtQueue *vq);
- void virtio_queue_set_guest_notifier_fd_handler(VirtQueue *vq, bool assign,
-                                                 bool with_irqfd);
- EventNotifier *virtio_queue_get_host_notifier(VirtQueue *vq);
--void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign);
-+void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
-+                                               bool set_handler);
- void virtio_queue_notify_vq(VirtQueue *vq);
- void virtio_irq(VirtQueue *vq);
- #endif
--- 
-1.7.10.4
-
diff --git a/0002-configure-Add-disable-kvm-options.patch b/0002-configure-Add-disable-kvm-options.patch
index 9a0e5f1..4108dea 100644
--- a/0002-configure-Add-disable-kvm-options.patch
+++ b/0002-configure-Add-disable-kvm-options.patch
@@ -1,4 +1,4 @@
-From b652c0572859e594fe8d1fc9fd2289126a4c3a1b Mon Sep 17 00:00:00 2001
+From 7b9b4ec74c7c0f63672d3aa627d7b153b71ba427 Mon Sep 17 00:00:00 2001
 From: Cole Robinson <crobinso@redhat.com>
 Date: Mon, 13 Aug 2012 18:39:54 -0400
 Subject: [PATCH] configure: Add --disable-kvm-options
@@ -18,18 +18,18 @@ Signed-off-by: Cole Robinson <crobinso@redhat.com>
  1 file changed, 10 insertions(+), 1 deletion(-)
 
 diff --git a/configure b/configure
-index 6b66d34..8f4d9e3 100755
+index bf3acc8..cf2dc9f 100755
 --- a/configure
 +++ b/configure
-@@ -189,6 +189,7 @@ guest_base=""
+@@ -211,6 +211,7 @@ bsd_user="no"
+ guest_base=""
  uname_release=""
  mixemu="no"
- kvm_cap_device_assignment="yes"
 +kvmoptions="yes"
  aix="no"
  blobs="yes"
  pkgversion=" ($(kvm_version))"
-@@ -707,6 +708,8 @@ for opt do
+@@ -747,6 +748,8 @@ for opt do
    ;;
    --enable-kvm) kvm="yes"
    ;;
@@ -38,24 +38,24 @@ index 6b66d34..8f4d9e3 100755
    --disable-tcg-interpreter) tcg_interpreter="no"
    ;;
    --enable-tcg-interpreter) tcg_interpreter="yes"
-@@ -1071,6 +1074,8 @@ echo "  --enable-bluez           enable bluez stack connectivity"
+@@ -1113,6 +1116,8 @@ echo "  --enable-bluez           enable bluez stack connectivity"
  echo "  --disable-slirp          disable SLIRP userspace network connectivity"
  echo "  --disable-kvm            disable KVM acceleration support"
  echo "  --enable-kvm             enable KVM acceleration support"
 +echo "  --disable-kvm-options    if KVM is enabled, default to KVM=off, and"
 +echo "                           remove non-upstream cli options"
  echo "  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)"
- echo "  --disable-kvm-device-assignment  disable KVM device assignment support"
- echo "  --enable-kvm-device-assignment   enable KVM device assignment support"
-@@ -3101,6 +3106,7 @@ echo "Install blobs     $blobs"
+ echo "  --disable-nptl           disable usermode NPTL support"
+ echo "  --enable-nptl            enable usermode NPTL support"
+@@ -3156,6 +3161,7 @@ echo "ATTR/XATTR support $attr"
+ echo "Install blobs     $blobs"
  echo "KVM support       $kvm"
  echo "TCG interpreter   $tcg_interpreter"
- echo "KVM device assig. $kvm_cap_device_assignment"
 +echo "KVM CLI options   $kvmoptions"
  echo "fdt support       $fdt"
  echo "preadv support    $preadv"
  echo "fdatasync         $fdatasync"
-@@ -3818,7 +3824,10 @@ case "$target_arch2" in
+@@ -3889,7 +3895,10 @@ case "$target_arch2" in
        \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
        \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
        echo "CONFIG_KVM=y" >> $config_target_mak
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 f8d08fe..ea8dfc8 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,20 +1,23 @@
-From 618a5f8a10c69813dddd86d966ff1778f22ab456 Mon Sep 17 00:00:00 2001
+From 90a59d545ad6759c105b0bfcfca70f574482584f Mon Sep 17 00:00:00 2001
+Message-Id: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 21:57:47 +0100
-Subject: [PATCH] char: Split out tcp socket close code in a separate function
+Subject: [PATCH 101/114] char: Split out tcp socket close code in a separate
+ function
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  qemu-char.c | 25 ++++++++++++++++---------
  1 file changed, 16 insertions(+), 9 deletions(-)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index c2aaaee..132ac08 100644
+index 398baf1..8c53c05 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
-@@ -2141,6 +2141,21 @@ typedef struct {
+@@ -2143,6 +2143,21 @@ static void tcp_chr_accept(void *opaque);
  
- static void tcp_chr_accept(void *opaque);
+ static void tcp_chr_connect(void *opaque);
  
 +static void tcp_closed(void *opaque)
 +{
@@ -34,7 +37,7 @@ index c2aaaee..132ac08 100644
  static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
  {
      TCPCharDriver *s = chr->opaque;
-@@ -2291,15 +2306,7 @@ static void tcp_chr_read(void *opaque)
+@@ -2302,15 +2317,7 @@ static void tcp_chr_read(void *opaque)
          len = s->max_size;
      size = tcp_chr_recv(chr, (void *)buf, len);
      if (size == 0) {
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 113d521..cd48ce3 100644
--- a/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
+++ b/0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
@@ -1,13 +1,17 @@
-From 58011a6f6c7c284f6532486f819b5895be9b76c7 Mon Sep 17 00:00:00 2001
+From 25533bd7228f5cd62499a26ba5e32be024002beb Mon Sep 17 00:00:00 2001
+Message-Id: <25533bd7228f5cd62499a26ba5e32be024002beb.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 20:31:45 +0100
-Subject: [PATCH] char: Add a QemuChrHandlers struct to initialise chardev
- handlers
+Subject: [PATCH 102/114] 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>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  gdbstub.c               |  9 +++++++--
  hw/cadence_uart.c       |  9 +++++++--
@@ -278,7 +282,7 @@ index d4eae43..f2304d2 100644
          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 0c58161..f9a7fe8 100644
+index b4d65a6..f20a356 100644
 --- a/hw/ivshmem.c
 +++ b/hw/ivshmem.c
 @@ -273,6 +273,18 @@ static void fake_irqfd(void *opaque, const uint8_t *buf, int size) {
@@ -328,7 +332,7 @@ index 0c58161..f9a7fe8 100644
  static int pci_ivshmem_init(PCIDevice *dev)
  {
      IVShmemState *s = DO_UPCAST(IVShmemState, dev, dev);
-@@ -730,8 +747,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
+@@ -731,8 +748,7 @@ static int pci_ivshmem_init(PCIDevice *dev)
  
          s->eventfd_chr = g_malloc0(s->vectors * sizeof(CharDriverState *));
  
@@ -571,7 +575,7 @@ index 1d1883d..ce1c765 100644
      s->eri = eri_source;
      s->rxi = rxi_source;
 diff --git a/hw/spapr_vty.c b/hw/spapr_vty.c
-index 99e52cc..e7cb84f 100644
+index 5da17a3..6c2ada1 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)
@@ -778,10 +782,10 @@ index d0f32db..33f0cd5 100644
  }
  
 diff --git a/monitor.c b/monitor.c
-index 99618a0..c020089 100644
+index 29e4287..c14698d 100644
 --- a/monitor.c
 +++ b/monitor.c
-@@ -4689,6 +4689,18 @@ static void sortcmdlist(void)
+@@ -4941,6 +4941,18 @@ static void sortcmdlist(void)
   * End:
   */
  
@@ -800,7 +804,7 @@ index 99618a0..c020089 100644
  void monitor_init(CharDriverState *chr, int flags)
  {
      static int is_first_init = 1;
-@@ -4712,12 +4724,10 @@ void monitor_init(CharDriverState *chr, int flags)
+@@ -4964,14 +4976,12 @@ void monitor_init(CharDriverState *chr, int flags)
      if (monitor_ctrl_mode(mon)) {
          mon->mc = g_malloc0(sizeof(MonitorControl));
          /* Control mode requires special handlers */
@@ -808,6 +812,8 @@ index 99618a0..c020089 100644
 -                              monitor_control_event, mon);
 +        qemu_chr_add_handlers(chr, &monitor_control_handlers, mon);
          qemu_chr_fe_set_echo(chr, true);
+ 
+         json_message_parser_init(&mon->mc->parser, handle_qmp_command);
      } else {
 -        qemu_chr_add_handlers(chr, monitor_can_read, monitor_read,
 -                              monitor_event, mon);
@@ -816,7 +822,7 @@ index 99618a0..c020089 100644
  
      QLIST_INSERT_HEAD(&mon_list, mon, entry);
 diff --git a/net/slirp.c b/net/slirp.c
-index 08adb97..f5ba440 100644
+index 8db66ea..63542cb 100644
 --- a/net/slirp.c
 +++ b/net/slirp.c
 @@ -593,6 +593,11 @@ static void guestfwd_read(void *opaque, const uint8_t *buf, int size)
@@ -842,7 +848,7 @@ index 08adb97..f5ba440 100644
      return 0;
  
 diff --git a/qemu-char.c b/qemu-char.c
-index 132ac08..5c5ae1e 100644
+index 8c53c05..19ae993 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -192,19 +192,26 @@ void qemu_chr_fe_printf(CharDriverState *s, const char *fmt, ...)
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 4dcf709..060937e 100644
--- a/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch
+++ b/0103-iohandlers-Add-enable-disable_write_fd_handler-funct.patch
@@ -1,18 +1,23 @@
-From 4ab66ef979faf3ad59fbf2bb8406117b657f966b Mon Sep 17 00:00:00 2001
+From 1980701650660459d35db0f956f536c8790e2056 Mon Sep 17 00:00:00 2001
+Message-Id: <1980701650660459d35db0f956f536c8790e2056.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 20:32:58 +0100
-Subject: [PATCH] iohandlers: Add enable/disable_write_fd_handler() functions
+Subject: [PATCH 103/114] 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>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  iohandler.c | 35 +++++++++++++++++++++++++++++++++++
  main-loop.h |  3 +++
  2 files changed, 38 insertions(+)
 
 diff --git a/iohandler.c b/iohandler.c
-index 3c74de6..250fd0e 100644
+index dea4355..e663f83 100644
 --- a/iohandler.c
 +++ b/iohandler.c
 @@ -45,6 +45,41 @@ typedef struct IOHandlerRecord {
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 fbba8a3..aed649e 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,10 @@
-From 73426a9cec4f1a32553b122c78d083a297412cf4 Mon Sep 17 00:00:00 2001
+From 8767b055fe84811f1caec3854b55a5d5541f72c9 Mon Sep 17 00:00:00 2001
+Message-Id: <8767b055fe84811f1caec3854b55a5d5541f72c9.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 21:41:42 +0100
-Subject: [PATCH] char: Add framework for a 'write unblocked' callback
+Subject: [PATCH 104/114] 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
@@ -10,13 +13,14 @@ patch just adds the function pointers to the CharDriverState structure,
 future patches will enable the nonblocking and callback functionality.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  qemu-char.c | 3 +++
  qemu-char.h | 4 ++++
  2 files changed, 7 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index 5c5ae1e..1b70447 100644
+index 19ae993..2c573fb 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -211,11 +211,14 @@ void qemu_chr_add_handlers(CharDriverState *s,
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 7e91a22..6d6f3ed 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,11 @@
-From 8d1503b20a6a8f011b292c0f543acd98b4fc922e Mon Sep 17 00:00:00 2001
+From 1af0111d871f088f25e7854fe61302e1909ba4c4 Mon Sep 17 00:00:00 2001
+Message-Id: <1af0111d871f088f25e7854fe61302e1909ba4c4.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:00:27 +0100
-Subject: [PATCH] char: Update send_all() to handle nonblocking chardev write
- requests
+Subject: [PATCH 105/114] 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
@@ -15,6 +18,7 @@ Currently there's no driver or caller that supports this.  Future
 commits will add such capability.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  net/socket.c  |  4 ++--
  qemu-char.c   | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
@@ -37,7 +41,7 @@ index c172c24..aa7c99e 100644
  
  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 1b70447..fbb6f5f 100644
+index 2c573fb..c2a3138 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -508,7 +508,7 @@ static CharDriverState *qemu_chr_open_mux(CharDriverState *drv)
@@ -153,7 +157,7 @@ index 1b70447..fbb6f5f 100644
  }
  
  static int pty_chr_read_poll(void *opaque)
-@@ -2174,8 +2224,15 @@ static void tcp_closed(void *opaque)
+@@ -2176,8 +2226,15 @@ static void tcp_closed(void *opaque)
  static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
  {
      TCPCharDriver *s = chr->opaque;
@@ -168,10 +172,10 @@ index 1b70447..fbb6f5f 100644
 +        }
 +        return ret;
      } else {
-         /* XXX: indicate an error ? */
-         return len;
+         /* (Re-)connect for unconnected writing */
+         tcp_chr_connect(chr);
 diff --git a/qemu_socket.h b/qemu_socket.h
-index 4689ff3..3d780ce 100644
+index 30ae6af..fc58c8d 100644
 --- a/qemu_socket.h
 +++ b/qemu_socket.h
 @@ -36,7 +36,7 @@ int qemu_accept(int s, struct sockaddr *addr, socklen_t *addrlen);
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 56a7f64..a3ddec7 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,11 @@
-From 7eab128ea16406bf450e0e53d9d629c290b317d7 Mon Sep 17 00:00:00 2001
+From 2fa4be9d3b84d214f4ea9da8513ef664f412ad09 Mon Sep 17 00:00:00 2001
+Message-Id: <2fa4be9d3b84d214f4ea9da8513ef664f412ad09.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:02:47 +0100
-Subject: [PATCH] char: Equip the unix/tcp backend to handle nonblocking
- writes#
+Subject: [PATCH 106/114] 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
@@ -13,12 +16,13 @@ A generic callback routine is used for unblocking writes and letting
 users of chardevs know that a driver became writable again.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  qemu-char.c | 34 ++++++++++++++++++++++++++++++++++
  1 file changed, 34 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index fbb6f5f..cdc7f5c 100644
+index c2a3138..5e136fd 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -106,6 +106,19 @@
@@ -41,7 +45,7 @@ index fbb6f5f..cdc7f5c 100644
  void qemu_chr_be_event(CharDriverState *s, int event)
  {
      /* Keep track if the char device is open */
-@@ -2493,6 +2506,25 @@ static void tcp_chr_close(CharDriverState *chr)
+@@ -2504,6 +2517,25 @@ static void tcp_chr_close(CharDriverState *chr)
      qemu_chr_be_event(chr, CHR_EVENT_CLOSED);
  }
  
@@ -67,7 +71,7 @@ index fbb6f5f..cdc7f5c 100644
  static CharDriverState *qemu_chr_open_socket(QemuOpts *opts)
  {
      CharDriverState *chr = NULL;
-@@ -2547,6 +2579,8 @@ static CharDriverState *qemu_chr_open_socket(QemuOpts *opts)
+@@ -2558,6 +2590,8 @@ static CharDriverState *qemu_chr_open_socket(QemuOpts *opts)
      chr->chr_close = tcp_chr_close;
      chr->get_msgfd = tcp_get_msgfd;
      chr->chr_add_client = tcp_chr_add_client;
diff --git a/0107-char-Throttle-when-host-connection-is-down.patch b/0107-char-Throttle-when-host-connection-is-down.patch
index 8f7cf00..ba767b6 100644
--- a/0107-char-Throttle-when-host-connection-is-down.patch
+++ b/0107-char-Throttle-when-host-connection-is-down.patch
@@ -1,7 +1,10 @@
-From a8803b2972223fea435b519272c347f164e05512 Mon Sep 17 00:00:00 2001
+From 33883808e5203f398ceac6eaf0b6647326df9c1f Mon Sep 17 00:00:00 2001
+Message-Id: <33883808e5203f398ceac6eaf0b6647326df9c1f.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:05:10 +0100
-Subject: [PATCH] char: Throttle when host connection is down#
+Subject: [PATCH 107/114] 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
@@ -15,12 +18,13 @@ sent earlier for that bug, one write will end up getting lost in the
 worst case (host d/c, guest write, host connect).
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  qemu-char.c | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index cdc7f5c..caa2efb 100644
+index 5e136fd..d86ee88 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -140,6 +140,9 @@ static void qemu_chr_generic_open_bh(void *opaque)
@@ -33,7 +37,7 @@ index cdc7f5c..caa2efb 100644
      qemu_bh_delete(s->bh);
      s->bh = NULL;
  }
-@@ -2244,6 +2247,17 @@ static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
+@@ -2246,6 +2249,17 @@ static int tcp_chr_write(CharDriverState *chr, const uint8_t *buf, int len)
          ret = send_all(chr, s->fd, buf, len);
          if (ret == -1 && errno == EPIPE) {
              tcp_closed(chr);
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 564c730..a9dab46 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,11 @@
-From 596c901c52b211425afe4d40e361d3ee1e5ec4bc Mon Sep 17 00:00:00 2001
+From 675cb3b8588b2ad494b304998bbf035144ed99be Mon Sep 17 00:00:00 2001
+Message-Id: <675cb3b8588b2ad494b304998bbf035144ed99be.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Mon, 21 Mar 2011 22:06:41 +0100
-Subject: [PATCH] virtio-console: Enable port throttling when chardev is slow
- to consume data
+Subject: [PATCH 108/114] 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
@@ -11,6 +14,7 @@ keeps getting full and eventually the guest stops queueing more data.
 As soon as the chardev indicates it can accept more data, start pushing!
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  hw/virtio-console.c | 11 +++++++++++
  1 file changed, 11 insertions(+)
diff --git a/0109-spice-qemu-char.c-add-throttling.patch b/0109-spice-qemu-char.c-add-throttling.patch
index ba22a44..950f861 100644
--- a/0109-spice-qemu-char.c-add-throttling.patch
+++ b/0109-spice-qemu-char.c-add-throttling.patch
@@ -1,7 +1,10 @@
-From 3229d4b7de0d2611db5d4282b5d720861e63a085 Mon Sep 17 00:00:00 2001
+From 3f1c594ea851fdee517a824b1eed3e034cd051ec Mon Sep 17 00:00:00 2001
+Message-Id: <3f1c594ea851fdee517a824b1eed3e034cd051ec.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Alon Levy <alevy@redhat.com>
 Date: Tue, 22 Mar 2011 12:27:59 +0200
-Subject: [PATCH] spice-qemu-char.c: add throttling
+Subject: [PATCH 109/114] spice-qemu-char.c: add throttling
 
 BZ: 672191
 
@@ -34,6 +37,8 @@ next vmc_read.
 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.
+
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  spice-qemu-char.c | 39 +++++++++++++++++++++++++++++++++++----
  1 file changed, 35 insertions(+), 4 deletions(-)
diff --git a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
index 2ae877d..395019b 100644
--- a/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
+++ b/0110-spice-qemu-char.c-remove-intermediate-buffer.patch
@@ -1,7 +1,10 @@
-From 5b6e021bc56ffa305bfd68a23d7709df6856ec08 Mon Sep 17 00:00:00 2001
+From 682f29243b10ace00a42fed9920a94938abe2706 Mon Sep 17 00:00:00 2001
+Message-Id: <682f29243b10ace00a42fed9920a94938abe2706.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Alon Levy <alevy@redhat.com>
 Date: Tue, 22 Mar 2011 12:28:00 +0200
-Subject: [PATCH] spice-qemu-char.c: remove intermediate buffer
+Subject: [PATCH 110/114] spice-qemu-char.c: remove intermediate buffer
 
 BZ: 672191
 upstream: not submitted (explained below)
@@ -15,6 +18,8 @@ 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.
+
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  spice-qemu-char.c | 18 ++++++------------
  1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/0111-usb-redir-Add-flow-control-support.patch b/0111-usb-redir-Add-flow-control-support.patch
index 39d42a6..3edcd1a 100644
--- a/0111-usb-redir-Add-flow-control-support.patch
+++ b/0111-usb-redir-Add-flow-control-support.patch
@@ -1,9 +1,13 @@
-From 76cccf228dca6c73afabd7a82a576993bd15b3f1 Mon Sep 17 00:00:00 2001
+From 70a31fcb3f1238e92279cdc023b83ba3a3042cff Mon Sep 17 00:00:00 2001
+Message-Id: <70a31fcb3f1238e92279cdc023b83ba3a3042cff.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Hans de Goede <hdegoede@redhat.com>
 Date: Tue, 19 Jul 2011 10:56:19 +0200
-Subject: [PATCH] usb-redir: Add flow control support
+Subject: [PATCH 111/114] usb-redir: Add flow control support
 
 Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  hw/usb/redirect.c | 26 ++++++++++++++++++++++++--
  1 file changed, 24 insertions(+), 2 deletions(-)
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 9484195..1398ec1 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,10 @@
-From 6ed4b7c0b0ed061925036744f60e376194cd67a3 Mon Sep 17 00:00:00 2001
+From 452bc9fd704b7f51a63effb05c9283a9aaf7bc99 Mon Sep 17 00:00:00 2001
+Message-Id: <452bc9fd704b7f51a63effb05c9283a9aaf7bc99.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Alon Levy <alevy@redhat.com>
 Date: Thu, 28 Jul 2011 15:08:48 +0300
-Subject: [PATCH] virtio-serial-bus: replay guest_open on migration
+Subject: [PATCH 112/114] 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.
@@ -17,6 +20,7 @@ already carry the guest_connected state. This patch passes that bit to the
 chardev.
 
 Signed-off-by: Alon Levy <alevy@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  hw/virtio-serial-bus.c | 6 ++++++
  1 file changed, 6 insertions(+)
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 c246b51..4f449bb 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,10 @@
-From 131729b07be897a363d8d769ecc056dabe2ed7da Mon Sep 17 00:00:00 2001
+From 34b7ca715ee45925b76fbeb23a24c16015adba33 Mon Sep 17 00:00:00 2001
+Message-Id: <34b7ca715ee45925b76fbeb23a24c16015adba33.1346162949.git.crobinso@redhat.com>
+In-Reply-To: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
+References: <90a59d545ad6759c105b0bfcfca70f574482584f.1346162949.git.crobinso@redhat.com>
 From: Amit Shah <amit.shah@redhat.com>
 Date: Fri, 2 Dec 2011 15:42:55 +0530
-Subject: [PATCH] char: Disable write callback if throttled chardev is
+Subject: [PATCH 113/114] char: Disable write callback if throttled chardev is
  detached
 
 If a throttled chardev is detached from the frontend device, all future
@@ -11,12 +14,13 @@ Bugzilla: 745758
 Upstream: Not applicable, since throttling is a RHEL6-only feature.
 
 Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Cole Robinson <crobinso@redhat.com>
 ---
  qemu-char.c | 5 +++++
  1 file changed, 5 insertions(+)
 
 diff --git a/qemu-char.c b/qemu-char.c
-index caa2efb..7f24878 100644
+index d86ee88..9defbec 100644
 --- a/qemu-char.c
 +++ b/qemu-char.c
 @@ -223,6 +223,11 @@ void qemu_chr_add_handlers(CharDriverState *s,
diff --git a/qemu.spec b/qemu.spec
index 57bcacd..5e97b82 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -34,13 +34,12 @@
 %bcond_without fdt              # enabled
 %endif
 
-%global gitdate 20120806
-%global gitcommit 3e430569
+%global rcversion rc1
 
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
-Version: 1.2
-Release: 0.3.%{gitdate}git%{gitcommit}%{?dist}
+Version: 1.2.0
+Release: 0.4.%{rcversion}%{?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
@@ -56,14 +55,7 @@ ExclusiveArch: x86_64
 %define _smp_mflags %{nil}
 %endif
 
-# 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
+Source0: http://downloads.sourceforge.net/sourceforge/kvm/qemu-kvm-%{version}-%{rcversion}.tar.gz
 
 Source1: qemu.binfmt
 
@@ -88,12 +80,9 @@ Source11: 99-qemu-guest-agent.rules
 Patch1: 0001-mips-Fix-link-error-with-piix4_pm_init.patch
 
 # Add ./configure --disable-kvm-options
-# Sent upstream on August 13 2012
+# keep: Carrying locally until qemu-kvm is fully merged into qemu.git
 Patch2: 0002-configure-Add-disable-kvm-options.patch
 
-# Fix broken vhost-net (upstream).
-Patch3: 0001-virtio-fix-vhost-handling.patch
-
 # The infamous chardev flow control patches
 Patch101: 0101-char-Split-out-tcp-socket-close-code-in-a-separate-f.patch
 Patch102: 0102-char-Add-a-QemuChrHandlers-struct-to-initialise-char.patch
@@ -127,6 +116,7 @@ BuildRequires: texinfo
 %ifarch %{ix86} x86_64
 BuildRequires: spice-protocol >= 0.8.1
 BuildRequires: spice-server-devel >= 0.9.0
+BuildRequires: libseccomp-devel >= 1.0.0
 %endif
 # For network block driver
 BuildRequires: libcurl-devel
@@ -287,6 +277,9 @@ Requires: vgabios >= 0.6c-2
 Requires: seabios-bin >= 0.6.0-2
 Requires: sgabios-bin
 Requires: ipxe-roms-qemu
+%ifarch %{ix86} x86_64
+Requires: libseccomp >= 1.0.0
+%endif
 
 %description system-x86
 QEMU is a generic and open source processor emulator which achieves a good
@@ -382,11 +375,10 @@ such as kvm_stat.
 %endif
 
 %prep
-%setup -q -n qemu-kvm-%{version}
+%setup -q -n qemu-kvm-%{version}-%{rcversion}
 
 %patch1 -p1
 %patch2 -p1
-%patch3 -p1
 
 %patch101 -p1
 %patch102 -p1
@@ -446,6 +438,7 @@ dobuild() {
 %ifarch %{ix86} x86_64
         --enable-spice \
         --enable-mixemu \
+        --enable-seccomp \
 %endif
 %if %{without rbd}
         --disable-rbd \
@@ -878,6 +871,9 @@ fi
 %{_mandir}/man1/qemu-img.1*
 
 %changelog
+* Tue Aug 28 2012 Cole Robinson <crobinso@redhat.com> 1.2.0-0.4.rc1
+- Update to 1.2.0-rc1
+
 * Mon Aug 20 2012 Richard W.M. Jones <rjones@redhat.com> - 1.2-0.3.20120806git3e430569
 - Backport Bonzini's vhost-net fix (RHBZ#848400).
 
diff --git a/sources b/sources
index 3090e90..00beae2 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-eafac866f42ac3a08859c9410680a5fd  qemu-kvm-1.2-3e430569.tar.gz
+1ec2342c322102b4028b4ca3fbdde737  qemu-kvm-1.2.0-rc1.tar.gz