From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, bcketchum@gmail.com
Subject: Re: [Qemu-devel] [PATCH 2/6] serial: reinstate watch after migration
Date: Wed, 22 Jun 2016 16:05:45 +0100 [thread overview]
Message-ID: <20160622150544.GC6604@work-vm> (raw)
In-Reply-To: <1466432945-28682-3-git-send-email-pbonzini@redhat.com>
* Paolo Bonzini (pbonzini@redhat.com) wrote:
> Otherwise, a serial port can get stuck if it is migrated while flow control
> is in effect.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> hw/char/serial.c | 16 ++++++++++++++--
> include/hw/char/serial.h | 1 +
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/hw/char/serial.c b/hw/char/serial.c
> index e65e9e0..6f0a49e 100644
> --- a/hw/char/serial.c
> +++ b/hw/char/serial.c
> @@ -639,8 +639,20 @@ static int serial_post_load(void *opaque, int version_id)
> if (s->thr_ipending == -1) {
> s->thr_ipending = ((s->iir & UART_IIR_ID) == UART_IIR_THRI);
> }
> - if (s->tsr_retry > MAX_XMIT_RETRY) {
> - s->tsr_retry = MAX_XMIT_RETRY;
Why remove the check you just added?
> +
> + if (s->tsr_retry > 0) {
> + /* tsr_retry > 0 implies LSR.TEMT = 0 (transmitter not empty). */
> + if (s->lsr & UART_LSR_TEMT) {
> + return -1;
> + }
> +
> + assert(s->watch_tag == 0);
> + s->watch_tag = qemu_chr_fe_add_watch(s->chr, G_IO_OUT|G_IO_HUP, serial_xmit, s);
> + } else {
> + /* tsr_retry == 0 implies LSR.TEMT = 1 (transmitter empty). */
> + if (!(s->lsr & UART_LSR_TEMT)) {
> + return -1;
If you're failing migration (-1) then please error_report to say why
so when someone hits it I can immediately see why.
Dave
> + }
> }
>
> s->last_break_enable = (s->lcr >> 6) & 1;
> diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h
> index ef90615..2ab835c 100644
> --- a/include/hw/char/serial.h
> +++ b/include/hw/char/serial.h
> @@ -56,6 +56,7 @@ struct SerialState {
> int it_shift;
> int baudbase;
> unsigned tsr_retry;
> + unsigned watch_tag;
> uint32_t wakeup;
>
> /* Time when the last byte was successfully sent out of the tsr */
> --
> 2.5.5
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2016-06-22 15:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 14:28 [Qemu-devel] [PATCH 0/6] serial: flow control fixes Paolo Bonzini
2016-06-20 14:29 ` [Qemu-devel] [PATCH 1/6] serial: make tsr_retry unsigned Paolo Bonzini
2016-06-22 14:44 ` Dr. David Alan Gilbert
2016-06-20 14:29 ` [Qemu-devel] [PATCH 2/6] serial: reinstate watch after migration Paolo Bonzini
2016-06-22 15:05 ` Dr. David Alan Gilbert [this message]
2016-06-22 15:11 ` Paolo Bonzini
2016-06-22 15:41 ` Dr. David Alan Gilbert
2016-06-20 14:29 ` [Qemu-devel] [PATCH 3/6] serial: separate serial_xmit and serial_watch_cb Paolo Bonzini
2016-06-22 15:09 ` Dr. David Alan Gilbert
2016-06-22 15:14 ` Paolo Bonzini
2016-06-20 14:29 ` [Qemu-devel] [PATCH 4/6] serial: simplify tsr_retry reset Paolo Bonzini
2016-06-22 15:12 ` Dr. David Alan Gilbert
2016-06-20 14:29 ` [Qemu-devel] [PATCH 5/6] char: change qemu_chr_fe_add_watch to return unsigned Paolo Bonzini
2016-06-22 15:22 ` Dr. David Alan Gilbert
2016-06-20 14:29 ` [Qemu-devel] [PATCH 6/6] serial: remove watch on reset Paolo Bonzini
2016-06-22 14:04 ` Bret Ketchum
2016-06-22 15:38 ` Dr. David Alan Gilbert
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=20160622150544.GC6604@work-vm \
--to=dgilbert@redhat.com \
--cc=bcketchum@gmail.com \
--cc=pbonzini@redhat.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.