From patchwork Thu Oct 3 14:10:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rasmus Villemoes X-Patchwork-Id: 1992361 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=hYCGoGm9; 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 4XKD9Z6CTnz1xtk for ; Fri, 4 Oct 2024 00:10:58 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 4A6BA88E3F; Thu, 3 Oct 2024 16:10:37 +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="hYCGoGm9"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C69D888DDD; 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-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20611.outbound.protection.outlook.com [IPv6:2a01:111:f403:2612::611]) (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 2862C88DB8 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=vo8jJxjeG04THc+X5oBSpb89FmLsm4Srx4kET34wGuycuHob5aN/oGqfTE1bfSI28hp9shraS4R7RpV1dDqk8EPQ2Nnkpz6Hu9fZcvpV7wLq7lqLcpsleIq61gQ0drsnc/Ifke9pRxQ5jmaFzuWHw9D7dd8q4Rm73m8sYc+PhrDdp1xWzBW7BV9vLiX3koHNEhCFCTXHgpQQ+FL/AZ8JOjcF8w1Vz8k2Uhm2C59LXNp6K2kjA80lUKx5Rb4q1feAwUgYJ5klv6SRFuAnn/ptvrDOl8bAj4IfCpEG/PHe5SmHU8+eQa5XZoPG3Hu0/nCSrJByx0IpG8o6JLCvqB3aEQ== 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=a6CiovnDQRK/J7pEWujJRdTpdWqKYiaN0cK6Cb389dI=; b=FCZ9VXrrtpfy+RZYC2QAtreI0H+lJHUCpzh1OUhEliyruJe7Xfqs/AWYPQ3z8snuS+PnLwHfxsLPLpOUbkff8OfPGQWxF0Yt1fVrX2w7gRzrYG5Fm1sDzjh1J+waelAJ7UrhMcubkY6vAU5RuGNC878cU3gpkfv0Qari3Y7K4K2KOvXxo3Xy9BSDkfUKX6I1DGmY2yYxTvKyXSraV3FOz/UjKlPXeKcUM2E4lnhO0WSImR0txkGtkxCNF5vC/N6X4bjK6Phq4lgmyu7ZJT3JaWWZxstHeax2mgywMrT5yzebSgEFB0RAwAv5V3ddL5gWUqBqL6kdr+G5PEe56r3FDw== 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=a6CiovnDQRK/J7pEWujJRdTpdWqKYiaN0cK6Cb389dI=; b=hYCGoGm9GN4urPXEnACj0ykMAoMivaaJT+DbW3KvprobdX5OpxsJTDY5x/CRSVdBaY4mTdoUKXZtalh5OaEe/Gzk2NS2oAxI49t0NUEV1UgCoL1ctuyiDzub4UYjgThPTXfv1UKTwqTeUMAlb0GpXOzdAGfdY3f7IuZY4RxWrFY= 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:29 +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:29 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: Stefan Roese , Tom Rini , Rasmus Villemoes Subject: [PATCH 1/4] serial: fix circular rx buffer edge case Date: Thu, 3 Oct 2024 16:10:26 +0200 Message-ID: <20241003141029.920035-2-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: MM0P280CA0023.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:a::9) 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: 3281defb-3f65-4281-61fd-08dce3b5230f 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: pjytDcb/41odhNo//ak2pIMjEq1VyW+B82ti1/G4xFLDQMrOge11tvQzCIhF1ccu6ZyL+wTnWVCgSR89iKi/7Re8zHEqCZU9JbM3qTOly6jElgv97c7YgTKYo76yHrBv7xUHS+I/DKzZ5phX+o69p/td6q+tgYv7dcYTaX2bZjc4Ib9cSRZIrPHZs6J29FsuA2mU8scrnikgRbV+WiZAiL+nh36FRXBsATD5eNOsZc9s7ZBLi98Jm/BAwbX+wra03qCTb0nh2C0OIPcizmeXuauiv07kzzxRzlAeKnAqTTq4lRd1vgS0RYm+EIwWPaWZi+h/9Z26u92R1vVVefQ4Q+n8c1+GZf8OLPrN221KRZdd9mSveIl2IIJ0Aj5SqRDbvdSAwPxEv7/rPCfsglbGCtFMLkPIOwcvksAF0rEPoxDQuX6M6GuUQ2m3Gik0voIWSDj50R7eErqlCE2LUDGC2+nJTG3dlVZv4nmJrJLG05h1KBgCxrxdkg46TFbtwgp5JCKE8oG2PTHVrWSP+WL5d2Lh14FzaA5oiMX1U6GuwWXgdLUTId1Svmg39HvnFGgwrbcJh/EAQqwgwGI8h6f/yuqTVvoymYKI6VvYhGp1MVTpzviYuHWGNwsrum3f3EB+OVZ1lAJFTDypxBKCjSEZzbadi/SzwppMBGtHod62UT6OsqmU/eKysNzuiCtk+l/zX9QWjVhVSpHOTsX2QpgSime+w8o1hvYI3/B27BoHMr5khLywYmO6YN58iIH/1V6S8gHS+LblH/huDOqRs4XNNuD1rgmwVauNqmIB3LEzlWefCxOLwe6EsdfXVtRuToGZ60d3fblLMLjz7f886gj6f6fNVgbHstiLdaPqLIA/HITFgjuPIRekr3dKVH29WzRFNyS+s31p5G0XMp/dqzMjtCCboBVZcMD4AESkyftdvwI8mK3fVZVMUMweWQcRfAz4B6Rp9BDCC+0fsm/0w/Tquuw2Irv1H3cDM8YxmL4LwmdHplAW/glU7FtHDqEPmsFqmY5SXLJMgB9iNluyo3vnfn7TItgJQuhMhStAaj7l5uJoK+KjNmdgV8ZsHEflanxpKn29H2owGmXxfgQKL2C8AfcMBcRNMRdEL77L/IeChg7D83qEVi29HHUHfDxBokt7/oubzbzD+f/gsDSyiWbMFnYyB2rRPE8EjkWAbWY4+qyls1g3kXtPs/TRJFjs9H/5Z6NdOcGuM/Wshk58qRQoVdDRojqxxi1MZ5KO5L6X05k3vHjRQVQYyVb6iGrZjCyjoSj+ltIWpGYg7JmsEgXEcZLTcXna9IrGIYqEgpmyxxyThftaCCmFXlPHlrBj2t4b 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: Hnz+8aCpjJ8QX36B+2zZgWmMB19z0l0cs8jz+lSw2rO1fxcf3usjHVEUCEz/21m7pszL0C4jIMkSDBXj+LwXcxQ46htYvV+2FE/32qINZbXvc3Ig8EtjQub8XM9jzP3EcjiYZn/gTla4MBAPp9jet/mMkP8DaC3N6Tgpm4Vc91qQSpVB037YTWGWfrDgg/JBsWmV3uf3wTmxAHuBLCUQbuYHmNLWUU46zlot0GvBblyoi02MFQqFCaYkKmxWGxwPkihTQfYGSoLBqwhiSf9UUgrB4bq1vXustfBVs9rtaYPzZzHqL35oeHnxzI1csZLKayMLRiHRF3xPUQyE+eeaow599j2pp3nHgZhHrvZNMXL7+wHwvLsrB79dgq/VP8mzft5bYCF35DyyWBdm9iE/Zddc0LGoPzmUc+KKnPwrnQLfGgVEztq0rrLZmDLDW9hB6oBGA4bO4zLSuPdp9YjS7Qce5QntvcRhbK7cql7T25zIGdihz5yi4uDh0l/kIMytykIzGkB5U3PtBnnhQ1Uluau7f0gEsggLJRV6mKwb7yem3ZJroAQIanDtOGgq0Lp675Q537G3qHU4tI4jyuk5e8aKhV/Gn5CgABRRUIR+3/SBN86HfBjj0oapDRaliS3YNX8dsWpX2hjW5oO0+HmfWYwdx3AAKw2U1HI+FzuEIAvpbdR8YQEaJ9c32j6DKdAYX08S+805GqcUXPh4hC5lpewffVuXa0B/Vf5eF2z5OIlOqxFqHlLAyRsWrGeWnRMAztTnLQ/4cx5QMRwv6aCr0W5pmHGTE1sbHITHXEwPvVmY07QLN7+LEJRPKqb6Y2Tnz6poegVXf8hq9rAnu2/bBxCu+xlY3GRlNJAESJWyxsX23IJCmnY6dT/zgShAfAzovyB9GOFOztd4VdXOIYjh1prvf9n9vW0QPCftv1fQbPsGHOWU547Qxb8Nm2Vq+v7+35rSKfTE7OVhAioeVI5aVdHqqcoO7Bp7jnVXxCkLlQH5x2P1SEhJ1n5/swdxa8BWVAbbbZ3ylZbt3k1uqGwDN/mHaFdJbYKjSjtYaPREJAZfsoECT+OVsX0c9fD6B0DHL4Vai9REtuGPuWEHPAPQUfoVCz5oj40AkZ2uQiCwOWkBeFBBCP6jTeFWf/1CgmNiIveo3HxkPXKPVhuKoxnE857zNlPvFuEA80TrsC031usuPF6NMNjjXp6UnP542GCEW85RCdaNn6wkIlKtyyVLT5erwE5bQDxAi6gzf7pYD64rsCTTdkVmsYeUJU8MGqGKO6WqQ+hUX2XkN1U7fT69bhVjzINID+mfJZM+hi8qxqM8fo92zFDlhfi43mklHfGVXoL5uy6uREICNGVeGJo3QS1L71cAOYXGcFQ4h6D8Stk1Q3/MTFqOqyt+ZuTcyV32i0xStDfSs8C+sc0Ut34/ATLjxUnCZZZazpEr+P6IFRQy4bqm+5uBDk7DVWRAqXlwPUl64+F2shmpL8BL2wNsm13XpFtfEkLefcRZt1QNWHKlEKjG67Iw7JhsI4TxFuCcd/ookMVdO95KKJb5HAJPZo6BR0co8ND9yVx8hrQfIRL46YI2uMUWRZJbUBnM+easH0w4FSAVqKwaI+HXMcpMEA== X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: 3281defb-3f65-4281-61fd-08dce3b5230f 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:29.8442 (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: 6En6UTKZSU3qPxUVpP6NumX/C3Nq3bTHUEOSRGfY3duqKj0+WThyyNCWXk3Tv+lYRtqIu7P62KZQ+x/CNeRtjXKv7k31UrPjeTyStopBhoY= 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 The current implementation of the circular rx buffer falls into a common trap with circular buffers: It keeps the head/tail indices reduced modulo the buffer size. The problem with that is that it makes it impossible to distinguish "buffer full" from "buffer empty", because in both situations one has head==tail. This can easily be demonstrated: Build sandbox with RX_BUFFER enabled, set the RX_BUFFER_SIZE to 32, and try pasting the string 01234567890123456789012345678901 Nothing seems to happen, but in reality, all characters have been read and put into the buffer, but then tstc ends up believing nothing is in the buffer anyway because upriv->rd_ptr == upriv->wr_ptr. A better approach is to let the indices be free-running, and only reduce them modulo the buffer size when accessing the array. Then "empty" is head-tail==0 and "full" is head-tail==size. This does rely on the buffer size being a power-of-two and the free-running indices simply wrapping around to 0 when incremented beyond the maximal positive value. Incidentally, that change from signed to unsigned int also improves code generation quite a bit: In C, (signed int)%(signed int) is defined to have the sign of the dividend (so (-35) % 32 is -3, not 29), and hence despite the modulus being a power-of-two, x % 32 does not actually compile to the same as a simple x & 31 - on x86 with -Os, it seems that gcc ends up emitting an idiv instruction, which is quite expensive. Signed-off-by: Rasmus Villemoes --- drivers/serial/serial-uclass.c | 10 ++++++---- include/serial.h | 4 ++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 84f02f7ac76..05fe9645bee 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -328,11 +328,12 @@ 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; /* Read all available chars into the RX buffer */ while (__serial_tstc(dev)) { - upriv->buf[upriv->wr_ptr++] = __serial_getc(dev); - upriv->wr_ptr %= CONFIG_SERIAL_RX_BUFFER_SIZE; + wr = upriv->wr_ptr++ % CONFIG_SERIAL_RX_BUFFER_SIZE; + upriv->buf[wr] = __serial_getc(dev); } return upriv->rd_ptr != upriv->wr_ptr ? 1 : 0; @@ -342,12 +343,13 @@ static int _serial_getc(struct udevice *dev) { struct serial_dev_priv *upriv = dev_get_uclass_priv(dev); char val; + uint rd; if (upriv->rd_ptr == upriv->wr_ptr) return __serial_getc(dev); - val = upriv->buf[upriv->rd_ptr++]; - upriv->rd_ptr %= CONFIG_SERIAL_RX_BUFFER_SIZE; + rd = upriv->rd_ptr++ % CONFIG_SERIAL_RX_BUFFER_SIZE; + val = upriv->buf[rd]; return val; } diff --git a/include/serial.h b/include/serial.h index d129dc3253c..14563239b7d 100644 --- a/include/serial.h +++ b/include/serial.h @@ -299,8 +299,8 @@ struct serial_dev_priv { struct stdio_dev *sdev; char *buf; - int rd_ptr; - int wr_ptr; + uint rd_ptr; + uint wr_ptr; }; /* Access the serial operations for a device */ 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); } From patchwork Thu Oct 3 14:10:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Rasmus Villemoes X-Patchwork-Id: 1992362 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=T9oYJY0+; 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 4XKD9n57Zrz1xtk for ; Fri, 4 Oct 2024 00:11:09 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id B0B8588DD4; Thu, 3 Oct 2024 16:10:38 +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="T9oYJY0+"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 83CB688E4A; Thu, 3 Oct 2024 16:10:37 +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-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on20600.outbound.protection.outlook.com [IPv6:2a01:111:f403:2614::600]) (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 29EE688D9E for ; Thu, 3 Oct 2024 16:10:35 +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=jSFPeGzlPRumHPQY72sKfRHKIGG9YjMd+yGkrbp7WLd3lXYTSLt1N1TWes1mkU497ZhlKBUs4vKDZmOrCBVyMaBT++kc0w7wNHhDCSw5dnCqFKWIaaam7UkkZPcFs5I6USRxswku0m5VP23WeW4V69XocII1IvCFOV/x4t310214/HAOyxv/AZX9s7k008xjY9KiHGu2nkGeyjAe0OPhUj2JWFkCitOAiUkQ8MtjlDG0ELTloyyDrhn2znFc7SOunJLXqCWrnB1D+E38ZAnlA39vsy4QL086ZygHteboByI8JLINcIdGKfUbDDDFv8tQNRd0p5QDdNmS943PpF5OyQ== 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=rpBe+Vi+z1HEclBT5mvMc1DhJML8HXcb1ic1dFK4TzM=; b=yK/P6oqkpjo9kByWMIHCoA0JMSF1Bw7mJwoprXGIRi1+75A2/qLAPQ2HK9ErR7hJjgziiitXSqBvIaa4VF4kzHeuTXFfqN8+3yYsUDdzreCMmyj51qgghniLAIo+Baa9hUwmJfJAxuy9J0iMevS+X51osMIxQpGgjTGOL2TRCnj/LapxCF62/v50sCfxhWPXb7Ui33OsGy4phXf2EfNF4svUd39SyP2VncTphteVL4p8c0akctAK9576ANdyn9JMzCpyuq+5jest7InvZs0OQ4kXDkZFCwlaJGgqg2Hjgby4eMMYoILunbkF5Dxsq5iOHoKd6oCP5F0/GE7Nc4hhDw== 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=rpBe+Vi+z1HEclBT5mvMc1DhJML8HXcb1ic1dFK4TzM=; b=T9oYJY0+iDShZuWYT8cO5UiBbh15Qj46WKACgXNXAvs6HV6qbJ4b+Xnj2T1aNpfsWi4gDyC1pgWQupB6lCM7Qx2z/Le9zG7CK/hauCpE1BtZ85taZy8VT6Uomxbk6IWQzFDF6pY3F7iDSsLiePoOv1Y1dA7lHO7aPDZgq9MAyKg= 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 AS4PR10MB5341.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4b9::20) 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:33 +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:33 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: Stefan Roese , Tom Rini , Rasmus Villemoes Subject: [PATCH 3/4] serial: add build-time sanity check of CONFIG_SERIAL_RX_BUFFER_SIZE Date: Thu, 3 Oct 2024 16:10:28 +0200 Message-ID: <20241003141029.920035-4-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: MM0P280CA0106.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:9::25) To DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR10MB7100:EE_|AS4PR10MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: 7ab8e072-1e8b-4338-bebc-08dce3b524f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?3oCwX2CNKBSGr74IWDmvlYrwxa9beqn?= =?utf-8?q?B1QpfX0RDtWC/mtVpEUaMlmLEKOkqVM/iGVgpFM0WHVojPtvLrobwP6Fb+wScjdPq?= =?utf-8?q?NmazMunXY8DTgDqHTQnJc7/I68BEHhccrnS9kCc6Nafbu7yoAmYOBfBwzh3kpMQWk?= =?utf-8?q?4lqYGKzRdDViif5utr1+HzTxecMwCvudiwIY5wn9wwgAZjJcUOSwdjxSVaarUJrVu?= =?utf-8?q?60t9OLgMJ+XG86dxdLJny/+/ix3rQfxwXdNQmJEe7eIS30NErz+Ej9tPL7nQdbLGw?= =?utf-8?q?7w5MIi0Yic3Q410TJGNnhG3yc/MX7AXinS4R7Ze/4T1hoUb0z+0aB4603/+x6PKqE?= =?utf-8?q?Ak+ULEuW09TQ/iSYU8egNTgK/brIocUCmszHbeAoQl62Aj5EcSwSMTG1z8q+aMo5e?= =?utf-8?q?dYsII4+QVtyAS/xelmsx5DyaKQ65kqj9rk3fdAfKKQThFRTHlj/pY3ffnm1PT6yWv?= =?utf-8?q?wVwwF+7xx64QZWGnOO4+Wjsh8X54j35ICsrLO7gytUJhHZt5HWFnm4OChpdUEDTc2?= =?utf-8?q?lnXm/gwRdO7nKCM9nt01aaSE+HvahAPtZ9yIyChDruNbjvKyWll8IrPxuthM7UyOw?= =?utf-8?q?ysu5IfExsf8wNJ8RE3QHkslTojrpOVpPuww3Zt+T7qx3fgKq1oKrURsHgUFkiGT6T?= =?utf-8?q?XfptUSg157xC1cF/FJTGrFTTBrQJiaA5B0uWikjvcseLIcOpznRo51r4yx3noAbU9?= =?utf-8?q?CX+IaOzbxusbMS8hhP45JU8+0fC7WIiiiO0xTlahZB0jhonMmXfEe6NvjOVz/KUbx?= =?utf-8?q?3xt+XslS/Jv+/LIpUzTyHNWJnSpGedu7A4B1RvphvqpZ7fsankYvbs67ng85CeuTf?= =?utf-8?q?F6B2mOHkqULbJfnnyxhrOFkBzYTwTu9XTHT6S7b2jvrXqLQ7rD2hXuQp+PfTbZ952?= =?utf-8?q?lfccTNFC7LWqmcCBVDqYI/ChIqmhEX5Yss/TBf12yLbIQyQB7fUmZFfLaWhATLWoa?= =?utf-8?q?1VYqyvD8Q7bD+kPyB/TK6k1WbXQahghXzPq3RIfv1MV/kcfWvkvihP8sJ6KPjSvqV?= =?utf-8?q?wBh0ar4TOUZTpDzuEuGaNhr8BDCS0E3YIema9BSpVoF2Z8j8qYw4mU3I4fugz6HDd?= =?utf-8?q?geYOezNfomZMObkum50eJkJ/SvmGkk9S6vOmBxm4IOoC11LJ7Z9SLA3heJR/Q1/wx?= =?utf-8?q?MLFGoKxxwqpuvQDH4sYMlvoEQp2AJooFKx9OLdNI/lJIa5MIEu60VhgOKvpItWdQg?= =?utf-8?q?HKA2b3DNQPRTpyacs2Kf1WWiY9zOij+JagJJKpO1AYvDV3nA0REgvryKETPWGkuuo?= =?utf-8?q?nXxJclivS3zDR6iLBegkfZ7O5RTWz4EOTSg=3D=3D?= 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)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?NjfFiASwcMYKPqwbcVaPEnp6dyFz?= =?utf-8?q?rugChWSbqwh9qI4oBa5Wfcv1VPExnDxZYOiugcs2rdiAoeuYwE6Rv7YaHstsURzUl?= =?utf-8?q?PDKu8ygq9uVo38Snb68FYrPgSj/A06SfJGgJbq3S7GxxvfOoltmmHW/3UUOsa56/4?= =?utf-8?q?PR27HniVCC2td6xrbe4zgvBjW/vDSb+M4ewLkO4PY6UUldNhc839moaCuLP66ySAw?= =?utf-8?q?x2gSiofiTfMHaK0zIgD++7A3XwQd7ZnKfZ1GZ0dccUnFSelu9RJGVbwr5qX0TXg8j?= =?utf-8?q?sZrfb7yCEgBQUGtw0VX/6NxykTyeMLwc7TbN+BgMYN0CQSzugJJghepGhRavgAiok?= =?utf-8?q?ND/W5nx5tZPtRJ6/qxjZQ7bpZITf6P/CgnNs0KtdmknfKmYEBV5/g7Mgvqb+mPCEc?= =?utf-8?q?l03GqYKS9kEjAsr41RZTo/zjAWXeIbcPUCpO2IXThcTMYbTu2/sEdvZbTUcn8kTH2?= =?utf-8?q?2ATIXUP/JlVtNNPkb6Ucs+du90P2yaz/SH2CZiPjVw02+n5563Iqvg26IvaKFnUnC?= =?utf-8?q?T7cX/9r4p4dDQ67cpMKE8Q6H2DmIBH/77XSKBIAhietFHB6nNIVYJgbGxAZ8OfiOQ?= =?utf-8?q?ZrPQe76PGNkAmfCNqQASViCPQd9kxCxMkP5zaDp+5pKkaF3nQoExiC/R1+sPIQDzI?= =?utf-8?q?54CBvMQkqSYbpB5G27RCjyyo72Gz8uTpi5FCh2ToMJAluHP8N/MOl6OYaI9Lv/Bdx?= =?utf-8?q?cAA1zNuOFGmfTJM8/huJWxpA4UVwqy2nb2D15dJcazc1xDOre1RqtLc1eGPjK81M2?= =?utf-8?q?vHT3Y5LRBkhRfKb7Yyeh8FQ6Y5pQ95GyLcbokrvNpu4hzYXXdnSOR0QTTuu672CWf?= =?utf-8?q?9STkiMYXV56bzP+S6fCVMR2ahC5ksfkCznaNtHDSppmXh2WCky0yHF4yK1hDoeShA?= =?utf-8?q?4VsbisS1hGopHp9WtGFV2w2HUe5xHjMLVSjNiHYzBoBsdug54Gwr8RyKAWIl8LJ0w?= =?utf-8?q?7LwhAIY/UGh3AD7SXBYDMuJMXrb0Zh4YMCFdzyDwDg1Iirrk/8EetgzD5PI48podQ?= =?utf-8?q?amKY40AW4wDjNEIrg/C0cnY1SeWmE5RrqtqpqrhScPtXr4v3pkSGeMWgVRa0zDyjk?= =?utf-8?q?36W0MS49A8+0UcxucMbefZ5TeZaf6QHtN2pFBgoumrfv/hfKWq7/0gWx2GBpOhC8b?= =?utf-8?q?Jcjpfanp/py9GpbmuUGVNUcLE5L17uPx7Rys+kmIHQp5Ay/AntwFdknmCrsVyQM5R?= =?utf-8?q?X77WkOsCNMAUEtcaW0+4ssVnTBl4V1eUodufrRwT+d3T6AqnPirtDTrFiPBC4uGNb?= =?utf-8?q?SccrF0pgN0ZbKc8MaPxUqCLHg+sCuYITiuPi9XNHVb+9JFzpn8HSnzMJyIrDAK8W2?= =?utf-8?q?+v3LjwkalhUwjzT3p/IS/sISOL7Oh0cNGddQq9ij7K0X6VC42t0x/9KUKzVkHEH6r?= =?utf-8?q?wlm+AdGSORh6D5gRZttLxHb+FxW01OQh50Ps6mx2dk+sRvE036/jvkj29ocoUq276?= =?utf-8?q?50hpfvW9q0FvrT1VBkuaK0vDlfeWAGiyWOV1KB9IpI2GpP9svQ9Y+G5279vt5/r5q?= =?utf-8?q?k7NKOzaXmwja4v2iHj/6nkCxIZBcHUNJcg=3D=3D?= X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: 7ab8e072-1e8b-4338-bebc-08dce3b524f9 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:33.0422 (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: BqymZcQProVmPlqSydPlLxES2rWD/zad6yZ6MjNgQ6h+yBOIqy68j2zoiStWN+Yky7gfeLG416ilkjfcTcmyrj8PEW7XWN2rU+mvUMQhWUI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5341 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 The help text says it must be a power of 2, and the implementation does rely on that. Enforce it. A violation gives a wall of text, but the last few lines should be reasonably obvious: drivers/serial/serial-uclass.c:334:9: note: in expansion of macro ‘BUILD_BUG_ON_NOT_POWER_OF_2’ 334 | BUILD_BUG_ON_NOT_POWER_OF_2(CONFIG_SERIAL_RX_BUFFER_SIZE); Signed-off-by: Rasmus Villemoes --- drivers/serial/serial-uclass.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 28d7a202afc..484f0f7d3e8 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -18,6 +18,7 @@ #include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -330,6 +331,8 @@ static int _serial_tstc(struct udevice *dev) struct serial_dev_priv *upriv = dev_get_uclass_priv(dev); uint wr, avail; + BUILD_BUG_ON_NOT_POWER_OF_2(CONFIG_SERIAL_RX_BUFFER_SIZE); + /* 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)) { From patchwork Thu Oct 3 14:10:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rasmus Villemoes X-Patchwork-Id: 1992363 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=lRTrOrZO; 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 4XKD9z6QKfz1xtk for ; Fri, 4 Oct 2024 00:11:19 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 17C9188E5D; Thu, 3 Oct 2024 16:10:39 +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="lRTrOrZO"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D7E2188DD4; Thu, 3 Oct 2024 16:10:37 +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-vi1eur05on2060c.outbound.protection.outlook.com [IPv6:2a01:111:f403:2613::60c]) (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 D223D88DB8 for ; Thu, 3 Oct 2024 16:10:35 +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=xbFtXRkaF9NlbIbOT4g/LsAezh53hh+Zil6toht0swj0fZBjUJqv6m6rmrhDWGgSPxNptK2sHJojN1u6gUp5CxKKV36WdDH4K5xHR71lbCNTQCKwdX72owltd7Vkw2x0elx67zjbnGVpAoi6J4cYhey3qvzitRFVaDGgsKmoogh9gp9HCePFfmIyDotyibRapfljv2nk11WGQ7722zGN2UHebwYoVkiZ25MzoNpI4iySWhwJ8CyMmPCXHQSMNTDjLLMV8Ke4KBMfchy7iOPsaEv7vxujQnEfbemJx2lwzQ6SxtC6QxQN2bI3nbqgVJ2ptXbKirBazSkTupZLHoIydA== 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=66h24GVxCPCoJXwnOpsSshDgnxcvsmPsR7N7jwJMSbU=; b=vsuFefxXTHru8IyJrXK1VFDyWzeS2bJLS884lD+K1L3+wtT19DmQxoaI4QKSZAkondU8ZS0kjj7jFOITVXsGtNzFRejfKdCxPT8ozTymrVF30UcpnnEjvLuYylcig20b87n4YNNyqW9q+qcTcWhz9cOY9GoRW4fN9s29AHOph1Y9kvwtt/Lfh0ZeajheuO1M1zqnCefcHRq9y6m98ECnnJvZAN+OJkYvYtB42tX10fWsiQ96r4OrIrLHDQOESEJovCe5U0bJRUQbC46hhn225g4cEFFE1YYGSE+tIkyC7qNWHkKeLgJbJmcxGNIo+Mu9X/tCAA3AtVeg2lZ6y6KFbQ== 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=66h24GVxCPCoJXwnOpsSshDgnxcvsmPsR7N7jwJMSbU=; b=lRTrOrZOTW+QrBuc/OVukiqwkQaTju1/wG+H8EjuIKrKq6+EAEuCsQspXff+FH124ma+q9C3ss0H2R7CBH6kIxjZbvkf/Dj9Ci+J5nqzkbo29Bit3MxKkBkROIduqet/wF0ef7U7JRL5yiYdvgyVfFenMVaTo6hAML49XGUUhJ4= 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 AS4PR10MB5341.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:4b9::20) 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:34 +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:34 +0000 From: Rasmus Villemoes To: u-boot@lists.denx.de Cc: Stefan Roese , Tom Rini , Rasmus Villemoes Subject: [PATCH 4/4] serial: embed the rx buffer in struct serial_dev_priv Date: Thu, 3 Oct 2024 16:10:29 +0200 Message-ID: <20241003141029.920035-5-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: MM0P280CA0111.SWEP280.PROD.OUTLOOK.COM (2603:10a6:190:9::24) To DB9PR10MB7100.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:45a::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB9PR10MB7100:EE_|AS4PR10MB5341:EE_ X-MS-Office365-Filtering-Correlation-Id: d42e9eb1-dfd6-4ea4-9b2f-08dce3b525e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: GT+9La06mHuJgMv4fXK4Zwt4dmVdR/2nUpQZLyw5VjuMYISjgumQXgmDCPN+kEmYCO+JdgYhg97LnOJMca2TzbyzEXCrHYvO8euDYyuY0SBF1HZJLPk+oGEEFNMcTk/o9wy4dOs/QCY+xE6M10OsDxlfTmSyQOgOLSQL14bO6zBnNvpbTQbyZUQlr7CaZXF/H0yw8f4V20MkiTjIncRyZ6I9h6SLMByhdKyDrhvkhmUOkF1E8Fu5dss/Go//2XVLRvaa3uQFmDq8/Gtm07j+R7EIRlhsOrdrqjY0oiUvPF0XsbXFhDXzf51cVnrIeyfPqp4VGMP0WOtnrup7KY6k3VLB7HtuSNZD01CERhMMHpNHRkMXsr46JMQyMmNxMwVahM36YRbu+CsTEhcks0HxFNVqq+7iV+SPdNMf7bnFLFuOqq2muYFhhweFo4vYCv13B9bwWh2x86Dd8qv4aN/v0e0ZXz6HtrFdImjBXhqnusdfKEFKNlQnhICw4mjtqDArvW+J/9OlUPIpLeCBgUDAFczynqkegYOIZ9EcJbObcKOoAtLKecnT303sFnIpzCUYuZIU3MhWBviklsbZT9jYDr2FmrzAlYJ8janXns4pzBehOlgaBOP/Pynaw1n675gpu7QgLyTRB+AQ3lnQoWF1l2scLRILtEWMFY14f+K/Na4qW+HZZmU7vNtkem5Nu5/5Iw3XQBmkGgxFt4DUJz/96n3CeNFT4BTYmFw0jyzve6ptJiw6tzTgUeAdFbODRXjdfQjAc3CwtQuPax9Yq5HosIbPxTD7+6kofvD731d1GptpL3REC4GSRCamQh7JOJ40W527c1exu3pfzy3ffpKf1OpZ1Z9FhEuJeOGI6MV9509G4UpmKcNsOl07XcrcQMF9I1gjbDcEPqX3KYIWYeV5CQjZjMl4ct6fYUjPxphlF994tzObI6nP0+pT5arKdES/G6fQitp2m6fLGWUdb6ueqGu4KtYWEa/bhgK0Z3FK6O5fqhvfmEai7YLn07M4oIosIjowMdtfpE0ahe85KtUDSD2ybREbfPHjBMl/GtW2mmRt7QMaXjpFofagYv5EBgJbiY0g+WX/t7C59rjinNvE6r9pe9Hpc3ZUGsQTTmjrIbNTPiJdlOVz4y1Wc15zwq1iw/DQPI+YlflzItNXvvtodG7oI/Qj1KHP5Y+yDmZCJLrXJEeUI931kCrozMoXLlkpJ9RumKbrtCoTpsN+lkRZO5UrXTykHT5Rm7udXX8XKxtwx0WEHVrROagB5aUSqUKqK3aMDFA2TPJI2sOCo6MXHR0GST9T+v4NDzFhTq+NPvsn3wbIpiWEZp6T5NMo+WM3 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)(366016)(52116014)(376014)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gjgnXtNxHhd+QZ+mHNDLeMXLO7WsVF/NxeVtOD+sD2Otjvcu7QoxgM3h/GWMnemDSIdCJQxwb118KgV86KOV6sQRS/M0iNUiamtR82EAG/YjMYMIFMHNIZ6Ng5zHbJeIqDw5JWfWP2J+hWRvwuD8X3YfNwMJJedaLvqYzxNoEt9VUmuwE1rHZdtytlGZGv1KvZxmMBtRrJZW2U8zUCKYMiioqGUJie7q+fE3Zd9ZJxOHG44/ObEGNVC6PbyDzX09qgquEjZXgK8JFVQ8WGQr6QbOhYsyraJadY18Cwq3HMkiXjc6dptBnsMZe2C3DzDhcYKmSaskaf7Yq/K+WRnH1nkg44MV7gEa0A/gqJrtRKnLrEZ7VN1RIN9fIYDkvIr0unWQoa8cMEjKTrbz0wRjArFlHlvO/zT/o/NmfZfnXEbF3WTRr1pj7zS+cV3El0oA3exymJvfp0MITbkDe7a8NzlbnXqF8on7WcazS7CWo7DT7RNQefbsb5QI5VUVSQMS5+/+/m6Myoha4ugehUvJTD98WAY5BTgdS/1bm3Nm2WP6tIVcO1Dun6/+XlU+bFXVde2NvWFpXsNUDqw1cN61I+/MgW7TCFjQIvXhtFD00L2ukK16cMXTkjwpWgaUk8SqPuyNJUAj7LnWQQDhdOYinZXiC4ZnVg39zNJntj+D1cAGnacj9DDRaNPJ+Ja/AaNYznC3RXbSb3aFiC4sw1qPsaJdjFRfigtZf6Zs7OG8WXB7Cs/glgLjarpGfEdxYTFCKGl9hac3gBqrO5F3p88mkErACCwb3b0sAZHGECE9h4SwbmUCoedJN3Gwnbr7zEsj0ojECVnMwOH2HyHzSvEQQYPn439hRtuDU9q1t7xWCPAqbLJqX2ydy8jvhkN3/srAKo4zbYQZ+nA02Nh+LdAI/Jv8GvSAzKtO0pizdayNEjL9NJB9A+kFUEy5BMnJBRaqS0/WBK/pquss/K6nGoVJt1O4s9PnIcNGnitvvwjYCWiGCv2uOIYNNekX1RlG1A3oSZFe4M3ePOgcwSNAh07Wndw1/zSc5cnICGBzonvsRsuTab7C/xiRa0PUVar9GFl8Q84EFBueTZAqBvmLE+FZa5/Q9bFs5p+VnhLNTqJJbyx9FdxVttcfm+jRJWvLps6NWM+o131EiQ3uAZTUe1R8NoK7JlbAHvrsbHRBKdBX26DbAiH1f9B+kEFNLBm9IQmiqyLgLdnS9eUWa0965H85x2aDYFRQj2zcziTeb1DKzS+ua265EDdpidYDTZnMYnVLstYkF7GV2ohWPnMuaO4R4kAT6kmZX5BYrV8dTVdDEDHo4by0+RKBLKLMSjwOqaEhCxKvFk7EPvNbvyAqSRz+h/yBGkAXQdzEdLcW3JQ8wD4AFp+zZG/njt/liECVNQxv+uPr7dsEmmnLatDmh3b5Q4t0YI8QXwb9nNBhhA/s3/obSSpqrT4/rzvlJ1qNNEz6HIvYdRf3cD5ulqV22XN5N2o4B3Sm7qsTHxNSWXz7BTQA1OUvbbJ+kZepK19qA062Dz15c/FccnABvhNb2a7IBFhxAXbPMSRFgWLSsJMkZUMcUqQfC642y0PyJh3t27Ee9+f1RWdW7aURTasMcVsb2w== X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: d42e9eb1-dfd6-4ea4-9b2f-08dce3b525e4 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:34.5588 (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: h+rt7YgPwyrgq8WIiV54hxOryuCdZJjPZlFrbnOTPNwRoiahQxYzN3oODF1rP85qP8pYNyFA4+MCn3YY5lgrrP/n2JA7pnJcoyX/P8oU7YQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR10MB5341 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 The initialization of upriv->buf doesn't check for a NULL return. But there's actually no point in doing a separate, unconditional malloc() in post_probe; we can just make serial_dev_priv contain the rx buffer itself, and let the (larger) allocation be handled by the driver core when it allocates the ->per_device_auto. The total run-time memory used is mostly the same, we reduce the code size a little, and as a bonus, struct serial_dev_priv does not contain the unused members when !SERIAL_RX_BUFFER. Signed-off-by: Rasmus Villemoes --- drivers/serial/serial-uclass.c | 5 ----- include/serial.h | 4 +++- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index 484f0f7d3e8..d737e25223d 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -588,11 +588,6 @@ static int serial_post_probe(struct udevice *dev) sdev.getc = serial_stub_getc; sdev.tstc = serial_stub_tstc; -#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER) - /* Allocate the RX buffer */ - upriv->buf = malloc(CONFIG_SERIAL_RX_BUFFER_SIZE); -#endif - stdio_register_dev(&sdev, &upriv->sdev); #endif return 0; diff --git a/include/serial.h b/include/serial.h index 14563239b7d..eabc49f820f 100644 --- a/include/serial.h +++ b/include/serial.h @@ -298,9 +298,11 @@ struct dm_serial_ops { struct serial_dev_priv { struct stdio_dev *sdev; - char *buf; +#if CONFIG_IS_ENABLED(SERIAL_RX_BUFFER) + char buf[CONFIG_SERIAL_RX_BUFFER_SIZE]; uint rd_ptr; uint wr_ptr; +#endif }; /* Access the serial operations for a device */