Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp896058imw; Wed, 13 Jul 2022 09:54:04 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tnZFay671udPh1MQYLjsq03T3W5G9SbcicgVpGTFNiM1Ws0ARIpryJs9fnHt8TWMCkcfTD X-Received: by 2002:a05:6a00:15c5:b0:52a:f58a:86fb with SMTP id o5-20020a056a0015c500b0052af58a86fbmr4027478pfu.23.1657731244105; Wed, 13 Jul 2022 09:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657731244; cv=none; d=google.com; s=arc-20160816; b=txmLpRfW+pULsBA9QY8vEltNK4O9DvtL+XCmBpzXhjRR1u3gK+flfLFYPXraubgMSR ah/Vzlta6XmUBN8r9mZJIjLs07N/1dnWBV24yDRfD+B8DMaZGbYXVKydx+L4yyHQ/eVn 8AG1/ug5ZZLif9lxhjs0PFoBt7h3RLPD4aHH0lFEhWjf73zZZWvRfgugp9uaNshUteyV XI3VC9KcBCvzDhIvTX/tumy2qmCJmpJLdSPLgxXs8iqfSCqcN56pSYePYwbsqbfGKhVf N/TDAlJN88c7YvEWeu9236rUElkzho+ahtsUQnpSNXTasmUram+zKT7v/t07Q4Wr5XSx f8dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:organization:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=EZLm/I08UmFt6W66wqX2BVOj7VzeqN9vzDarc86BYmo=; b=XZTMfUNn8F2o9uvaCs37rkG5Ad98cXZMoI0ISzwW4bJMy9KktOR7tMhS5USzU3DHQ4 91r8tZQRtMjQMHnVap/P6kk3d5oE+35MqeWyfPvCC4joSGRwm4I8OOJ3Jjf14lt2qEAf gjef9k1aoQg9xRWwRDyfP4FXDEfauPnmk2L2dFWxIg6nlB2ns1jhuFoGMSFcmY4my63p wMdMuh7UDE6O/TUnd4/R4lesYlfuQVX2gse8jH79LA1VZmBQvThOSFXtc0ZxmedAw3Lu lxOSDr41EnW44n2enTOAFPBSTNlVqZ8neFERoEwGr4+3D1vlsxMqlxC7uqJTuu6dO0xd V2+g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aTzSBd44; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c2-20020a056a00248200b0052acb294d94si14049734pfv.100.2022.07.13.09.53.52; Wed, 13 Jul 2022 09:54:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aTzSBd44; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236733AbiGMQLi (ORCPT + 99 others); Wed, 13 Jul 2022 12:11:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231685AbiGMQLh (ORCPT ); Wed, 13 Jul 2022 12:11:37 -0400 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 584CF29C8F; Wed, 13 Jul 2022 09:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1657728696; x=1689264696; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=MYSKoO4+JA1HLIxr6+ZiGU46DVwUCWwtwniY7flkkp4=; b=aTzSBd44Q05EgMeRC11W9Xg2pTjAN5xZ6lvpvguTjW0/aP1cau3uXEkI 3+XcnsQSgrYgsitqLCPMCuEWK6Em4DDjgg9KTeV0hlPZ1rIq74xGWJVHA eNluFRARFunYQ3fHqScjBOtYgeEpowrVBQMCqGOPTKX8vGOcW8dTTBtUA 7I+DN5G6SWvF6CGeFMe+btKvt+kxe9hvrb6pUrBuy+FvoIKdU/T0gMREB pRNuzoLORybWebeqKpvZjXo9GmmZ5I14sGkYfmejj3RbmDL6f11HGYOQr vkQY/oRuLxn8wdFvtuF42cjCxh8yf6KtsC5JihYIZyUCjB3XMA+BuZPSn Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10407"; a="268304430" X-IronPort-AV: E=Sophos;i="5.92,267,1650956400"; d="scan'208";a="268304430" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2022 09:11:35 -0700 X-IronPort-AV: E=Sophos;i="5.92,267,1650956400"; d="scan'208";a="545912368" Received: from smile.fi.intel.com ([10.237.72.54]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jul 2022 09:11:33 -0700 Received: from andy by smile.fi.intel.com with local (Exim 4.96) (envelope-from ) id 1oBexW-001CSU-0Y; Wed, 13 Jul 2022 19:11:30 +0300 Date: Wed, 13 Jul 2022 19:11:29 +0300 From: Andy Shevchenko To: Vamshi Gajjela Cc: Greg Kroah-Hartman , Jiri Slaby , Miquel Raynal , Phil Edworthy , Emil Renner Berthing , Heikki Krogerus , Johan Hovold , linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, manugautam@google.com Subject: Re: [PATCH v3] serial: 8250_dw: Avoid pslverr on reading empty receiver fifo Message-ID: References: <20220713131722.2316829-1-vamshigajjela@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220713131722.2316829-1-vamshigajjela@google.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 13, 2022 at 06:47:22PM +0530, Vamshi Gajjela wrote: > From: VAMSHI GAJJELA > > With PSLVERR_RESP_EN parameter set to 1, the device generates an error > response when an attempt to read an empty RBR with FIFO enabled. > > This happens when LCR writes are ignored when UART is busy. > dw8250_check_lcr() in retries to update LCR, invokes dw8250_force_idle() > to clear and reset FIFO and eventually reads UART_RX causing the error. > > Avoid this by not reading RBR/UART_RX when no data is available. From code perspective looks good, Reviewed-by: Andy Shevchenko but maybe Ilpo or others have something to add based on the practical use. > Signed-off-by: VAMSHI GAJJELA > --- > v3: > - check lsr based on FIFO enablement > v2: > - update as per review comments (re-format comments, xmas tree ordering) > drivers/tty/serial/8250/8250_dw.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c > index f57bbd32ef11..7573904579f6 100644 > --- a/drivers/tty/serial/8250/8250_dw.c > +++ b/drivers/tty/serial/8250/8250_dw.c > @@ -82,8 +82,21 @@ static inline int dw8250_modify_msr(struct uart_port *p, int offset, int value) > static void dw8250_force_idle(struct uart_port *p) > { > struct uart_8250_port *up = up_to_u8250p(p); > + unsigned int lsr; > > serial8250_clear_and_reinit_fifos(up); > + > + /* > + * With PSLVERR_RESP_EN parameter set to 1, the device generates an > + * error response when an attempt to read an empty RBR with FIFO > + * enabled. > + */ > + if (up->fcr & UART_FCR_ENABLE_FIFO) { > + lsr = p->serial_in(p, UART_LSR); > + if (!(lsr & UART_LSR_DR)) > + return; > + } > + > (void)p->serial_in(p, UART_RX); > } > > -- > 2.37.0.144.g8ac04bfd2-goog > -- With Best Regards, Andy Shevchenko