Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3621722pxb; Mon, 24 Jan 2022 13:43:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJyze6rPtgwW96rUQ+25QGroH2ofVTbTHxepudlUUsbWe0dVMFNeg3mZrEnWmEbLu1UJ6zeE X-Received: by 2002:a63:b145:: with SMTP id g5mr13104790pgp.113.1643060590171; Mon, 24 Jan 2022 13:43:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643060590; cv=none; d=google.com; s=arc-20160816; b=x1ROlCPoUnumCy823odXq9z7x31Qq4zWJG62USkP0R1n9kiRCpuY5Yt82PudHv6Vvy qBQnqp+lu4Yw7OoziLsy8m/lTRfK/4777IZ3T8fHZkrlsv0wbg7Ua9gQIoJd4xP9xTnz mMmcxCavJZ3hugetfiv/W+Ldok5C9ZC3wILYO47gpJzuoVoW2anpkThOB5YrCIHZzJC5 aZfhCwYcCuUmrlXiJku2o09H21FhzCS7fGUX/xwdgRWzcYEOazPtQnIESSX7T8V3MkGJ lHaOukzCApNAggFz9DBzFSbnxRnuftmiaqb6VT0eNFOVaxAyGBl8CzQ/+Oa0X6FdxkBb ZgwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ICRSOPSwL8CDQUmIY33yNs+3yzZyUrCytFxnYlVwpc8=; b=RSZheTLy1DCRDMuXxOAhNpT/WtbrE747UR35Oi4Oxz9UJIBKCeFSfyQQuM71n1AOdU 3mzd/JvxAFqxkhucvsV6ZUis6DRAmAETIDA3P2cEPauED9eroTovl7kJa+fZWtq3heQG c/dQWowYIMg8mGljo6/NyifoWSMiLcwrTRv6S6uzXOU7+NGjeBdC3b3TdMp4ifoJma3r O0nMW95JKWh7tj3fEGuSpT7fNDjq4i1LA3STSGOZ+J7lhlSleuPb+F7NaRivbXaCCZLL S9EY7fjOYimVPqE+ISNs6zG2JQkA3tBMSXu5Re1qEsY2iXCWmLDAfSY6UP8ESJNckwEu pCMw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=lAg2F0Tz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id u5si14466622pga.242.2022.01.24.13.42.57; Mon, 24 Jan 2022 13:43:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=lAg2F0Tz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1450811AbiAXVV2 (ORCPT + 99 others); Mon, 24 Jan 2022 16:21:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359047AbiAXUxE (ORCPT ); Mon, 24 Jan 2022 15:53:04 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 157F1C02B86B; Mon, 24 Jan 2022 11:59:02 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A7DE260B43; Mon, 24 Jan 2022 19:59:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 73670C340E5; Mon, 24 Jan 2022 19:59:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643054341; bh=nTQQoOcwOSWdtjW4HqwT3MpwSNGEGW1hkZI3TJyvSr4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lAg2F0TzMBdQ7GBQIlVp37H+WD8oXlmL6xlHLLJxw4B8V+QHijRzfneXvjVSqAvxk JBLU+O07iynz5J0ozM/FA1BpeF+mmQjSIjTzbwVzjNpPbSHbDmSq9vjcz3CXtiiV9U zKrK+lJKN0IjUW8LsDD/G47iZFM5XBRlXdpaGyfY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fugang Duan , Sherry Sun , Sasha Levin Subject: [PATCH 5.10 324/563] tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() Date: Mon, 24 Jan 2022 19:41:29 +0100 Message-Id: <20220124184035.638726101@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184024.407936072@linuxfoundation.org> References: <20220124184024.407936072@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Fugang Duan [ Upstream commit 028e083832b06fdeeb290e1e57dc1f6702c4c215 ] The UCR4_OREN should be disabled before disabling the uart receiver in .stop_rx() instead of in the .shutdown(). Otherwise, if we have the overrun error during the receiver disable process, the overrun interrupt will keep trigging until we disable the OREN interrupt in the .shutdown(), because the ORE status can only be cleared when read the rx FIFO or reset the controller. Although the called time between the receiver disable and OREN disable in .shutdown() is very short, there is still the risk of endless interrupt during this short period of time. So here change to disable OREN before the receiver been disabled in .stop_rx(). Signed-off-by: Fugang Duan Signed-off-by: Sherry Sun Link: https://lore.kernel.org/r/20211125020349.4980-1-sherry.sun@nxp.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/tty/serial/imx.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 28cc328ddb6eb..93cd8ad57f385 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -508,18 +508,21 @@ static void imx_uart_stop_tx(struct uart_port *port) static void imx_uart_stop_rx(struct uart_port *port) { struct imx_port *sport = (struct imx_port *)port; - u32 ucr1, ucr2; + u32 ucr1, ucr2, ucr4; ucr1 = imx_uart_readl(sport, UCR1); ucr2 = imx_uart_readl(sport, UCR2); + ucr4 = imx_uart_readl(sport, UCR4); if (sport->dma_is_enabled) { ucr1 &= ~(UCR1_RXDMAEN | UCR1_ATDMAEN); } else { ucr1 &= ~UCR1_RRDYEN; ucr2 &= ~UCR2_ATEN; + ucr4 &= ~UCR4_OREN; } imx_uart_writel(sport, ucr1, UCR1); + imx_uart_writel(sport, ucr4, UCR4); ucr2 &= ~UCR2_RXEN; imx_uart_writel(sport, ucr2, UCR2); @@ -1576,7 +1579,7 @@ static void imx_uart_shutdown(struct uart_port *port) imx_uart_writel(sport, ucr1, UCR1); ucr4 = imx_uart_readl(sport, UCR4); - ucr4 &= ~(UCR4_OREN | UCR4_TCEN); + ucr4 &= ~UCR4_TCEN; imx_uart_writel(sport, ucr4, UCR4); spin_unlock_irqrestore(&sport->port.lock, flags); -- 2.34.1