diff --git a/.cvsignore b/.cvsignore
index c684ce8..19c10ab 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,3 @@
 qemu-kvm-0.12.1.2.tar.gz
 qemu-kvm-0.12.2.tar.gz
+qemu-kvm-0.12.3.tar.gz
diff --git a/0038-msix-migration-fix.patch b/0038-msix-migration-fix.patch
new file mode 100644
index 0000000..b7d2c08
--- /dev/null
+++ b/0038-msix-migration-fix.patch
@@ -0,0 +1,43 @@
+From af483cb870ad81dce8e10215e0add284fcc38da4 Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:09:45 +0200
+Subject: [PATCH] msix: migration fix
+
+Be careful to match mask/unmask callbacks from msix.
+Fixes crash during migration.
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/msix.c |   16 +++++++++++++---
+ 1 files changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/hw/msix.c b/hw/msix.c
+index 3fcf3a1..fafaf09 100644
+--- a/hw/msix.c
++++ b/hw/msix.c
+@@ -614,9 +614,19 @@ int msix_set_mask_notifier(PCIDevice *dev, unsigned vector, void *opaque)
+     if (vector >= dev->msix_entries_nr || !dev->msix_entry_used[vector])
+         return 0;
+
+-    if (dev->msix_mask_notifier)
+-        r = dev->msix_mask_notifier(dev, vector, opaque,
+-                                    msix_is_masked(dev, vector));
++    if (dev->msix_mask_notifier && !msix_is_masked(dev, vector)) {
++        /* Mask previous notifier if any */
++        if (dev->msix_mask_notifier_opaque[vector]) {
++            r = dev->msix_mask_notifier(dev, vector,
++                                        dev->msix_mask_notifier_opaque[vector],
++                                        1);
++            assert(r >= 0);
++        }
++        /* Unmask new notifier, assumed to be masked at start */
++        if (opaque) {
++            r = dev->msix_mask_notifier(dev, vector, opaque, 0);
++        }
++    }
+     if (r >= 0)
+         dev->msix_mask_notifier_opaque[vector] = opaque;
+     return r;
+-- 
+1.6.6.1
+
diff --git a/0039-vhost-logging-thinko-fix.patch b/0039-vhost-logging-thinko-fix.patch
new file mode 100644
index 0000000..9f0435a
--- /dev/null
+++ b/0039-vhost-logging-thinko-fix.patch
@@ -0,0 +1,28 @@
+From c96adfe57a5a7ceed488fd6f198a762dd84c1d9c Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:09:48 +0200
+Subject: [PATCH] vhost: logging thinko fix
+
+Fix logging: set it to requested value.
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/vhost.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index e5c1ead..3c54596 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -310,7 +310,7 @@ static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
+ {
+ 	uint64_t features = dev->acked_features;
+ 	int r;
+-	if (dev->log_enabled) {
++	if (enable_log) {
+ 		features |= 0x1 << VHOST_F_LOG_ALL;
+ 	}
+ 	r = ioctl(dev->control, VHOST_SET_FEATURES, &features);
+-- 
+1.6.6.1
+
diff --git a/0040-vhost-move-vhost_set_vq_addr.patch b/0040-vhost-move-vhost_set_vq_addr.patch
new file mode 100644
index 0000000..e63119a
--- /dev/null
+++ b/0040-vhost-move-vhost_set_vq_addr.patch
@@ -0,0 +1,72 @@
+From 575c00a2880177295a116d43132566143af69a0b Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:09:51 +0200
+Subject: [PATCH] vhost: move vhost_set_vq_addr
+
+Move function in file: we'll add another
+call site in the following patch.
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/vhost.c |   38 +++++++++++++++++++-------------------
+ 1 files changed, 19 insertions(+), 19 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index 3c54596..54386e1 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -306,6 +306,25 @@ static void vhost_client_set_memory(CPUPhysMemoryClient *client,
+ 	}
+ }
+
++static int vhost_virtqueue_set_addr(struct vhost_dev *dev,
++				    struct vhost_virtqueue *vq,
++				    unsigned idx, bool enable_log)
++{
++	struct vhost_vring_addr addr = {
++		.index = idx,
++		.desc_user_addr = (u_int64_t)(unsigned long)vq->desc,
++		.avail_user_addr = (u_int64_t)(unsigned long)vq->avail,
++		.used_user_addr = (u_int64_t)(unsigned long)vq->used,
++		.log_guest_addr = vq->used_phys,
++		.flags = enable_log ? (1 << VHOST_VRING_F_LOG) : 0,
++	};
++	int r = ioctl(dev->control, VHOST_SET_VRING_ADDR, &addr);
++	if (r < 0) {
++		return -errno;
++	}
++	return 0;
++}
++
+ static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
+ {
+ 	uint64_t features = dev->acked_features;
+@@ -350,25 +369,6 @@ static int vhost_client_migration_log(struct CPUPhysMemoryClient *client,
+ 	return 0;
+ }
+
+-static int vhost_virtqueue_set_addr(struct vhost_dev *dev,
+-				    struct vhost_virtqueue *vq,
+-				    unsigned idx, bool enable_log)
+-{
+-	struct vhost_vring_addr addr = {
+-		.index = idx,
+-		.desc_user_addr = (u_int64_t)(unsigned long)vq->desc,
+-		.avail_user_addr = (u_int64_t)(unsigned long)vq->avail,
+-		.used_user_addr = (u_int64_t)(unsigned long)vq->used,
+-		.log_guest_addr = vq->used_phys,
+-		.flags = enable_log ? (1 << VHOST_VRING_F_LOG) : 0,
+-	};
+-	int r = ioctl(dev->control, VHOST_SET_VRING_ADDR, &addr);
+-	if (r < 0) {
+-		return -errno;
+-	}
+-	return 0;
+-}
+-
+ static int vhost_virtqueue_init(struct vhost_dev *dev,
+ 				struct VirtIODevice *vdev,
+ 				struct vhost_virtqueue *vq,
+-- 
+1.6.6.1
+
diff --git a/0041-vhost-used-addr-migration-fix.patch b/0041-vhost-used-addr-migration-fix.patch
new file mode 100644
index 0000000..90f027a
--- /dev/null
+++ b/0041-vhost-used-addr-migration-fix.patch
@@ -0,0 +1,70 @@
+From ac48d782f3b91b2e9962ded5f8a55bd3929a82a5 Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:09:54 +0200
+Subject: [PATCH] vhost: used addr migration fix
+
+Enable used buffer logging when migration starts.
+Fixed 'id XX is not a head' message after migration.
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/vhost.c |   29 +++++++++++++++++++++++++++--
+ 1 files changed, 27 insertions(+), 2 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index 54386e1..48034ba 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -325,7 +325,7 @@ static int vhost_virtqueue_set_addr(struct vhost_dev *dev,
+ 	return 0;
+ }
+
+-static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
++static int vhost_dev_set_features(struct vhost_dev *dev, bool enable_log)
+ {
+ 	uint64_t features = dev->acked_features;
+ 	int r;
+@@ -336,6 +336,31 @@ static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
+ 	return r < 0 ? -errno : 0;
+ }
+
++static int vhost_dev_set_log(struct vhost_dev *dev, bool enable_log)
++{
++	int r, t, i;
++	r = vhost_dev_set_features(dev, enable_log);
++	if (r < 0)
++		goto err_features;
++	for (i = 0; i < dev->nvqs; ++i) {
++		r = vhost_virtqueue_set_addr(dev, dev->vqs + i, i,
++					     enable_log);
++		if (r < 0)
++			goto err_vq;
++	}
++	return 0;
++err_vq:
++	for (; i >= 0; --i) {
++		t = vhost_virtqueue_set_addr(dev, dev->vqs + i, i,
++					     dev->log_enabled);
++		assert(t >= 0);
++	}
++	t = vhost_dev_set_features(dev, dev->log_enabled);
++	assert(t >= 0);
++err_features:
++	return r;
++}
++
+ static int vhost_client_migration_log(struct CPUPhysMemoryClient *client,
+ 				      int enable)
+ {
+@@ -544,7 +569,7 @@ int vhost_dev_start(struct vhost_dev *hdev, VirtIODevice *vdev)
+ {
+ 	int i, r;
+
+-	r = vhost_dev_set_log(hdev, hdev->log_enabled);
++	r = vhost_dev_set_features(hdev, hdev->log_enabled);
+ 	if (r < 0)
+ 		goto fail;
+ 	r = ioctl(hdev->control, VHOST_SET_MEM_TABLE, hdev->mem);
+-- 
+1.6.6.1
+
diff --git a/0042-vhost-fix-used-logging-size-math.patch b/0042-vhost-fix-used-logging-size-math.patch
new file mode 100644
index 0000000..a17058c
--- /dev/null
+++ b/0042-vhost-fix-used-logging-size-math.patch
@@ -0,0 +1,37 @@
+From 91c827f000a94908b043b5de68eb0cd4fb6ff83d Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:09:58 +0200
+Subject: [PATCH] vhost: fix used logging size math
+
+Must include used header as well, not only ring
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/vhost.c |    4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index 48034ba..7391bd1 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -62,7 +62,8 @@ static int vhost_client_sync_dirty_bitmap(struct CPUPhysMemoryClient *client,
+ 	}
+ 	for (i = 0; i < dev->nvqs; ++i) {
+ 		struct vhost_virtqueue *vq = dev->vqs + i;
+-		unsigned size = sizeof(struct vring_used_elem) * vq->num;
++		unsigned size = offsetof(struct vring_used, ring) +
++			sizeof(struct vring_used_elem) * vq->num;
+ 		vhost_dev_sync_region(dev, start_addr, end_addr, vq->used_phys,
+ 				      range_get_last(vq->used_phys, size));
+ 	}
+@@ -230,6 +231,7 @@ static uint64_t vhost_get_log_size(struct vhost_dev *dev)
+ 	for (i = 0; i < dev->nvqs; ++i) {
+ 		struct vhost_virtqueue *vq = dev->vqs + i;
+ 		uint64_t last = vq->used_phys +
++			offsetof(struct vring_used, ring) +
+ 			sizeof(struct vring_used_elem) * vq->num - 1;
+ 		log_size = MAX(log_size, last / VHOST_LOG_CHUNK + 1);
+ 	}
+-- 
+1.6.6.1
+
diff --git a/0043-vhost-logging-mistake-enable-not-disable-log.patch b/0043-vhost-logging-mistake-enable-not-disable-log.patch
new file mode 100644
index 0000000..58889da
--- /dev/null
+++ b/0043-vhost-logging-mistake-enable-not-disable-log.patch
@@ -0,0 +1,26 @@
+From b4654f7911adb1352c2c47c76f650e8419a20b91 Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:10:01 +0200
+Subject: [PATCH] vhost: logging mistake enable, not disable log
+
+Correctly pass log enable value from memory client to vhost device.
+---
+ hw/vhost.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index 7391bd1..019afc2 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -387,7 +387,7 @@ static int vhost_client_migration_log(struct CPUPhysMemoryClient *client,
+ 		dev->log_size = 0;
+ 	} else {
+ 		vhost_dev_log_resize(dev, vhost_get_log_size(dev));
+-		r = vhost_dev_set_log(dev, false);
++		r = vhost_dev_set_log(dev, true);
+ 		if (r < 0) {
+ 			return r;
+ 		}
+-- 
+1.6.6.1
+
diff --git a/0044-vhost-fix-log-base.patch b/0044-vhost-fix-log-base.patch
new file mode 100644
index 0000000..1e97d89
--- /dev/null
+++ b/0044-vhost-fix-log-base.patch
@@ -0,0 +1,38 @@
+From d42430f94c77a653da486e6f96f6695818f3e81b Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Wed, 24 Feb 2010 21:10:04 +0200
+Subject: [PATCH] vhost: fix log base
+
+LOG_BASE ioctl gets a pointer to a 64 bit value, not
+a pointer cast to 64 bit value.
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+---
+ hw/vhost.c |    5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/hw/vhost.c b/hw/vhost.c
+index 019afc2..b63eafa 100644
+--- a/hw/vhost.c
++++ b/hw/vhost.c
+@@ -241,14 +241,15 @@ static uint64_t vhost_get_log_size(struct vhost_dev *dev)
+ static inline void vhost_dev_log_resize(struct vhost_dev* dev, uint64_t size)
+ {
+ 	vhost_log_chunk_t *log;
++	uint64_t log_base;
+ 	int r;
+ 	if (size) {
+ 		log = qemu_mallocz(size * sizeof *log);
+ 	} else {
+ 		log = NULL;
+ 	}
+-	r = ioctl(dev->control, VHOST_SET_LOG_BASE,
+-		  (uint64_t)(unsigned long)log);
++	log_base = (uint64_t)(unsigned long)log;
++	r = ioctl(dev->control, VHOST_SET_LOG_BASE, &log_base);
+ 	assert(r >= 0);
+ 	vhost_client_sync_dirty_bitmap(&dev->client, 0,
+ 				       (target_phys_addr_t)~0x0ull);
+-- 
+1.6.6.1
+
diff --git a/0045-pc-Add-a-Fedora-13-machine-type-that-contains-backpo.patch b/0045-pc-Add-a-Fedora-13-machine-type-that-contains-backpo.patch
new file mode 100644
index 0000000..d7d5c27
--- /dev/null
+++ b/0045-pc-Add-a-Fedora-13-machine-type-that-contains-backpo.patch
@@ -0,0 +1,62 @@
+From 9aa404a57823c9fbf2bf2e0189d31a2b0d8bf3b9 Mon Sep 17 00:00:00 2001
+From: Amit Shah <amit.shah@redhat.com>
+Date: Thu, 25 Feb 2010 18:41:13 +0530
+Subject: [PATCH] pc: Add a Fedora-13 machine type that contains backports from upstream
+
+We have a few features backported from the upstream 0.13 machine type
+in the repo here.
+
+Add a 'fedora-13' machine type and use that by default so that users can
+fall back to a released upstream machine type if desired.
+
+The fedora-13 machine type has the new multiport-supported virtio-serial
+and vhost-net patches as of now not present in the 0.12 machine type.
+
+This is based on upstream commit
+d76fa62dba54a156ca0f5e79eb33756c9015e02c
+
+Signed-off-by: Amit Shah <amit.shah@redhat.com>
+---
+ hw/pc.c |   19 +++++++++++++++++--
+ 1 files changed, 17 insertions(+), 2 deletions(-)
+
+diff --git a/hw/pc.c b/hw/pc.c
+index 56be728..26c65c1 100644
+--- a/hw/pc.c
++++ b/hw/pc.c
+@@ -1327,11 +1327,9 @@ void cmos_set_s3_resume(void)
+
+ static QEMUMachine pc_machine = {
+     .name = "pc-0.12",
+-    .alias = "pc",
+     .desc = "Standard PC",
+     .init = pc_init_pci,
+     .max_cpus = 255,
+-    .is_default = 1,
+ };
+
+ static QEMUMachine pc_machine_v0_11 = {
+@@ -1416,3 +1414,20 @@ static void pc_machine_init(void)
+ }
+
+ machine_init(pc_machine_init);
++
++/* Fedora machine types */
++static QEMUMachine pc_machine_f13 = {
++    .name = "fedora-13",
++    .alias = "pc",
++    .desc = "Standard PC",
++    .init = pc_init_pci,
++    .max_cpus = 255,
++    .is_default = 1,
++};
++
++static void fedora_machine_init(void)
++{
++    qemu_register_machine(&pc_machine_f13);
++}
++
++machine_init(fedora_machine_init);
+-- 
+1.6.6.1
+
diff --git a/0046-pc-Add-backward-compatibility-options-for-virtio-ser.patch b/0046-pc-Add-backward-compatibility-options-for-virtio-ser.patch
new file mode 100644
index 0000000..2c6c8fd
--- /dev/null
+++ b/0046-pc-Add-backward-compatibility-options-for-virtio-ser.patch
@@ -0,0 +1,72 @@
+From f32e21e2828cf7a8aba2fb27945dc46ca2debe09 Mon Sep 17 00:00:00 2001
+From: Amit Shah <amit.shah@redhat.com>
+Date: Thu, 25 Feb 2010 18:41:14 +0530
+Subject: [PATCH] pc: Add backward compatibility options for virtio-serial
+
+virtio-serial-pci can support multiple ports in the current F-13
+version that will become upstream version 0.13. Add compatibility options
+for the 0.12, 0.11 and 0.10 pc machine types.
+
+Based on upstream commit 8bfbde6d35c82cc376681289dae2de5e18a087a4
+
+Signed-off-by: Amit Shah <amit.shah@redhat.com>
+---
+ hw/pc.c |   28 ++++++++++++++++++++++++++++
+ 1 files changed, 28 insertions(+), 0 deletions(-)
+
+diff --git a/hw/pc.c b/hw/pc.c
+index 26c65c1..90bbfe8 100644
+--- a/hw/pc.c
++++ b/hw/pc.c
+@@ -1330,6 +1330,18 @@ static QEMUMachine pc_machine = {
+     .desc = "Standard PC",
+     .init = pc_init_pci,
+     .max_cpus = 255,
++    .compat_props = (GlobalProperty[]) {
++        {
++            .driver   = "virtio-serial-pci",
++            .property = "max_nr_ports",
++            .value    = stringify(1),
++        },{
++            .driver   = "virtio-serial-pci",
++            .property = "vectors",
++            .value    = stringify(0),
++        },
++        { /* end of list */ }
++    }
+ };
+
+ static QEMUMachine pc_machine_v0_11 = {
+@@ -1351,6 +1363,14 @@ static QEMUMachine pc_machine_v0_11 = {
+             .property = "ver",
+             .value    = "0.11",
+         },{
++            .driver   = "virtio-serial-pci",
++            .property = "max_nr_ports",
++            .value    = stringify(1),
++        },{
++            .driver   = "virtio-serial-pci",
++            .property = "vectors",
++            .value    = stringify(0),
++        },{
+             .driver   = "PCI",
+             .property = "rombar",
+             .value    = stringify(0),
+@@ -1374,6 +1394,14 @@ static QEMUMachine pc_machine_v0_10 = {
+             .property = "class",
+             .value    = stringify(PCI_CLASS_DISPLAY_OTHER),
+         },{
++            .driver   = "virtio-serial-pci",
++            .property = "max_nr_ports",
++            .value    = stringify(1),
++        },{
++            .driver   = "virtio-serial-pci",
++            .property = "vectors",
++            .value    = stringify(0),
++        },{
+             .driver   = "virtio-net-pci",
+             .property = "vectors",
+             .value    = stringify(0),
+-- 
+1.6.6.1
+
diff --git a/0047-virtio-serial-don-t-set-MULTIPORT-for-1-port-dev.patch b/0047-virtio-serial-don-t-set-MULTIPORT-for-1-port-dev.patch
new file mode 100644
index 0000000..997898d
--- /dev/null
+++ b/0047-virtio-serial-don-t-set-MULTIPORT-for-1-port-dev.patch
@@ -0,0 +1,39 @@
+From e3b132568eef8491decbe30639a9814bdd2d82c0 Mon Sep 17 00:00:00 2001
+From: Michael S. Tsirkin <mst@redhat.com>
+Date: Thu, 25 Feb 2010 18:41:15 +0530
+Subject: [PATCH] virtio-serial: don't set MULTIPORT for 1 port dev
+
+Since commit 98b19252cf1bd97c54bc4613f3537c5ec0aae263, all
+serial devices declare MULTIPORT feature.
+To allow 0.12 compatibility, we should clear this when
+max_nr_ports is 1.
+
+Upsream commit: ee4d45be0d791eb8bb0f767cd0f17ea8f697281b
+
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
+Signed-off-by: Amit Shah <amit.shah@redhat.com>
+Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+---
+ hw/virtio-serial-bus.c |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/hw/virtio-serial-bus.c b/hw/virtio-serial-bus.c
+index ab456ea..d0e0219 100644
+--- a/hw/virtio-serial-bus.c
++++ b/hw/virtio-serial-bus.c
+@@ -335,8 +335,10 @@ static void handle_input(VirtIODevice *vdev, VirtQueue *vq)
+
+ static uint32_t get_features(VirtIODevice *vdev, uint32_t features)
+ {
+-    features |= (1 << VIRTIO_CONSOLE_F_MULTIPORT);
+-
++    VirtIOSerial *vser = DO_UPCAST(VirtIOSerial, vdev, vdev);
++    if (vser->bus->max_nr_ports > 1) {
++        features |= (1 << VIRTIO_CONSOLE_F_MULTIPORT);
++    }
+     return features;
+ }
+
+-- 
+1.6.6.1
+
diff --git a/0048-virtio-serial-pci-Allow-MSI-to-be-disabled.patch b/0048-virtio-serial-pci-Allow-MSI-to-be-disabled.patch
new file mode 100644
index 0000000..387ab87
--- /dev/null
+++ b/0048-virtio-serial-pci-Allow-MSI-to-be-disabled.patch
@@ -0,0 +1,44 @@
+From 8a881734bccddf707a42ba2effff699b824d3c8f Mon Sep 17 00:00:00 2001
+From: Amit Shah <amit.shah@redhat.com>
+Date: Thu, 25 Feb 2010 18:41:16 +0530
+Subject: [PATCH] virtio-serial: pci: Allow MSI to be disabled
+
+Michael noted we don't allow disabling of MSI for the virtio-serial-pci
+device. Fix that.
+
+Upstream commit: 7b665b668aa92bf0bba696f085dff87539d95529
+
+Signed-off-by: Amit Shah <amit.shah@redhat.com>
+CC: "Michael S. Tsirkin" <mst@redhat.com>
+Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
+---
+ hw/virtio-pci.c |    6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
+index 9a02682..636c8c3 100644
+--- a/hw/virtio-pci.c
++++ b/hw/virtio-pci.c
+@@ -598,8 +598,8 @@ static int virtio_serial_init_pci(PCIDevice *pci_dev)
+     if (!vdev) {
+         return -1;
+     }
+-    vdev->nvectors = proxy->nvectors ? proxy->nvectors
+-                                     : proxy->max_virtserial_ports + 1;
++    vdev->nvectors = proxy->nvectors == -1 ? proxy->max_virtserial_ports + 1
++                                           : proxy->nvectors;
+     virtio_init_pci(proxy, vdev,
+                     PCI_VENDOR_ID_REDHAT_QUMRANET,
+                     PCI_DEVICE_ID_VIRTIO_CONSOLE,
+@@ -683,7 +683,7 @@ static PCIDeviceInfo virtio_info[] = {
+         .init      = virtio_serial_init_pci,
+         .exit      = virtio_exit_pci,
+         .qdev.props = (Property[]) {
+-            DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, 0),
++            DEFINE_PROP_UINT32("vectors", VirtIOPCIProxy, nvectors, -1),
+             DEFINE_PROP_HEX32("class", VirtIOPCIProxy, class_code, 0),
+             DEFINE_VIRTIO_COMMON_FEATURES(VirtIOPCIProxy, host_features),
+             DEFINE_PROP_UINT32("max_ports", VirtIOPCIProxy, max_virtserial_ports,
+-- 
+1.6.6.1
+
diff --git a/qemu-tap-add-vhost-vhostfd-options.patch b/qemu-tap-add-vhost-vhostfd-options.patch
index 462d08f..1a3dfb9 100644
--- a/qemu-tap-add-vhost-vhostfd-options.patch
+++ b/qemu-tap-add-vhost-vhostfd-options.patch
@@ -64,7 +64,7 @@ index 7e9ca79..d9f2e41 100644
      return s;
  }
  
-@@ -456,6 +464,27 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
+@@ -456,5 +464,26 @@ int net_init_tap(QemuOpts *opts, Monitor *mon, const char *name, VLANState *vlan
          }
      }
  
@@ -89,9 +89,8 @@ index 7e9ca79..d9f2e41 100644
 +        return -1;
 +    }
 +
-     if (vlan) {
-         vlan->nb_host_devs++;
-     }
+     return 0;
+ }
 diff --git a/qemu-options.hx b/qemu-options.hx
 index ca73ba5..2b3d9b8 100644
 --- a/qemu-options.hx
diff --git a/qemu.spec b/qemu.spec
index 53d381b..35cf701 100644
--- a/qemu.spec
+++ b/qemu.spec
@@ -1,7 +1,7 @@
 Summary: QEMU is a FAST! processor emulator
 Name: qemu
-Version: 0.12.2
-Release: 6%{?dist}
+Version: 0.12.3
+Release: 1%{?dist}
 # Epoch because we pushed a qemu-1.0 package
 Epoch: 2
 License: GPLv2+ and LGPLv2+ and BSD
@@ -66,6 +66,19 @@ Patch35: qemu-virtio-serial-features-build-fix.patch
 Patch36: qemu-virtio-pci-irqfd-fix-nonkvm-build.patch
 Patch37: qemu-vhost-add-configure-check.patch
 
+# Fixes from upstream  
+Patch38: 0038-msix-migration-fix.patch
+Patch39: 0039-vhost-logging-thinko-fix.patch
+Patch40: 0040-vhost-move-vhost_set_vq_addr.patch
+Patch41: 0041-vhost-used-addr-migration-fix.patch
+Patch42: 0042-vhost-fix-used-logging-size-math.patch
+Patch43: 0043-vhost-logging-mistake-enable-not-disable-log.patch
+Patch44: 0044-vhost-fix-log-base.patch
+Patch45: 0045-pc-Add-a-Fedora-13-machine-type-that-contains-backpo.patch
+Patch46: 0046-pc-Add-backward-compatibility-options-for-virtio-ser.patch
+Patch47: 0047-virtio-serial-don-t-set-MULTIPORT-for-1-port-dev.patch
+Patch48: 0048-virtio-serial-pci-Allow-MSI-to-be-disabled.patch
+
 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 BuildRequires: SDL-devel zlib-devel which texi2html gnutls-devel cyrus-sasl-devel
@@ -291,6 +304,17 @@ such as kvmtrace and kvm_stat.
 %patch35 -p1
 %patch36 -p1
 %patch37 -p1
+%patch38 -p1
+%patch39 -p1
+%patch40 -p1
+%patch41 -p1
+%patch42 -p1
+%patch43 -p1
+%patch44 -p1
+%patch45 -p1
+%patch46 -p1
+%patch47 -p1
+%patch48 -p1
 
 %build
 # --build-id option is used fedora 8 onwards for giving info to the debug packages.
@@ -574,6 +598,12 @@ fi
 %{_mandir}/man1/qemu-img.1*
 
 %changelog
+* Fri Feb 26 2010 Justin M. Forbes <jforbes@redhat.com> - 2:0.12.3-1
+- Update to 0.12.3 upstream
+- vhost-net migration/restart fixes
+- Add F-13 machine type
+- virtio-serial fixes
+
 * Tue Feb 09 2010 Justin M. Forbes <jforbes@redhat.com> - 2:0.12.2-6
 - Add vhost net support.
 
diff --git a/sources b/sources
index a41a2f3..c17d439 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-8e6f3666de038c2ee11cebc45ffa89e4  qemu-kvm-0.12.2.tar.gz
+ab484975004f66fb48cb5589bd9b9dcb  qemu-kvm-0.12.3.tar.gz