2983660f65
CVE-2013-4377: Fix crash when unplugging virtio devices (bz #1012633, bz #1012641) Fix 'new snapshot' slowness after the first snap (bz #988436) Fix 9pfs xattrs on kernel 3.11 (bz #1013676) CVE-2013-4344: buffer overflow in scsi_target_emulate_report_luns (bz #1015274, bz #1007330)
46 lines
1.6 KiB
Diff
46 lines
1.6 KiB
Diff
From 3fe494efc5eb107c4c90e96df3e6131f9960f4b9 Mon Sep 17 00:00:00 2001
|
|
From: Anton Blanchard <anton@samba.org>
|
|
Date: Tue, 13 Aug 2013 14:10:04 +1000
|
|
Subject: [PATCH] pseries: Fix stalls on hypervisor virtual console
|
|
|
|
A number of users are reporting stalls when using the pseries
|
|
hypervisor virtual console.
|
|
|
|
A simple test case is to paste 15 or 17 characters at a time
|
|
into the console. Pasting 15 characters at a time works fine
|
|
but pasting 17 characters hangs for a random amount of time.
|
|
Other activity (network, qemu monitor etc) unblocks it.
|
|
|
|
If qemu-char tries to send more than 16 characters at once,
|
|
vty_can_receive returns false. At this point we have to
|
|
wait for the guest to consume that output. Everything is good
|
|
so far.
|
|
|
|
The problem occurs when the the guest does consume the output.
|
|
We need to signal back to the qemu-char layer that we are
|
|
ready for more input. Without this we block until something
|
|
else kicks us (eg network activity).
|
|
|
|
Signed-off-by: Anton Blanchard <anton@samba.org>
|
|
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
(cherry picked from commit 7770b6f78a2d655e03852a5de238f5926c92be6a)
|
|
|
|
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
|
|
---
|
|
hw/char/spapr_vty.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c
|
|
index a799721..9c2aef8 100644
|
|
--- a/hw/char/spapr_vty.c
|
|
+++ b/hw/char/spapr_vty.c
|
|
@@ -47,6 +47,8 @@ static int vty_getchars(VIOsPAPRDevice *sdev, uint8_t *buf, int max)
|
|
buf[n++] = dev->buf[dev->out++ % VTERM_BUFSIZE];
|
|
}
|
|
|
|
+ qemu_chr_accept_input(dev->chardev);
|
|
+
|
|
return n;
|
|
}
|
|
|