Blame SOURCES/kvm-hw-char-serial-Only-retry-if-qemu_chr_fe_write-retur.patch

1bdc94
From a7a6995e2a24e9e4c89084acf3241e5640f30f3e Mon Sep 17 00:00:00 2001
1bdc94
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
1bdc94
Date: Fri, 20 Jul 2018 12:17:59 +0200
1bdc94
Subject: [PATCH 87/89] hw/char/serial: Only retry if qemu_chr_fe_write returns
1bdc94
 0
1bdc94
MIME-Version: 1.0
1bdc94
Content-Type: text/plain; charset=UTF-8
1bdc94
Content-Transfer-Encoding: 8bit
1bdc94
1bdc94
RH-Author: Marc-André Lureau <marcandre.lureau@redhat.com>
1bdc94
Message-id: <20180720121800.18952-2-marcandre.lureau@redhat.com>
1bdc94
Patchwork-id: 81454
1bdc94
O-Subject: [RHEL-7.6 qemu-kvm-rhev PATCH v2 1/2] hw/char/serial: Only retry if qemu_chr_fe_write returns 0
1bdc94
Bugzilla: 1592817
1bdc94
RH-Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
1bdc94
RH-Acked-by: Markus Armbruster <armbru@redhat.com>
1bdc94
RH-Acked-by: John Snow <jsnow@redhat.com>
1bdc94
1bdc94
From: Sergio Lopez <slp@redhat.com>
1bdc94
1bdc94
Only retry on serial_xmit if qemu_chr_fe_write returns 0, as this is the
1bdc94
only recoverable error.
1bdc94
1bdc94
Retrying with any other scenario, in addition to being a waste of CPU
1bdc94
cycles, can compromise the Guest stability if by the vCPU issuing the
1bdc94
write and the main loop thread are, by chance or explicit pinning,
1bdc94
running on the same pCPU.
1bdc94
1bdc94
Previous discussion:
1bdc94
1bdc94
https://lists.nongnu.org/archive/html/qemu-devel/2018-05/msg06998.html
1bdc94
1bdc94
Signed-off-by: Sergio Lopez <slp@redhat.com>
1bdc94
Message-Id: <1528185295-14199-1-git-send-email-slp@redhat.com>
1bdc94
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1bdc94
1bdc94
(cherry picked from commit 019288bf137183bf3407c9824655b753bfafc99f)
1bdc94
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
1bdc94
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
1bdc94
---
1bdc94
 hw/char/serial.c | 2 +-
1bdc94
 1 file changed, 1 insertion(+), 1 deletion(-)
1bdc94
1bdc94
diff --git a/hw/char/serial.c b/hw/char/serial.c
1bdc94
index d6d9b18..d4057bf 100644
1bdc94
--- a/hw/char/serial.c
1bdc94
+++ b/hw/char/serial.c
1bdc94
@@ -262,7 +262,7 @@ static void serial_xmit(SerialState *s)
1bdc94
         if (s->mcr & UART_MCR_LOOP) {
1bdc94
             /* in loopback mode, say that we just received a char */
1bdc94
             serial_receive1(s, &s->tsr, 1);
1bdc94
-        } else if (qemu_chr_fe_write(&s->chr, &s->tsr, 1) != 1 &&
1bdc94
+        } else if (qemu_chr_fe_write(&s->chr, &s->tsr, 1) == 0 &&
1bdc94
                    s->tsr_retry < MAX_XMIT_RETRY) {
1bdc94
             assert(s->watch_tag == 0);
1bdc94
             s->watch_tag =
1bdc94
-- 
1bdc94
1.8.3.1
1bdc94