Update to qemu-kvm 1.2.0-rc1

This commit is contained in:
Cole Robinson 2012-08-28 11:15:48 -04:00
parent a383819763
commit bd56df9b7a
19 changed files with 141 additions and 220 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -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(+)

View File

@ -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

View File

@ -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

View File

@ -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) {

View File

@ -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, ...)

View File

@ -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 {

View File

@ -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,

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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(+)

View File

@ -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(-)

View File

@ -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(-)

View File

@ -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(-)

View File

@ -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(+)

View File

@ -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,

View File

@ -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).

View File

@ -1 +1 @@
eafac866f42ac3a08859c9410680a5fd qemu-kvm-1.2-3e430569.tar.gz
1ec2342c322102b4028b4ca3fbdde737 qemu-kvm-1.2.0-rc1.tar.gz