All of lore.kernel.org
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@redhat.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH 04/15] serial: fix lost character after sysrq
Date: Wed, 17 Jun 2009 13:09:53 -0400	[thread overview]
Message-ID: <1245258604-2843-5-git-send-email-glommer@redhat.com> (raw)
In-Reply-To: <1245258604-2843-4-git-send-email-glommer@redhat.com>

From: Jason Wessel <jason.wessel@windriver.com>

After creating an automated regression test to test the sysrq
responses while running a linux image in qemu, I found that the
simulated uart was eating the character right after the sysrq about
75% of the time.

The problem is that the qemu sets the LSR_DR (data ready) bit on a
serial break.  The automated tests can send a break and the sysrq
character quickly enough that the qemu serial fifo has a real
character available. When there is valid character in the fifo, it
gets consumed by the serial driver in the guest OS.

The real hardware also appears to set the LSR_DR but always appears to
have a null byte in this condition.  This patch changes the qemu
behavior to match the tested characteristics of a real 16550 chip.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
 hw/serial.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/hw/serial.c b/hw/serial.c
index ac089fc..113829c 100644
--- a/hw/serial.c
+++ b/hw/serial.c
@@ -586,6 +586,8 @@ static int serial_can_receive(SerialState *s)
 static void serial_receive_break(SerialState *s)
 {
     s->rbr = 0;
+    /* When the LSR_DR is set a null byte is pushed into the fifo */
+    fifo_put(s, RECV_FIFO, '\0');
     s->lsr |= UART_LSR_BI | UART_LSR_DR;
     serial_update_irq(s);
 }
-- 
1.6.2.2

  reply	other threads:[~2009-06-17 17:10 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-17 17:09 [Qemu-devel] [GIT PULL 00/15] Stable branch update 2009-06-17 Glauber Costa
2009-06-17 17:09 ` [Qemu-devel] [PATCH 01/15] net: Fix -net socket, listen (Jan Kiszka) Glauber Costa
2009-06-17 17:09   ` [Qemu-devel] [PATCH 02/15] Minimal ethernet frame length is 64 bytes Glauber Costa
2009-06-17 17:09     ` [Qemu-devel] [PATCH 03/15] Don't send all gratuitous packets at once Glauber Costa
2009-06-17 17:09       ` Glauber Costa [this message]
2009-06-17 17:09         ` [Qemu-devel] [PATCH 05/15] e1000: Ignore reset command Glauber Costa
2009-06-17 17:09           ` [Qemu-devel] [PATCH 06/15] VNC: Fix memory allocation (wrong structure size) Glauber Costa
2009-06-17 17:09             ` [Qemu-devel] [PATCH 07/15] fix raw_pread_aligned return value Glauber Costa
2009-06-17 17:09               ` [Qemu-devel] [PATCH 08/15] BACKPORT: Register reset functions for e1000 and rtl8139 Glauber Costa
2009-06-17 17:09                 ` [Qemu-devel] [PATCH 09/15] BACKPORT: Update irqs on reset and device load Glauber Costa
2009-06-17 17:09                   ` [Qemu-devel] [PATCH 10/15] BACKPORT: Add rtc reset function Glauber Costa
2009-06-17 17:10                     ` [Qemu-devel] [PATCH 11/15] fix qemu_aio_flush Glauber Costa
2009-06-17 17:10                       ` [Qemu-devel] [PATCH 12/15] QEMU KVM: i386: Fix the cpu reset state Glauber Costa
2009-06-17 17:10                         ` [Qemu-devel] [PATCH 13/15] kvm: Fix IRQ injection into full queue Glauber Costa
2009-06-17 17:10                           ` [Qemu-devel] [PATCH 14/15] Prevent CD-ROM media eject while device is locked Glauber Costa
2009-06-17 17:10                             ` [Qemu-devel] [PATCH 15/15] Fix vga_screen_dump_blank() PPM generation Glauber Costa
2009-06-17 17:12                   ` [Qemu-devel] Re: [PATCH 09/15] BACKPORT: Update irqs on reset and device load Blue Swirl
2009-06-17 17:49                     ` Glauber Costa
2009-06-17 17:57 ` [Qemu-devel] [GIT PULL 00/15] Stable branch update 2009-06-17 Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1245258604-2843-5-git-send-email-glommer@redhat.com \
    --to=glommer@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.