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 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 --- 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 -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 -Tested-by: Stefan Hajnoczi -Reviewed-by: Stefan Hajnoczi -Signed-off-by: Paolo Bonzini -Signed-off-by: Anthony Liguori ---- - 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 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 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 --- 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 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 --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 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 +Signed-off-by: Cole Robinson --- 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 1.2.0-0.4.rc1 +- Update to 1.2.0-rc1 + * Mon Aug 20 2012 Richard W.M. Jones - 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