Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp687515imw; Wed, 13 Jul 2022 06:20:24 -0700 (PDT) X-Google-Smtp-Source: AGRyM1tWl03PsCGpZ1s1AF3ZVNHNSbhOjqER9pbEHT8tcdlGp7+ZxhvnwoSa8pNKUoimNCts/eSr X-Received: by 2002:a63:4404:0:b0:415:aacf:d394 with SMTP id r4-20020a634404000000b00415aacfd394mr2949934pga.437.1657718424722; Wed, 13 Jul 2022 06:20:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657718424; cv=none; d=google.com; s=arc-20160816; b=FFlj6rKmHOZiyA5wAcTBMV+mC0BFcjcTnQFsGif77FoYtKx0kJ5MUjFeCx7VI7fVXB Pi2IS61iR2m4xaVhNlFdtUF2XSZEUvqgkV7sLZIpqRL91pF7A8B4LqvWvHanFwNqknu0 iuoI/Qc46JK3cl5l9JcRYQrKOiABH8iL7DAKxNQ5Q9MBG3NoiNFUToQyqgri0k8fkR/x nh3UWpfSp65AatV7iLjyjYXkRnyRUxab2z4Dg2OjvVGVJdJMK36RpWNA1OiSCaR4HLUC lMULEzaLLNqUHAuu663n9bkOACCxMTorJPEgq8xRwo0XuGLQIKOWqYnbfcc7ZPhgq16f sEtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=oLyFYnPfeBbsdMI1D5MiIAVqtfxKriA/JoWUyBDItRs=; b=Zz+vlaKnJE5YM6vhMmWVTF0ZTubzD6tZAxum36/44eBLjSJzxwHoiCBntNB60C1uJH TPCuU+xxdADUmNpgEK8x5+IEEPjn+wNSAmdJsFjxY6Ze084Uq1nn/10l80BuXGgbBuhQ 9i0l4xMVc/A+d/1CB/drISJKeGT9JnE30ozB6krDNOSkdllTWHLW9CsR7nzVUOFHThK2 43QC2SWtlMMNMXfBb4LKSqIyeJ9sK7ilVpmFOc+7ZnydVyzsHrVlc3InMrM0zBJ5SUXi /FcM9KcT00/SetLGSy+tXMzFYhYiK8f07IAXnsCbDX5G/ij0/f+0afySN518ad1JEgIR s0PA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=kkqCkR0t; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a6-20020a637046000000b004122f736d98si16724545pgn.59.2022.07.13.06.20.12; Wed, 13 Jul 2022 06:20:24 -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=@google.com header.s=20210112 header.b=kkqCkR0t; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236147AbiGMNRf (ORCPT + 99 others); Wed, 13 Jul 2022 09:17:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231748AbiGMNRd (ORCPT ); Wed, 13 Jul 2022 09:17:33 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 77CD6CCD for ; Wed, 13 Jul 2022 06:17:29 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id a8-20020a25a188000000b0066839c45fe8so8389181ybi.17 for ; Wed, 13 Jul 2022 06:17:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc; bh=oLyFYnPfeBbsdMI1D5MiIAVqtfxKriA/JoWUyBDItRs=; b=kkqCkR0t9of0kYRQg0ELnWvmpY0fNOO85FmPcSftGFP8Uwnkd7hIbc7SW9eMhC5Vr7 lvd7zmUfCBdNduVlDdPse9oPwBPyYPpnpsVM1R7KKskAWNOpO0ZB6mce/Pod2pznbXfO rBQgCe3KNFNGYWQaBCYkQfR1KIYGvCjoZxPX3fuAMbufXmmTLvQ6TiGxWAdSCrtcztll VlaUCqcBOvQpclZ51bfiLUGOHb7UVUYZTk0LwQJwbLwLUjuT90QwqeUI61KZdSr4/fZ5 /aT5ZTOvTFFDZ87q9NlopOAXbXz7pU4zCTTVf6UyeR+RK3VO/lAo7UUWxq75UMVKfWj2 XGcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=oLyFYnPfeBbsdMI1D5MiIAVqtfxKriA/JoWUyBDItRs=; b=iVptbt20TT9KtuTqLTisoBSDqWUia/V0PdYjINpefrhX7qUoiBrX+qnm7t4KP4Gv04 uaMYUdNPoiGzTvDMMEPH3w91qfpte2RlQ2pxPZuVZnpXx3RstLsT0qx4qOOJdGxrOtkF 8jNbjIZPzAcIzQFoUn2CmPG8afvdGzPotdeErJCs6vWFCSoRb7t7qNupNDZvHBc4N37A hPyfpCDAlLjZ+2KBx6cRHjpw+WNluW1UGPDjhKywHWnsGa0IKSM51zpdIFXoVwePo3I7 u0Flfgrs3adDsZyRZqnRqJnvX/k90BVfJm5EGpysVSTwJGSoLgtvSB7fSFEJVRfiUSPJ PAfg== X-Gm-Message-State: AJIora8QKsAwi5p7K2dg5KGjTRERJdt3ZYwYRSqAjd3MRHD6gk6Q9igu YLHpJTkT6FAvbjj3jSHZzHEsNuoAM56oc4IbrgBY X-Received: from vamshig51.c.googlers.com ([fda3:e722:ac3:cc00:3:22c1:c0a8:70c]) (user=vamshigajjela job=sendgmr) by 2002:a81:101:0:b0:314:5477:aae0 with SMTP id 1-20020a810101000000b003145477aae0mr4092131ywb.253.1657718248786; Wed, 13 Jul 2022 06:17:28 -0700 (PDT) Date: Wed, 13 Jul 2022 18:47:22 +0530 Message-Id: <20220713131722.2316829-1-vamshigajjela@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.37.0.144.g8ac04bfd2-goog Subject: [PATCH v3] serial: 8250_dw: Avoid pslverr on reading empty receiver fifo From: Vamshi Gajjela To: Andy Shevchenko , Greg Kroah-Hartman , Jiri Slaby Cc: Miquel Raynal , Phil Edworthy , Emil Renner Berthing , Heikki Krogerus , Johan Hovold , linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, manugautam@google.com, VAMSHI GAJJELA Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable 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 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. 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