From nobody Sat Nov 1 22:17:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1527752905254820.8172344204571; Thu, 31 May 2018 00:48:25 -0700 (PDT) Received: from localhost ([::1]:42438 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIJs-0002eF-AX for importer@patchew.org; Thu, 31 May 2018 03:48:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34672) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIHt-0001em-Md for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fOIHq-0007lp-Q0 for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:21 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:52884 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fOIHq-0007le-LE for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:18 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1E5A081663CC for ; Thu, 31 May 2018 07:46:18 +0000 (UTC) Received: from dritchie.redhat.com (ovpn-116-105.ams2.redhat.com [10.36.116.105]) by smtp.corp.redhat.com (Postfix) with ESMTP id C9C21202660D; Thu, 31 May 2018 07:46:15 +0000 (UTC) From: Sergio Lopez To: berrange@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com, mst@redhat.com Date: Thu, 31 May 2018 09:45:59 +0200 Message-Id: <20180531074601.10647-2-slp@redhat.com> In-Reply-To: <20180531074601.10647-1-slp@redhat.com> References: <20180531074601.10647-1-slp@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Thu, 31 May 2018 07:46:18 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.8]); Thu, 31 May 2018 07:46:18 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'slp@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 1/3] io: Implement QIO_CHANNEL_ERR_BROKEN X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Sergio Lopez Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" QIO_CHANNEL_ERR_BROKEN is used to identify a potentially unrecoverable error in the channel, like EPIPE. --- include/io/channel.h | 1 + io/channel-file.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/io/channel.h b/include/io/channel.h index e8cdadb..bbe45f6 100644 --- a/include/io/channel.h +++ b/include/io/channel.h @@ -38,6 +38,7 @@ typedef struct QIOChannel QIOChannel; typedef struct QIOChannelClass QIOChannelClass; =20 #define QIO_CHANNEL_ERR_BLOCK -2 +#define QIO_CHANNEL_ERR_BROKEN -3 =20 typedef enum QIOChannelFeature QIOChannelFeature; =20 diff --git a/io/channel-file.c b/io/channel-file.c index db948ab..a990f67 100644 --- a/io/channel-file.c +++ b/io/channel-file.c @@ -124,6 +124,9 @@ static ssize_t qio_channel_file_writev(QIOChannel *ioc, if (errno =3D=3D EAGAIN) { return QIO_CHANNEL_ERR_BLOCK; } + if (errno =3D=3D EPIPE) { + return QIO_CHANNEL_ERR_BROKEN; + } if (errno =3D=3D EINTR) { goto retry; } --=20 1.8.3.1 From nobody Sat Nov 1 22:17:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1527752908100254.20131155399133; Thu, 31 May 2018 00:48:28 -0700 (PDT) Received: from localhost ([::1]:42439 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIJv-0002fV-7U for importer@patchew.org; Thu, 31 May 2018 03:48:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34670) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIHt-0001ek-MP for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fOIHs-0007mS-75 for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:21 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:34478 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fOIHs-0007mJ-3g for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:20 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A81647DAC1 for ; Thu, 31 May 2018 07:46:19 +0000 (UTC) Received: from dritchie.redhat.com (ovpn-116-105.ams2.redhat.com [10.36.116.105]) by smtp.corp.redhat.com (Postfix) with ESMTP id 617482026DEF; Thu, 31 May 2018 07:46:18 +0000 (UTC) From: Sergio Lopez To: berrange@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com, mst@redhat.com Date: Thu, 31 May 2018 09:46:00 +0200 Message-Id: <20180531074601.10647-3-slp@redhat.com> In-Reply-To: <20180531074601.10647-1-slp@redhat.com> References: <20180531074601.10647-1-slp@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 31 May 2018 07:46:19 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 31 May 2018 07:46:19 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'slp@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 2/3] chardev: On QIO_CHANNEL_ERR_BROKEN set errno to EPIPE X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Sergio Lopez Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This allows callers to identify this potentially unrecoverable error. Reviewed-by: Marc-Andr=C3=A9 Lureau --- chardev/char-io.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/chardev/char-io.c b/chardev/char-io.c index f810524..f934eb9 100644 --- a/chardev/char-io.c +++ b/chardev/char-io.c @@ -168,6 +168,9 @@ int io_channel_send_full(QIOChannel *ioc, =20 errno =3D EAGAIN; return -1; + } else if (ret =3D=3D QIO_CHANNEL_ERR_BROKEN) { + errno =3D EPIPE; + return -1; } else if (ret < 0) { errno =3D EINVAL; return -1; --=20 1.8.3.1 From nobody Sat Nov 1 22:17:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1527752908880320.127256481044; Thu, 31 May 2018 00:48:28 -0700 (PDT) Received: from localhost ([::1]:42440 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIJw-0002ha-1w for importer@patchew.org; Thu, 31 May 2018 03:48:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34700) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIHu-0001f2-On for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fOIHt-0007nm-Rl for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:22 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:34482 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fOIHt-0007nB-Mm for qemu-devel@nongnu.org; Thu, 31 May 2018 03:46:21 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3EEA17A7F6 for ; Thu, 31 May 2018 07:46:21 +0000 (UTC) Received: from dritchie.redhat.com (ovpn-116-105.ams2.redhat.com [10.36.116.105]) by smtp.corp.redhat.com (Postfix) with ESMTP id EEF2D2026609; Thu, 31 May 2018 07:46:19 +0000 (UTC) From: Sergio Lopez To: berrange@redhat.com, pbonzini@redhat.com, marcandre.lureau@redhat.com, mst@redhat.com Date: Thu, 31 May 2018 09:46:01 +0200 Message-Id: <20180531074601.10647-4-slp@redhat.com> In-Reply-To: <20180531074601.10647-1-slp@redhat.com> References: <20180531074601.10647-1-slp@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 31 May 2018 07:46:21 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 31 May 2018 07:46:21 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'slp@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH 3/3] hw/char/serial: Don't retry on serial_xmit if errno == EPIPE X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Sergio Lopez Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If writing to the frontend channel failed with EPIPE, don't set up a retry. EPIPE is not a recoverable error, so trying again is a waste of CPU cycles. If the vCPU writing to the serial device and emulator thread are pinned to the same pCPU, it can also compromise the stability of the Guest OS, as both threads will be competing for pCPU's time, with the vCPU actively polling the serial device and barely giving time to the emulator thread to make actual progress. --- hw/char/serial.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/char/serial.c b/hw/char/serial.c index 2c080c9..f26e86b 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -262,6 +262,7 @@ static void serial_xmit(SerialState *s) /* in loopback mode, say that we just received a char */ serial_receive1(s, &s->tsr, 1); } else if (qemu_chr_fe_write(&s->chr, &s->tsr, 1) !=3D 1 && + errno !=3D EPIPE && s->tsr_retry < MAX_XMIT_RETRY) { assert(s->watch_tag =3D=3D 0); s->watch_tag =3D --=20 1.8.3.1