From patchwork Thu May 31 07:46:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergio Lopez Pascual X-Patchwork-Id: 10440481 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id CC9B3602BF for ; Thu, 31 May 2018 07:48:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BD9A129128 for ; Thu, 31 May 2018 07:48:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B1EE729136; Thu, 31 May 2018 07:48:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 605C529128 for ; Thu, 31 May 2018 07:48:50 +0000 (UTC) Received: from localhost ([::1]:42440 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fOIKH-0002ha-Gd for patchwork-qemu-devel@patchwork.kernel.org; Thu, 31 May 2018 03:48:49 -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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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) != 1 && + errno != EPIPE && s->tsr_retry < MAX_XMIT_RETRY) { assert(s->watch_tag == 0); s->watch_tag =