From patchwork Thu Oct 3 14:10:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rasmus Villemoes X-Patchwork-Id: 1992360 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=prevas.dk header.i=@prevas.dk header.a=rsa-sha256 header.s=selector1 header.b=bKyjjgLM; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4XKD9P0B1Gz1xtk for ; Fri, 4 Oct 2024 00:10:49 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id D2BA188DE9; Thu, 3 Oct 2024 16:10:36 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=prevas.dk header.i=@prevas.dk header.b="bKyjjgLM"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id BF76888E26; Thu, 3 Oct 2024 16:10:35 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.2 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on20627.outbound.protection.outlook.com [IPv6:2a01:111:f403:2613::627]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id DA36988DDD for ; Thu, 3 Oct 2024 16:10:32 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=blD9It5yUE2MbibQ5W3ZLnlz7Xh6Wko7yfsdPpSouVLK+KvFBtj2dql1v7XzphWP0M+oY6PTmPk/0Lon4psGODVglSaNRT/lwkT9s2vYnEjPM9iin2ro5EM8xcyf0vvFzkajcNOR9Wc7i7q1AxjP5Z086/C5XE9N65b0xvB/Tn10CcF+RUbFksD2d7Y/d4X3Wso+rY5UpVpdLnuWiXDRJleYklyh8UbPjfx10UONOKnL2if+z4oLnz/ZnLWEUrJTL2B0M8aNHuhoekOv3+0r9zZXBVoKJI62jjhoqWg57TwukER0MdvLK1ZBFgeUP2f4cIBoMM1dojbE4hqSv/S8Pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kAQm2QdmwzhD58O3Fa1jy5mMXe2cKFzxaH9s4s5/BBc=; b=QshEEqzWYjryXh6kx5kj/QImwdxIZMV5GkxHqLYhkk+yHg4nICL/U4c24MVtSDP3klghYvfjIYJY0FXOA7jCKT9/H79nCN8/4Wm9D65rVztLzD2QpEn2Z0l9riqXnDlMSMxa6n+YwNoBEPIiIf9nUrSeswoavB/jgP2+L7w46aeuH4eCxYSMhheAXyRssxCCJgyIH9PhrRnfg7WX2eAhzPdVdowEziOAOuHjaL+8xbWbaIOLFCvtzdM8RcLBJBeZkJFJ3DEwJKytFad0CwIYGDKnKjlmlsdC33ryPuhWhmKt9kbsqOjU/Pu+rAB8Kt0IGm8opEXqF6Q5cZFaWVRqKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk; dkim=pass header.d=prevas.dk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kAQm2QdmwzhD58O3Fa1jy5mMXe2cKFzxaH9s4s5/BBc=; b=bKyjjgLMXfK3ouytRUAaMPK8ddMIfeMmfgAuBNGLR1RzVnsnFbGNCQWMy/1jX9edJNaH5fACjlmi7mV+10L+VcKR08+802S8Ancc3C3X6Z66lo1mS3H67e19vyyEKf6Z34jhUtw9SjNKI1+/8+Cq40VyPgrup83pbWw7FJPfz3Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=prevas.dk; Received: from DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) by AS8PR10MB6676.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:562::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.9; Thu, 3 Oct 2024 14:10:31 +0000 Received: from DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM ([fe80::9fcc:5df3:197:6691]) by DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM ([fe80::9fcc:5df3:197:6691%3]) with mapi id 15.20.8048.007; Thu, 3 Oct 2024 14:10:31 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: Stefan Roese , Tom Rini , Rasmus Villemoes Subject: [PATCH 2/4] serial: do not overwrite not-consumed characters in rx buffer Date: Thu, 3 Oct 2024 16:10:27 +0200 Message-ID: <20241003141029.920035-3-ravi@prevas.dk> X-Mailer: git-send-email 2.46.2 In-Reply-To: <20241003141029.920035-1-ravi@prevas.dk> References: <20241003141029.920035-1-ravi@prevas.dk> X-ClientProxiedBy: MM0P280CA0037.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:b::27) To DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR10MB7100:EE_|AS8PR10MB6676:EE_ X-MS-Office365-Filtering-Correlation-Id: 924f1657-eb7b-4d79-090e-08dce3b52401 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|366016|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: tDVMsT2zkbiejdXgWctyTUkQxgLFOtZ5LHZxI9iftCwCZNkRqWrblb0EPGW9cH2FK/zKKRJ/Abe5KpoUGOvz27/gVpCCzc7VowpCPU/IkoT2R8yhj4yIpJ8UnSNeTFRj16M/PjhXU61oY2M4YJg52/QQC71LNeGxXl/bsrFR1nHmXuzZq9eJDXYUSuLnAIokFqda6O7rLclLcYoH718LhioHEoSU4dex+1JulbiZUEQd6tinBg2KQYN+pUrwdJoo9bzdF8LKqiEvsc3oVm33hqw9N8zZNB95k470M+nrpEscQyXZ7Iz+HZENvQcHQvgtgcKo3+5d6VLW/WDdzRcGzZ/MfkkK7SMqV37D9atSERXFoNJo0juLJwLlA4iNYsJ8uyPAgzFoU3LgRg2tFLBSV8EX3aUl0bKtXhHMAhNmv7xoRvG2SyDdekokYk+HSZ3lctZS+41QO+GqeK4ZGWEiA4ahU9pwzxRx9ekYjuiBKiDg1a/T63hbN/FfsdsZ5uFlbeIlikE1WKsW0a6bsCANFFjndyU33ZhJb3ncX5nOq79Zjvr4OdzcHCtF+/aePw2qdOKHbmkSV9y3W73R/jyKaacrlfhpToUYh1OYm57Owjs/+xjFn+R/EgJszneyMpMHWZZhPVI+rYYZywg9xADqVXpzxS7YzwLYZmD9FzETdaQdwQ0tQF4nRgM0am4oUftT5Nkn5Zdwzi0MVCADzooO0SXBNYdOrQKRypDTBKQCVCSHpyVHjx71mAeTUBxdfH2FOZqqkjAieyWFC3gHONkcCgzXfYIgecmIjX+eqboDhtPnUTxnGjj4wRzDQILH5G0CpYRbj/HMZBCRDqjZESv/uNeG9Q4Zq3Rjg4I8bD/ESTHS6N3CrIh6agErDMWgPb1PpOw+6hoxo0zmkxcHbogyWnOSI7/IqExTb8FyxfTk3yaNELHPEBVy9e3FxDPXZ1iXZtEX3ClEflT9lzG6Yeavrq0edYC/VhArsGtxRB0h3WmQxYAKjC88i9wFhW+dJSTpFMn54hzXlTSNXuFpzt7Z6Rw7RnIOSgbqxn3nG+oz/zMaEKI2bMsEzu+sPDDqkAGDwDlIMQV6K78CGRwyinpWn4buB/vk4N2QvMCl9/mkBOE5dyNp6Y0RmOsXkL+/bvF1J4kmF0+lPHXRPcW5oGRTLc3PVLJY/20xh+ciwl1mAmBlc0zE3lGMknGJH2qwGw2UDEd+AjeM9VlutpsdjERdYgcHNJ/yKGTX45a+WJguf7nC4K4n/Y3mdEMXKepSN6ehJRiXvK+y0UpqK8r8bbBCPr4pSD7lK4qr3E9A14u+BEme5pWAd9FcO/g7B6BFfzTa X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(376014)(366016)(52116014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lKf1vbSow5ivpHpg/aeu0wGE4qTQajrN6wAMG5gdpKGzirs4wjosr0lte+I3Z+ZUUjxZvEdqQfFHEiMb/5n2I+bn8yLiAWUnb53QDr+iXOSEH9dqxoOBMs4HpwlIMMVFUDjkvPzZUS/npYINCMuf5d6sYQwA/DfkiP/BIwUB6q+QFQ4Jvt+Cb2LUVXApRT812LUV1n83voWwU/kzQNtS8lYqNaKAmC/oecJ6Wm1a9TJhgsUU885jzrpqftsa1fI2W0o4WpO3UOW2BybHswbccQKeu152RT1lJBsCuVEHv3z4ghjv9IrRKAHcGF5P992Ov1WDBga4F7Y+nlU27aI1PEix7dZW0ah2qmgsKAoETwfaqL5ndpIORUyHasDvbA1jVt2ZvKRdPlIQQEKPBomNXe1kaSSIeVjmdmaSJGzyGLcC4mNUd2QfHQd/fu6kcMLzlOX0imK1EeJHO/lfprM4mV6d2YzXf9ov4TctxjW+NrBJObnoXz0VYbXWYQ3U7E51P28ZE/5eZNOVYIuHPy5Fp75BeTsmU+cIJG4BpoXwx1NLiUHIZValZ7rn9LoP/HRbq9BuMI5eyOdJ/08x4ennnlh0cjAXij7yJzGi+dZ1zUkW9z8C5+zYR/kf2ROtN5348UYmwiDfX4F83jNm0NhfLROq0lA+s1BCDLm/8LU3JA9fhVV8iVEC/dx/lgPiLIuKhQopiIouyr5v2boGlquzA/h++//0peMN+A9TaegWSQwN7cQ8nLIB7SyEi74WNavzkI3LYxBFK+0fyfr03XMHRu8BvXVoaqJtq7J+errQiJKUnG/aR/UVXqyj7GEDplZ/qLn3OVMjSoMeH4GjF/kVBn9W8p7Nf+6fM9hKyObyCeHmlRnLhcq7IBdbNTlll/jn1wRUmi4K27IF7HjDEq0dRXNnuLxdTdGIDkCxTnF7gIv9XmGOUx1ehAE17ZazNptbxNPDNQ56c0x7Nf+rVmeBBx1NID1UjqN0y2geCO+6Mjo9xHi8INbs4m+T8RiDBzwwSfo5MNT72ZJFsig2ZjzjiaBqaPjGPjM3SJ96/LKdcnHfvwAPCtQZD69/rUpG8rQtPf1XTJbBQUdXDoPpcQnL3RZZ0gXYZSny7A5PXttRV1NfBDNlzSXU3FB68QuF5+TV4mVMD9C9GoJytbGWKzr5yL76z37TInsxITmq0QcwfGE1ngoc7z3fnskYRASw3CY8xEya2mdyczNPAyVxNLX4mgKXOGXEZ6Oe6OPzMVeIPF1t5CNRLcQTM40oBpXxzgeVU9azqk3Cna7Dm1H1iF2oSPr3S7J7lzNUdcHe8c1vqIdFq2FKPYWQ3dPP0OR6fFv98hIMtDxN8ANgCRSRbjep1StqKh5kHCoP/x+WmjDFYx8nzBX5/M+xgge3IBsmLvszjReOs7zylZNcNlGXKncqe62hJm2D2zuB2ASgBjRH947K1/1m96MK3aRQTN7cOcd2sDk98ANUGCVm6sG3lbhi2TqsxCcCSTi3fDwq5+0pW27RT5b07y25DQv1W/4ZyPbmC1oiehu+MykQKk0y+MkC6yDqaa8Y2jwvQXUn2m+n92ucXchZkUCvfTrreJgV6N0C1oH08pWtQOK56XHl9yYtmA== X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: 924f1657-eb7b-4d79-090e-08dce3b52401 X-MS-Exchange-CrossTenant-AuthSource: DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 14:10:31.3615 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RVIUN3OTsS2XeT0Gs7tOwh2yjhYGizFB/P6ZaPr/ieQJmmsMnVxQsaprNJ0ltwRd+UsSfbtqWR5W7XKui/ATyIA7NivYkDdZD/UzsEpU0sg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR10MB6676 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Before the previous patch, pasting a string of length x > CONFIG_SERIAL_RX_BUFFER_SIZE results in getting the last (x%CONFIG_SERIAL_RX_BUFFER_SIZE) characters from that string. With the previous patch, one instead gets the last CONFIG_SERIAL_RX_BUFFER_SIZE characters repeatedly until the ->rd_ptr catches up. Both behaviours are counter-intuitive, and happen because the code that checks for a character available from the hardware does not account for whether there is actually room in the software buffer to receive it. Fix that by adding such accounting. This also brings the software buffering more in line with how most hardware FIFOs behave (first received characters are kept, overflowing characters are dropped). Signed-off-by: Rasmus Villemoes --- drivers/serial/serial-uclass.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 05fe9645bee..28d7a202afc 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -328,10 +328,11 @@ static int __serial_tstc(struct udevice *dev) static int _serial_tstc(struct udevice *dev) { struct serial_dev_priv *upriv = dev_get_uclass_priv(dev); - uint wr; + uint wr, avail; - /* Read all available chars into the RX buffer */ - while (__serial_tstc(dev)) { + /* Read all available chars into the RX buffer while there's room */ + avail = CONFIG_SERIAL_RX_BUFFER_SIZE - (upriv->wr_ptr - upriv->rd_ptr); + while (avail-- && __serial_tstc(dev)) { wr = upriv->wr_ptr++ % CONFIG_SERIAL_RX_BUFFER_SIZE; upriv->buf[wr] = __serial_getc(dev); }