From patchwork Tue May 9 14:47:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiang W X-Patchwork-Id: 1779004 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=dp3oDDlS; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=126.com header.i=@126.com header.a=rsa-sha256 header.s=s110527 header.b=aXBHCyvu; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QG1HV0Hr6z214c for ; Wed, 10 May 2023 00:48:20 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=oSDVC3TXlfFE3/sjvq6pORawqxz5e/4dlIjmKPWK2/g=; b=dp3oDDlSP64eiE 8k17wAPWGZ1OmPNAXuujkTqOtvqASd/n0Xqkb3QcOp2hnrjNhLX49wkT8WzUPP9UP2NZxVrhQZlWd g/bm5naauSIDbdx0chfoxnMSvZ/Gcw0kzH04WiaLrtjh7YU975yWvRcu18HxqAaGond9TRI284ZYT OqY53rYC1hzJalXPWXIKgUd2gfKXjYfK13bTZvTdTIzvNaVdrNeOaUYeu+3nXens/Nc4/Au5kV13L 2YsZga+QTThuPWViDi0g1100hR6jHX+V11JX919tols1gspMh8RvY7G/0zTdsiQIq6wmvp+EFJnGs FJwRUh9TTLmwloVZQm9w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pwOdH-003cPu-2J; Tue, 09 May 2023 14:48:03 +0000 Received: from m126.mail.126.com ([220.181.12.26]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pwOdD-003cNo-2Q for opensbi@lists.infradead.org; Tue, 09 May 2023 14:48:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=126.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=CKooe OgkCFIw3nGlNZxoKa8FGAYq6B4iw7eqUYwaG6w=; b=aXBHCyvukbWB9vUm4dBSr PsRqi3VRP3yyyBSV7NxtkHAZvFX3fRVE0SKggNnarEmTq2/Ynuj/CjE6XzrDrhmc UrMtzvzHoURDRTNWpWAUrMZGNy3SFvx4W88Ya+7eBA3/DwFC+iK9g4dbyAHGAHJa 4eQbyC1YGjuAQdK8/28yu0= Received: from x390.lan (unknown [183.212.235.220]) by zwqz-smtp-mta-g0-1 (Coremail) with SMTP id _____wD3_EARXVpkEacFAg--.29990S4; Tue, 09 May 2023 22:47:48 +0800 (CST) From: Xiang W To: opensbi@lists.infradead.org Cc: Xiang W , anup@brainfault.org Subject: [PATCH 2/4] lib: utils: Improve fdt_serial_init Date: Tue, 9 May 2023 22:47:33 +0800 Message-Id: <20230509144735.72059-3-wxjstz@126.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230509144735.72059-1-wxjstz@126.com> References: <20230509144735.72059-1-wxjstz@126.com> MIME-Version: 1.0 X-CM-TRANSID: _____wD3_EARXVpkEacFAg--.29990S4 X-Coremail-Antispam: 1Uf129KBjvJXoW7Cr1DZF43XFy8Xw1ktr4xJFb_yoW8Aw4rpF srGrWayw1rJrWxWwn2krZ5J3W5uF4jy347WryxG34fXr4Fvr1fKw17t3yYqF9xXrZ8AF1a yrZ5ZFZakF1jqaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0zR4SoXUUUUU= X-Originating-IP: [183.212.235.220] X-CM-SenderInfo: pz0m23b26rjloofrz/1tbi5BRqOlpEFzY9JwABsE X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230509_074800_643209_8488D67A X-CRM114-Status: GOOD ( 10.59 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: A final check of all DT nodes does not necessarily find a match, so SBI_ENODEV needs to be returned. Optimize removal of current_driver. Signed-off-by: Xiang W --- lib/utils/serial/fdt_serial.c | 48 +++++++++++++ 1 file changed, 17 insertions(+), 31 deletions(-) Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [wxjstz[at]126.com] -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [220.181.12.26 listed in wl.mailspike.net] X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org A final check of all DT nodes does not necessarily find a match, so SBI_ENODEV needs to be returned. Optimize removal of current_driver. Signed-off-by: Xiang W Reviewed-by: Anup Patel --- lib/utils/serial/fdt_serial.c | 48 +++++++++++++---------------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/lib/utils/serial/fdt_serial.c b/lib/utils/serial/fdt_serial.c index 1a4bf9e..0baa722 100644 --- a/lib/utils/serial/fdt_serial.c +++ b/lib/utils/serial/fdt_serial.c @@ -17,13 +17,6 @@ extern struct fdt_serial *fdt_serial_drivers[]; extern unsigned long fdt_serial_drivers_size; -static struct fdt_serial dummy = { - .match_table = NULL, - .init = NULL, -}; - -static struct fdt_serial *current_driver = &dummy; - int fdt_serial_init(void) { const void *prop; @@ -57,20 +50,15 @@ int fdt_serial_init(void) if (!match) continue; - if (drv->init) { - rc = drv->init(fdt, noff, match); - if (rc == SBI_ENODEV) - continue; - if (rc) - return rc; - } - current_driver = drv; - break; - } + /* drv->init must not be NULL */ + if (drv->init == NULL) + return SBI_EFAIL; - /* Check if we found desired driver */ - if (current_driver != &dummy) - goto done; + rc = drv->init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; + return rc; + } /* Lastly check all DT nodes */ for (pos = 0; pos < fdt_serial_drivers_size; pos++) { @@ -80,17 +68,15 @@ int fdt_serial_init(void) if (noff < 0) continue; - if (drv->init) { - rc = drv->init(fdt, noff, match); - if (rc == SBI_ENODEV) - continue; - if (rc) - return rc; - } - current_driver = drv; - break; + /* drv->init must not be NULL */ + if (drv->init == NULL) + return SBI_EFAIL; + + rc = drv->init(fdt, noff, match); + if (rc == SBI_ENODEV) + continue; + return rc; } -done: - return 0; + return SBI_ENODEV; }