Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp691409ybv; Thu, 13 Feb 2020 07:51:09 -0800 (PST) X-Google-Smtp-Source: APXvYqzhbrB3NEZ+r2tkFx1F9BnPiGYLKbsZipw2VTulVxEl00qQXP1cl1GJCvLtusgqqG4F/Ew5 X-Received: by 2002:a9d:65cb:: with SMTP id z11mr12994619oth.348.1581609069566; Thu, 13 Feb 2020 07:51:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581609069; cv=none; d=google.com; s=arc-20160816; b=fCnx2PeJEC+jJRAiZmD6JXteUqCDRQ2aSNcootT3ah5aOlhJyF2tBTMdJtXT+4aEu/ 2+2pXnbSlJehVPNwlAwR2kTuCwb4dKGYFA9SXFx2o23BGeaX+Ucs/DXn4KUyezbzuHJN Bzw1ZY9j2LgiRNFM0YfJHYKCPakIBADDBJxsy6tn//lhyw+ubeExhX20RcFJK+BzB+07 Avw7iguU5y6ohdpNAf0nofxo3cUqfhW+Yug80a9NmDAlxVjUCOhIdWivu9o867VMb/VR laOx6aNell9ZFc8wRHahh9zHcI2xfMOAuGqxd9iKEvsU1HID5Mrmdai94SbehHp4phXS nUdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=2lu2YYRihmPqA21DpnNDD/uu/zmST+fhw0sWqvLn014=; b=x5ytTeC07yGaiVEsRWlpUDVmdcXhWrw7Gc63vSfdTMiyZ6Yq9HUitNdm0auuyxWyuB Q2GDX4UIugdFTT1EK5OxXQMy2N0RTpZmZk2far6rZCHHuwgcatBo8wTSWrwqYW+ypDnn ZO7RwXHQrkUR+8Geoz/idlidusqTGEM5i6WP+J7f8leyH2ge8u5KTgZ5uw7aDhJRNgeL eHBHRcLuEk1xWKc4ymhuDiy+S0wSUo5w1x6UHpUANBRxqnWM6U8YSPHh5IMmXbF/StCz kLQetZheB013pxtpvtcysTRezcFGuer/1PI1ROVojYgIfMlh3Yi4mVhfALHhs0rj5QYY EhCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=p9ED0yIT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w29si1453602oth.313.2020.02.13.07.50.56; Thu, 13 Feb 2020 07:51:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=p9ED0yIT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387421AbgBMPtm (ORCPT + 99 others); Thu, 13 Feb 2020 10:49:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:46478 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387620AbgBMP0j (ORCPT ); Thu, 13 Feb 2020 10:26:39 -0500 Received: from localhost (unknown [104.132.1.104]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 53A9824693; Thu, 13 Feb 2020 15:26:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1581607598; bh=wHGaMKgffCtYSsTxzAw+uNAjQmYOFbcSC4KShEuTDTo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p9ED0yITl+Z3mr72eF3gUqmakeUZzqUHFsXF32cfDpJrXnb3Wdz3f1Bi/fOUYtRzU k8vs9AfRPgKgAHfJ0ule4nQ62YIOu7oFknnzB0is6NYS+o56biAx1RzO66/w6bjx5K MDrVi23W6eoAJWHNDG8r0cXPHF2mIhZwq1g8ZJYE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jean-Francois Dagenais , Shubhrajyoti Datta , Mathieu Poirier , Sasha Levin Subject: [PATCH 4.19 16/52] serial: uartps: Add a timeout to the tx empty wait Date: Thu, 13 Feb 2020 07:20:57 -0800 Message-Id: <20200213151817.584286846@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200213151810.331796857@linuxfoundation.org> References: <20200213151810.331796857@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Shubhrajyoti Datta commit 277375b864e8147975b064b513f491e2a910e66a upstream In case the cable is not connected then the target gets into an infinite wait for tx empty. Add a timeout to the tx empty wait. Reported-by: Jean-Francois Dagenais Signed-off-by: Shubhrajyoti Datta Signed-off-by: Greg Kroah-Hartman Cc: stable # 4.19 Signed-off-by: Mathieu Poirier Signed-off-by: Sasha Levin --- drivers/tty/serial/xilinx_uartps.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 66d49d5118853..7cbee19ea93d5 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -26,6 +26,7 @@ #include #include #include +#include #define CDNS_UART_TTY_NAME "ttyPS" #define CDNS_UART_NAME "xuartps" @@ -34,6 +35,7 @@ #define CDNS_UART_NR_PORTS 2 #define CDNS_UART_FIFO_SIZE 64 /* FIFO size */ #define CDNS_UART_REGISTER_SPACE 0x1000 +#define TX_TIMEOUT 500000 /* Rx Trigger level */ static int rx_trigger_level = 56; @@ -681,16 +683,20 @@ static void cdns_uart_set_termios(struct uart_port *port, unsigned int cval = 0; unsigned int baud, minbaud, maxbaud; unsigned long flags; - unsigned int ctrl_reg, mode_reg; + unsigned int ctrl_reg, mode_reg, val; + int err; spin_lock_irqsave(&port->lock, flags); /* Wait for the transmit FIFO to empty before making changes */ if (!(readl(port->membase + CDNS_UART_CR) & CDNS_UART_CR_TX_DIS)) { - while (!(readl(port->membase + CDNS_UART_SR) & - CDNS_UART_SR_TXEMPTY)) { - cpu_relax(); + err = readl_poll_timeout(port->membase + CDNS_UART_SR, + val, (val & CDNS_UART_SR_TXEMPTY), + 1000, TX_TIMEOUT); + if (err) { + dev_err(port->dev, "timed out waiting for tx empty"); + return; } } -- 2.20.1