From patchwork Thu Jan 7 04:21:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423136 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=f42GtH3E; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCkb1B7jz9sVt for ; Thu, 7 Jan 2021 15:22:31 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EE347827A7; Thu, 7 Jan 2021 05:22:18 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="f42GtH3E"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6D02B82753; Thu, 7 Jan 2021 05:22:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd30.google.com (mail-io1-xd30.google.com [IPv6:2607:f8b0:4864:20::d30]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7C1B082753 for ; Thu, 7 Jan 2021 05:22:13 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd30.google.com with SMTP id p187so4971126iod.4 for ; Wed, 06 Jan 2021 20:22:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rtjKtKZJ46fWrtWy1wmtE+DmQ3kzMusoSe3znPsyQBk=; b=f42GtH3En7tchuix5sdCIxPayeqSeMMkwdTfM9knwJjJPowRYXVEDCGIBoZOKJDekY FbZPS75f/aBfHqVJK62t/cQ91Q/hao1iHA6Ya1uNi13OZ8ljiP4u0CYstopu/2JkUSaZ 2qgusjlARkZV0QJe63KzBpVxNSUp5gQgpHuwE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rtjKtKZJ46fWrtWy1wmtE+DmQ3kzMusoSe3znPsyQBk=; b=mQb/SA7/TfZC+jLd6vLLFuQXnK8wvi0U4PLztXWIlDNUtel28hiPWyYGhCgo2Kuv5g ddajXAaol3JEZCDqDkJEFKsMH92mqxixfL3kepDAJsVr+yDiwi0hjGO99lkUGZINwryW V/E37teH2hFiKxMYzbkhVZZKN9QFl3UnQOyZUt5DTNRDkCeBseuux5lYo4VucmGISwb+ JhJus5msM/Gmh2Aegsxq4URSfMSFevlJ1oeQtsWtE29ZYbP8xdRdWVYK5WD/Kz1JvH64 0vz4+0z3TIT3x5pWeTdooW8DLCYlMv09gYYOUi/mpXS5dQXsRT8L0mmHChIlE8qJQ6bb VqLA== X-Gm-Message-State: AOAM531wC5qdK6ULRPPFA064V7C/xDkJ1kK7fU7J2gCm9FL9kE3lxvt2 ytK/MpDGBCBt6yI/0Fqt8MFxtRw6TlJY0V0H X-Google-Smtp-Source: ABdhPJwYEYmfIcSYzfiCizb0Zp7cPn8ptQ0fcwBQv+7MnxDbdJrSyyKbfZtNebVfFd0slKQ3xrze4w== X-Received: by 2002:a02:8791:: with SMTP id t17mr6525521jai.28.1609993331857; Wed, 06 Jan 2021 20:22:11 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:11 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Adam Ford , Marek Vasut , Naoki Hayama , Patrick Delaunay Subject: [PATCH 01/10] README: Add doumentation for version information Date: Wed, 6 Jan 2021 21:21:53 -0700 Message-Id: <20210106212153.1.I2ac81b51676077a69e5198108cdb3d0525a0f65d@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean There are quite a few available version options in U-Boot. Add a list of the available Makefile variables and #defines, along with examples. Signed-off-by: Simon Glass Reviewed-by: Patrick Delaunay --- README | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/README b/README index 5ca11f25ee5..02ed0504455 100644 --- a/README +++ b/README @@ -1830,6 +1830,90 @@ The following options need to be configured: Time to wait after FPGA configuration. The default is 200 ms. +- Version identification: + + U-Boot releases are named by year and patch level, for example + 2020.10 means the release that came out in October 2020. + Release candidates are tagged every few weeks as the project + heads to the next release. So 2020.10-rc1 was the first + release candidate (RC), tagged soon after 2020.07 was released. + + See here for full details: + https://www.denx.de/wiki/view/U-Boot/ReleaseCycle + + Within the build system, various Makefile variables are created, + making use of VERSION, PATCHLEVEL and EXTRAVERSION defined at + the top of 'Makefile'. There is also SUBLEVEL available for + downstream use. See also CONFIG_IDENT_STRING. + + Some variables end up in a generated header file at + include/generated/version_autogenerated.h and can be accessed + from C source by including + + The following are available: + + UBOOTRELEASE (Makefile) + Full release version as a string. If this is not a + tagged release, it also includes the number of commits + since the last tag as well as the the git hash. If + there are uncommitted changes a '-dirty' suffix is + added too. + This is written by scripts/setlocalversion + (maintained by Linux) to include/config/uboot.release + and ends up in the UBOOTRELEASE Makefile variable. + + Examples: + 2020.10-rc3 + 2021.01-rc5-00248-g60dd854f3ba-dirty + + PLAIN_VERSION (string #define) + This is UBOOTRELEASE but available in C source. + + Examples: + 2020.10 + 2021.01-rc5-00248-g60dd854f3ba-dirty + + UBOOTVERSION (Makefile) + This holds just the first three components of + UBOOTRELEASE (i.e. not the git hash, etc.) + + Examples: + 2020.10 + 2021.01-rc5 + + U_BOOT_VERSION (string #define) + "U-Boot " followed by UBOOTRELEASE, for example: + + U-Boot 2020.10 + U-Boot 2021.01-rc5 + + This is used as part of the banner string when U-Boot + starts. + + U_BOOT_VERSION_STRING (string #define) + U_BOOT_VERSION followed by build-time information + and CONFIG_IDENT_STRING. + + Examples: + U-Boot 2020.10 (Jan 06 2021 - 08:50:36 -0700) + U-Boot 2021.01-rc5-00248-g60dd854f3ba-dirty (Jan 06 2021 - 08:50:36 -0700) for spring + + Build date/time is also included. See the generated file + include/generated/timestamp_autogenerated.h for the available + fields. For example: + + #define U_BOOT_DATE "Jan 06 2021" (US format only) + #define U_BOOT_TIME "08:50:36" (24-hour clock) + #define U_BOOT_TZ "-0700" (Time zone in hours) + #define U_BOOT_DMI_DATE "01/06/2021" (US format only) + #define U_BOOT_BUILD_DATE 0x20210106 (hex yyyymmdd format) + #define U_BOOT_EPOCH 1609948236 + + The Epoch is the number of seconds since midnight on 1/1/70. + Every time you build U-Boot this will update based on the time + on your build machine. See 'Reproducible builds' if you want to + avoid that. + - Configuration Management: CONFIG_IDENT_STRING From patchwork Thu Jan 7 04:21:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423137 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=L/PDDc/9; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCkp1G09z9sW0 for ; Thu, 7 Jan 2021 15:22:42 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 6CD5D827AE; Thu, 7 Jan 2021 05:22:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="L/PDDc/9"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A07A4827AE; Thu, 7 Jan 2021 05:22:17 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x130.google.com (mail-il1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 72D108279C for ; Thu, 7 Jan 2021 05:22:14 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x130.google.com with SMTP id q5so5488526ilc.10 for ; Wed, 06 Jan 2021 20:22:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TXrf5x/Kv8lZXB2cdShc7q6XyCG/4jywNCrKEokS72U=; b=L/PDDc/9ivMuAMwXDo1VZ9eVf1YJE1fnJUGmHQ3EIYgqDuH46NfxjoAwqotFu60emX YWmCFove3HJrfdRjfDlL/MD/nifKQNXTYDraA35nhLrrkwe3vf9XedVvZ7SgYby8frhV 8vzyNfxCBlKRGedHwk8fmIRcraiLtCpZozxCM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TXrf5x/Kv8lZXB2cdShc7q6XyCG/4jywNCrKEokS72U=; b=hYgQspd8sPui2vXESU6h4S2+MCh6HXaxvoApKE9F2BbsuunUvLhhE9gz2C1hjXFUxz +t2ZTw7tAWDFnYZwsvJOWBQqoIrWLagmqgkd21NfiLy9Xt0kuTfv5b1qdzyh9kUlhhGQ RSiI1aC9xYHcjLTecxKty7KOYRn1Y3HiwWavtKGt6iDyB/D6p1zaWWNDyp63PknnLJf+ tJVxgMNsmLkxne1tF8gBKJ4lNSZleX9QDDZ9Zu6971CVRqcQXW/gfvBTwFn5o3CN4z4s EbHlXSwJRsITeSYGNfanxlrXTP8QEeRU5AY/VMEp/Tn3hwDDpFZph06lesrcCytwSckk LbLg== X-Gm-Message-State: AOAM533cCGqV9M+Q7UDFp5H22IoXSDw7ZjZYt6/xARzmMVH1hlWVND6K 56b2AB7vRFd/X2IZ3FTZD0xF36K+rT3+A8WH X-Google-Smtp-Source: ABdhPJzJMMlRtBdvxvkTlW7rkdv3tndF8I/6iRn5rd6K9Yy1ibYTFZHOM1qaJTFZNPyftueHp4FSpA== X-Received: by 2002:a92:dc11:: with SMTP id t17mr7333393iln.307.1609993333055; Wed, 06 Jan 2021 20:22:13 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:12 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Adam Ford , Bin Meng , Jagan Teki , Kever Yang , Marek Vasut , Masahiro Yamada , Naoki Hayama , Patrick Delaunay Subject: [PATCH 02/10] Makefile: Provide numeric versions Date: Wed, 6 Jan 2021 21:21:54 -0700 Message-Id: <20210106212153.2.I9efe8832e785f28cb7c4bb98d6df6322fc756150@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean For SMBIOS we want to store the numeric version numbers in the tables. It does not make sense to parse the strings. Instead, add new #defines with the version and patchlevel. Signed-off-by: Simon Glass Reviewed-by: Patrick Delaunay --- Makefile | 4 ++++ README | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/Makefile b/Makefile index 110296be82f..c2b7046ce3b 100644 --- a/Makefile +++ b/Makefile @@ -1846,9 +1846,13 @@ prepare: prepare0 # Generate some files # --------------------------------------------------------------------------- +# Use sed to remove leading zeros from PATCHLEVEL to avoid using octal numbers define filechk_version.h (echo \#define PLAIN_VERSION \"$(UBOOTRELEASE)\"; \ echo \#define U_BOOT_VERSION \"U-Boot \" PLAIN_VERSION; \ + echo \#define U_BOOT_VERSION_NUM $(VERSION); \ + echo \#define U_BOOT_VERSION_NUM_PATCH $$(echo $(PATCHLEVEL) | \ + sed -e "s/^0*//"); \ echo \#define CC_VERSION_STRING \"$$(LC_ALL=C $(CC) --version | head -n 1)\"; \ echo \#define LD_VERSION_STRING \"$$(LC_ALL=C $(LD) --version | head -n 1)\"; ) endef diff --git a/README b/README index 02ed0504455..afa33dc7f30 100644 --- a/README +++ b/README @@ -1898,6 +1898,14 @@ The following options need to be configured: U-Boot 2020.10 (Jan 06 2021 - 08:50:36 -0700) U-Boot 2021.01-rc5-00248-g60dd854f3ba-dirty (Jan 06 2021 - 08:50:36 -0700) for spring + U_BOOT_VERSION_NUM (integer #define) + Release year, e.g. 2021 for release 2021.01. Note + this is an integer, not a string. + + U_BOOT_VERSION_NUM_PATCH (integer #define) + Patch number, e.g. 1 for release 2020.01. Note + this is an integer, not a string. + Build date/time is also included. See the generated file include/generated/timestamp_autogenerated.h for the available fields. For example: From patchwork Thu Jan 7 04:21:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423139 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=TSas+TAV; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBClF0q97z9sVt for ; Thu, 7 Jan 2021 15:23:05 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 66473827AC; Thu, 7 Jan 2021 05:22:26 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="TSas+TAV"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 6428F827B8; Thu, 7 Jan 2021 05:22:21 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd33.google.com (mail-io1-xd33.google.com [IPv6:2607:f8b0:4864:20::d33]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 6EB358273C for ; Thu, 7 Jan 2021 05:22:15 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd33.google.com with SMTP id 81so4924460ioc.13 for ; Wed, 06 Jan 2021 20:22:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YAVM0RBLfjfNG02oY2XcTZkFMXSyWEhVWHkhq7cigpA=; b=TSas+TAV/nr9I4jiakO4FzFjUibFnKI4U+P2hW62mghDudBNvpFlXUkzt4gMJL0pdy rwtthPUvIOtmzjZ/LYLPofW8PFnvj8o7TrFCceuTiKGF8MSvjtbmnjqIPFwkQwEq/Qe/ KCEtLRGsqXaG5joH2ePyCibwzSn8el4htl0Z0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YAVM0RBLfjfNG02oY2XcTZkFMXSyWEhVWHkhq7cigpA=; b=M/9H7trbZBOgNjZzuk54lGOKlxHiAujYRZqHdT05cSGGc8/szZN3lJoEjjEc6ZPv+Y pBS9rJamBt1Bzg/btW18FyOb4abeiQGSFttO7lcpB/Dc/52wgpKSLu6jKHwsLp2Ha5pN NOCH3asbm/tmVVLqQwzXrEAyl2Rv4UZalNbnIcv6z8ldHVGaB5KaW00PkvHdapaeho8a gb3iWE7voSdpjj51rXXqb4FD4LZxy8ID6nOqQjTZvSHUoUGVv0qYESzwMVB842qmPYve 88ZGKBPBKP/AfuH5oJsqaSknRGd0RiMkIYUa2mYQIfjEVvbheqoEdIoxQcaEnKjuAdsK JBKg== X-Gm-Message-State: AOAM530zS42V1tol6MC894ZgyNlx2NoF5lsrFr5mbxFWqbFCQ5RRTJn3 qvhc2Vhi1BHeucySTOFoZnuJPAga+hArpRuP X-Google-Smtp-Source: ABdhPJytSz9S4SnYKbKA7N5aiahqXmbphpxzEeYqF5LmCwcTpRAJhUKAGl42WagJK373cG0r3NDv8Q== X-Received: by 2002:a02:c98d:: with SMTP id b13mr6382960jap.124.1609993334077; Wed, 06 Jan 2021 20:22:14 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:13 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng , Christian Gmeiner Subject: [PATCH 03/10] smbios: Move smbios_write_type to the C file Date: Wed, 6 Jan 2021 21:21:55 -0700 Message-Id: <20210106212153.3.I8b3e57c5350cc4c52f9675d1a620c449a8dceb71@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean This type is not used outside the smbios.c file so there is no need for it to be in the header file. Move it. Signed-off-by: Simon Glass Reviewed-by: Christian Gmeiner --- include/smbios.h | 10 ---------- lib/smbios.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/smbios.h b/include/smbios.h index 1846607c3cf..fc69188a8fe 100644 --- a/include/smbios.h +++ b/include/smbios.h @@ -219,16 +219,6 @@ static inline void fill_smbios_header(void *table, int type, header->handle = handle; } -/** - * Function prototype to write a specific type of SMBIOS structure - * - * @addr: start address to write the structure - * @handle: the structure's handle, a unique 16-bit number - * @node: node containing the information to write (ofnode_null() if none) - * @return: size of the structure - */ -typedef int (*smbios_write_type)(ulong *addr, int handle, ofnode node); - /** * write_smbios_table() - Write SMBIOS table * diff --git a/lib/smbios.c b/lib/smbios.c index 1e10fa84207..b1171f544a8 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -17,6 +17,16 @@ #include #endif +/** + * Function prototype to write a specific type of SMBIOS structure + * + * @addr: start address to write the structure + * @handle: the structure's handle, a unique 16-bit number + * @node: node containing the information to write (ofnode_null() if none) + * @return: size of the structure + */ +typedef int (*smbios_write_type)(ulong *addr, int handle, ofnode node); + /** * struct smbios_write_method - Information about a table-writing function * From patchwork Thu Jan 7 04:21:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423140 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=fb9JK/LI; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBClS712cz9sVt for ; Thu, 7 Jan 2021 15:23:16 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5CE80827BD; Thu, 7 Jan 2021 05:22:28 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="fb9JK/LI"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 37AD6827B5; Thu, 7 Jan 2021 05:22:22 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd2d.google.com (mail-io1-xd2d.google.com [IPv6:2607:f8b0:4864:20::d2d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 69FB0827A4 for ; Thu, 7 Jan 2021 05:22:16 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd2d.google.com with SMTP id z5so4935338iob.11 for ; Wed, 06 Jan 2021 20:22:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IJt4pYMlhS5qYw83i0bYHfrRN+fady8m572QZ7akfsI=; b=fb9JK/LIjriD8QTBKg5yiCgp5jrt4MMtPrrlZ+tzM3LVm7P0AliQPOcxd72tMuvSii ULl5Wgwxrv+FcFamphztr1YeUZaQv85yk0vtj399YEHDLR+ZYg9ecAmway3bIt68XhR2 O0VBtnNAPfYjKobCw5GkhjNnnk8BKmSNiVrzU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IJt4pYMlhS5qYw83i0bYHfrRN+fady8m572QZ7akfsI=; b=IQ86QZk7l5zZ281a8xAlUyazdBJ5bH31IoZ/cwc9pU3vSTQxTN7JvABgayabU1KNJw 0Vcw+L977hcbHKmjeFzKRs4Y//1VPfvtqGWX8CANmpt0e5T5M0mmDswp+9d4lY/uroS6 bidVUZnKfVn6dF1yCnBqR1xiH3Q/ebF5YkxEZ2J7UANV6e/oYdTqaJRF4ynlxi67GGLg TJojvYL5oLfS6SbB/4Or6VCczoztL/GLtrPfzid8zplQzxCHxtgmRlmvKqV3z+3zxXtA V6mwmAzOigSYHm8X5pg69A3zPIWlN7N/zgDaeeYrUg6UvqAdar6TmDdxYVvJYAUnhWWl Vmfw== X-Gm-Message-State: AOAM533oH0/IMCbLwQ99tH3AtpBCfrlAN6xhS2XAlLqaDocBPomqX2Ph 4m9uxXwo874wjOrDb6rwl7Ouwd4yrUBWklKn X-Google-Smtp-Source: ABdhPJxkAOZDzmmYfaYNscG1SvLerBGMCE07Dg0IUy1wFb3Yzp58zlpBJiG6pKwY192F/sotJrxovw== X-Received: by 2002:a02:ccf0:: with SMTP id l16mr6488141jaq.5.1609993335060; Wed, 06 Jan 2021 20:22:15 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:14 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng , Christian Gmeiner Subject: [PATCH 04/10] smbios: Use char consistently for the eos member Date: Wed, 6 Jan 2021 21:21:56 -0700 Message-Id: <20210106212153.4.I4f74a41778d64be702edad8fca961510153c59e7@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean At present a few of the structs use u8 instead of char. This is a string, so char is better. Update them. Signed-off-by: Simon Glass Reviewed-by: Christian Gmeiner --- include/smbios.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/smbios.h b/include/smbios.h index fc69188a8fe..1cbeabf9522 100644 --- a/include/smbios.h +++ b/include/smbios.h @@ -183,14 +183,14 @@ struct __packed smbios_type32 { u16 handle; u8 reserved[6]; u8 boot_status; - u8 eos[SMBIOS_STRUCT_EOS_BYTES]; + char eos[SMBIOS_STRUCT_EOS_BYTES]; }; struct __packed smbios_type127 { u8 type; u8 length; u16 handle; - u8 eos[SMBIOS_STRUCT_EOS_BYTES]; + char eos[SMBIOS_STRUCT_EOS_BYTES]; }; struct __packed smbios_header { From patchwork Thu Jan 7 04:21:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423138 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=bLFzJBaY; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCl13mMCz9sVt for ; Thu, 7 Jan 2021 15:22:53 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 712E7827B8; Thu, 7 Jan 2021 05:22:24 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="bLFzJBaY"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 02F5D827AA; Thu, 7 Jan 2021 05:22:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 5F2D0827AA for ; Thu, 7 Jan 2021 05:22:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x12d.google.com with SMTP id n9so5545359ili.0 for ; Wed, 06 Jan 2021 20:22:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pBp6dksuf5LVa92pIXu+Uq02e++8SOYLDHRM/UBs3yw=; b=bLFzJBaYhqsxxWb3KBXEFure6cx5n1Wx6nx+2jkR9VRqF+SODN1u3Ks/GQy7HdYXug rc/Ps1dNvCkYTzGglVE7o0ibPmwA/epDBphR4vRbsTVuEyyphupFBxxAQati3OrXvaX9 cj4Wfbr6iDLlBXoNpCtGs1H7rV0jiCoaNBumc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pBp6dksuf5LVa92pIXu+Uq02e++8SOYLDHRM/UBs3yw=; b=uf0s6Wjv5V0rKrYJ41cfzsyLUlhMtOmRUsufAczaWLsvkUZlMPa6SPDdTlHnQ4gVDf UnmVFS2xzQcROTSwA6YQ2GGEVHfjLJC8svdv3tGh6YHWXP/whuptjPD2lKvpI4sx2Lzi hfLx+jyBr1bXRrXSn7AdKdMQxNy6ZDFxrpF9nqwn183PTNWRWg+2ofXTiRUHH6SeeN3Y Gf31D3klIBpgEf6AI5WliW5+cqBczXAm99PYR4PUgRekno9v91Br8a3pS+vEC7C5lqCR fRh/f0yE9KnzTZFx0liOXhlfnZFR6PrHUhpWfYsfr/6Xu7hQNdJgTO2yDq9o9J6LZMUS cKOw== X-Gm-Message-State: AOAM5308uQ3ot9tW+7EqvHDlm7/DNNFPCY/kOCT27Wh9nuequmXKwR2d 2nNugSN1BP0BIzLpPqEfpHkR2axksUjI/9lc X-Google-Smtp-Source: ABdhPJxxtPaWtGzTPke3nP+g6tyBjcDaq1148OuAyXMyZNQ1qwaBN8CdgxrXqJwfTGdXnhGnDgDVGw== X-Received: by 2002:a05:6e02:c6a:: with SMTP id f10mr7527235ilj.264.1609993336032; Wed, 06 Jan 2021 20:22:16 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:15 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng Subject: [PATCH 05/10] smbios: Set BIOS release version Date: Wed, 6 Jan 2021 21:21:57 -0700 Message-Id: <20210106212153.5.I1af655eac7c24ccf4537bcc1f61bee9e629bf008@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean We may as well include the U-Boot release information in the type-0 table since it is designed for that purpose. U-Boot uses release versions based on the year and month. The year cannot fit in a byte, so drop the century. Signed-off-by: Simon Glass --- lib/smbios.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/smbios.c b/lib/smbios.c index b1171f544a8..8e9c002dec2 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -143,8 +143,8 @@ static int smbios_write_type0(ulong *current, int handle, ofnode node) #endif t->bios_characteristics_ext2 = BIOS_CHARACTERISTICS_EXT2_TARGET; - t->bios_major_release = 0xff; - t->bios_minor_release = 0xff; + t->bios_major_release = U_BOOT_VERSION_NUM % 100; + t->bios_minor_release = U_BOOT_VERSION_NUM_PATCH; t->ec_major_release = 0xff; t->ec_minor_release = 0xff; From patchwork Thu Jan 7 04:21:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423141 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=jWS0DZ9O; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBClh3xgpz9sVt for ; Thu, 7 Jan 2021 15:23:28 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C1A19827CC; Thu, 7 Jan 2021 05:22:31 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="jWS0DZ9O"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id F3CB8827BC; Thu, 7 Jan 2021 05:22:22 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x130.google.com (mail-il1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 7F09F82753 for ; Thu, 7 Jan 2021 05:22:18 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x130.google.com with SMTP id w17so5481213ilj.8 for ; Wed, 06 Jan 2021 20:22:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=489kHhNWucke05qxSwntask0n1MhTTIOUKiT4LsYDdY=; b=jWS0DZ9OzGakTQrdbFhm/VRLgDe1eiDWUlEKixlBkTW87VkWwVQzMO1dWRAufcqgP2 62kL7XiqaXANbGMWU5/NhcLDY6loeQb0a8POGzSSrkhPRyqSzAhkvKUR+uiwcmOdSIIl KXNzvK/mmMuNDRwwde2njSlr7i6hVO+dOFWZU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=489kHhNWucke05qxSwntask0n1MhTTIOUKiT4LsYDdY=; b=j/3FmiwpEc9UptebnaT9GuwKcYU1zuPn3OGnmwJxU6vnCRx4ALX7j2bRHAhxjfpMrg 4i1zwooFyHclMLDnlP/POxfb+jP8u7bv1OQjU+ityHJdfkGRr1mS9Jb5WgahCYhHsHIJ kJSZmZQWIRCb3r7aZEiMHN/Gf4NiLeHl+wpH+b4OO2sBoElbJ4pT14tv/zvTK0ytXapM q6qP4/yd3Wmlzd0WnLFtnW3f3uuHvl2BXTCqz8c8e0fyq+qX7xh12d6LvZoNzgUiYF1E wgPDmrm5Gjbla7QzWbZ7p46sK4Cd/r2gOhXTXBw01nyYNgJIpe8uH/+dmBGSCyckl+NF HRgA== X-Gm-Message-State: AOAM533eSoo0S9ZnIaCEk+ssHvT//oOju17CE6AX3juJZRryKpI5UNk2 KCVF8iFAQj2ciyE6NNx+Buce7Dv+IfVaWEfE X-Google-Smtp-Source: ABdhPJzJe1/AMTII1OKJatNf2fmqZbWrtkUsIUAg/YQaWt+ExFMJe+XLFQ+HCOJaBhdz0z1BriK5iA== X-Received: by 2002:a05:6e02:1187:: with SMTP id y7mr7327778ili.143.1609993337037; Wed, 06 Jan 2021 20:22:17 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:16 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng Subject: [PATCH 06/10] smbios: Use a struct to keep track of context Date: Wed, 6 Jan 2021 21:21:58 -0700 Message-Id: <20210106212153.6.I3d3d75a7dd2d67e3947da19ba69049b0c35d058f@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean At present we pass the ofnode to each function. We also pass the 'eos' pointer for adding new strings. We don't track the current end of the string table, so have smbios_string_table_len() to find that. The code can be made more efficient if it keeps information in a context struct. This also makes it easier to add more features. As a first step, switch the ofnode parameter to be a context pointer. Update smbios_add_prop() at the same time to avoid changing the same lines of code in consecutive patches. Signed-off-by: Simon Glass --- lib/smbios.c | 85 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/lib/smbios.c b/lib/smbios.c index 8e9c002dec2..bb2c278e344 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -17,15 +17,27 @@ #include #endif +/** + * struct smbios_ctx - context for writing SMBIOS tables + * + * @node: node containing the information to write (ofnode_null() if none) + * @dev: sysinfo device to use (NULL if none) + */ +struct smbios_ctx { + ofnode node; + struct udevice *dev; +}; + /** * Function prototype to write a specific type of SMBIOS structure * * @addr: start address to write the structure * @handle: the structure's handle, a unique 16-bit number - * @node: node containing the information to write (ofnode_null() if none) + * @ctx: context for writing the tables * @return: size of the structure */ -typedef int (*smbios_write_type)(ulong *addr, int handle, ofnode node); +typedef int (*smbios_write_type)(ulong *addr, int handle, + struct smbios_ctx *ctx); /** * struct smbios_write_method - Information about a table-writing function @@ -78,17 +90,18 @@ static int smbios_add_string(char *start, const char *str) * smbios_add_prop() - Add a property from the device tree * * @start: string area start address - * @node: node containing the information to write (ofnode_null() if none) + * @ctx: context for writing the tables * @prop: property to write * @return 0 if not found, else SMBIOS string number (1 or more) */ -static int smbios_add_prop(char *start, ofnode node, const char *prop) +static int smbios_add_prop(char *start, struct smbios_ctx *ctx, + const char *prop) { if (IS_ENABLED(CONFIG_OF_CONTROL)) { const char *str; - str = ofnode_read_string(node, prop); + str = ofnode_read_string(ctx->node, prop); if (str) return smbios_add_string(start, str); } @@ -118,7 +131,8 @@ static int smbios_string_table_len(char *start) return len + 1; } -static int smbios_write_type0(ulong *current, int handle, ofnode node) +static int smbios_write_type0(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type0 *t; int len = sizeof(struct smbios_type0); @@ -155,7 +169,8 @@ static int smbios_write_type0(ulong *current, int handle, ofnode node) return len; } -static int smbios_write_type1(ulong *current, int handle, ofnode node) +static int smbios_write_type1(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type1 *t; int len = sizeof(struct smbios_type1); @@ -164,17 +179,17 @@ static int smbios_write_type1(ulong *current, int handle, ofnode node) t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type1)); fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - t->manufacturer = smbios_add_prop(t->eos, node, "manufacturer"); - t->product_name = smbios_add_prop(t->eos, node, "product"); - t->version = smbios_add_prop(t->eos, node, "version"); + t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); + t->product_name = smbios_add_prop(t->eos, ctx, "product"); + t->version = smbios_add_prop(t->eos, ctx, "version"); if (serial_str) { t->serial_number = smbios_add_string(t->eos, serial_str); strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); } else { - t->serial_number = smbios_add_prop(t->eos, node, "serial"); + t->serial_number = smbios_add_prop(t->eos, ctx, "serial"); } - t->sku_number = smbios_add_prop(t->eos, node, "sku"); - t->family = smbios_add_prop(t->eos, node, "family"); + t->sku_number = smbios_add_prop(t->eos, ctx, "sku"); + t->family = smbios_add_prop(t->eos, ctx, "family"); len = t->length + smbios_string_table_len(t->eos); *current += len; @@ -183,7 +198,8 @@ static int smbios_write_type1(ulong *current, int handle, ofnode node) return len; } -static int smbios_write_type2(ulong *current, int handle, ofnode node) +static int smbios_write_type2(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type2 *t; int len = sizeof(struct smbios_type2); @@ -191,9 +207,9 @@ static int smbios_write_type2(ulong *current, int handle, ofnode node) t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type2)); fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - t->manufacturer = smbios_add_prop(t->eos, node, "manufacturer"); - t->product_name = smbios_add_prop(t->eos, node, "product"); - t->asset_tag_number = smbios_add_prop(t->eos, node, "asset-tag"); + t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); + t->product_name = smbios_add_prop(t->eos, ctx, "product"); + t->asset_tag_number = smbios_add_prop(t->eos, ctx, "asset-tag"); t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; t->board_type = SMBIOS_BOARD_MOTHERBOARD; @@ -204,7 +220,8 @@ static int smbios_write_type2(ulong *current, int handle, ofnode node) return len; } -static int smbios_write_type3(ulong *current, int handle, ofnode node) +static int smbios_write_type3(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type3 *t; int len = sizeof(struct smbios_type3); @@ -212,7 +229,7 @@ static int smbios_write_type3(ulong *current, int handle, ofnode node) t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type3)); fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - t->manufacturer = smbios_add_prop(t->eos, node, "manufacturer"); + t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; t->bootup_state = SMBIOS_STATE_SAFE; t->power_supply_state = SMBIOS_STATE_SAFE; @@ -226,7 +243,8 @@ static int smbios_write_type3(ulong *current, int handle, ofnode node) return len; } -static void smbios_write_type4_dm(struct smbios_type4 *t, ofnode node) +static void smbios_write_type4_dm(struct smbios_type4 *t, + struct smbios_ctx *ctx) { u16 processor_family = SMBIOS_PROCESSOR_FAMILY_UNKNOWN; const char *vendor = "Unknown"; @@ -258,7 +276,8 @@ static void smbios_write_type4_dm(struct smbios_type4 *t, ofnode node) t->processor_version = smbios_add_string(t->eos, name); } -static int smbios_write_type4(ulong *current, int handle, ofnode node) +static int smbios_write_type4(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type4 *t; int len = sizeof(struct smbios_type4); @@ -267,7 +286,7 @@ static int smbios_write_type4(ulong *current, int handle, ofnode node) memset(t, 0, sizeof(struct smbios_type4)); fill_smbios_header(t, SMBIOS_PROCESSOR_INFORMATION, len, handle); t->processor_type = SMBIOS_PROCESSOR_TYPE_CENTRAL; - smbios_write_type4_dm(t, node); + smbios_write_type4_dm(t, ctx); t->status = SMBIOS_PROCESSOR_STATUS_ENABLED; t->processor_upgrade = SMBIOS_PROCESSOR_UPGRADE_NONE; t->l1_cache_handle = 0xffff; @@ -282,7 +301,8 @@ static int smbios_write_type4(ulong *current, int handle, ofnode node) return len; } -static int smbios_write_type32(ulong *current, int handle, ofnode node) +static int smbios_write_type32(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type32 *t; int len = sizeof(struct smbios_type32); @@ -297,7 +317,8 @@ static int smbios_write_type32(ulong *current, int handle, ofnode node) return len; } -static int smbios_write_type127(ulong *current, int handle, ofnode node) +static int smbios_write_type127(ulong *current, int handle, + struct smbios_ctx *ctx) { struct smbios_type127 *t; int len = sizeof(struct smbios_type127); @@ -326,7 +347,7 @@ ulong write_smbios_table(ulong addr) { ofnode parent_node = ofnode_null(); struct smbios_entry *se; - struct udevice *dev; + struct smbios_ctx ctx; ulong table_addr; ulong tables; int len = 0; @@ -336,10 +357,11 @@ ulong write_smbios_table(ulong addr) int isize; int i; + ctx.node = ofnode_null(); if (IS_ENABLED(CONFIG_OF_CONTROL)) { - uclass_first_device(UCLASS_SYSINFO, &dev); - if (dev) - parent_node = dev_read_subnode(dev, "smbios"); + uclass_first_device(UCLASS_SYSINFO, &ctx.dev); + if (ctx.dev) + parent_node = dev_read_subnode(ctx.dev, "smbios"); } /* 16 byte align the table address */ @@ -355,14 +377,13 @@ ulong write_smbios_table(ulong addr) /* populate minimum required tables */ for (i = 0; i < ARRAY_SIZE(smbios_write_funcs); i++) { const struct smbios_write_method *method; - ofnode node = ofnode_null(); int tmp; method = &smbios_write_funcs[i]; if (IS_ENABLED(CONFIG_OF_CONTROL) && method->subnode_name) - node = ofnode_find_subnode(parent_node, - method->subnode_name); - tmp = method->write((ulong *)&addr, handle++, node); + ctx.node = ofnode_find_subnode(parent_node, + method->subnode_name); + tmp = method->write((ulong *)&addr, handle++, &ctx); max_struct_size = max(max_struct_size, tmp); len += tmp; From patchwork Thu Jan 7 04:21:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423143 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=mq1NL5nr; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCm65pPlz9sVt for ; Thu, 7 Jan 2021 15:23:50 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id EE530827C5; Thu, 7 Jan 2021 05:22:35 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="mq1NL5nr"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 0F60E827BB; Thu, 7 Jan 2021 05:22:26 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd36.google.com (mail-io1-xd36.google.com [IPv6:2607:f8b0:4864:20::d36]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9BA3C827AC for ; Thu, 7 Jan 2021 05:22:19 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd36.google.com with SMTP id r9so4966338ioo.7 for ; Wed, 06 Jan 2021 20:22:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=irFs7npZKBTi4sFodd0Fefr+deE6ibt+aQ2cO5GEKyQ=; b=mq1NL5nrHJgUuiprkUv0FDVXOLi/YVvYWDhFs26oqwHjbmJAqnkZ7HUVetIxLrilRW KNMaJz4c06l4UqaRjixV3w9s0HGq09+oWRKlkzdSo0cRKy9glvDpXbe5GxdWLdQrEAzU TTlXPhJQJKabQ8LZwYDeoDqwgRCOKdxlmhlIU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=irFs7npZKBTi4sFodd0Fefr+deE6ibt+aQ2cO5GEKyQ=; b=SQXOmAew7i/OL3Vk6ScV10izr6OY+8wLniOdomlUMfgPBqImO+jZcKRtg5o4+uvURn OPtMIkqp9iHaNGQHd4RV3Fws551Sm3gbti4fR8TNQEHmY1RjpTlYF+BWvLktBjFHZ1oI uKq4HJ3OxzOLqFQAR2n1CtYWOxR7Yne07s5C+ouzhCl8elHZis04Znc4RcZRHElx4oLl 6WL9dyQSoPxeE6Q0k8qECzM0EW8iUTf9Pk/3G/qOdM80Y4Dv5JQ74/mzaT4AC/TjSCxH pcDNPqvSSfz39E4+XvOdM/BNTOrsICtaJQeTFAQ0n4bvuTE6lYIWNUz2DbLGmZFZzujl KrFA== X-Gm-Message-State: AOAM530tV7FYYzGUONpkAQDmWZMlsYDz0qbf2mtzSqPK2KHB0XaSBi1r BFn8H8EwCgOI5NEnqlBnUTagd4rgiGWaHvWL X-Google-Smtp-Source: ABdhPJxb2cnLV9nizCpe2rKN6zH9Tjks3PpyfWcFqBuY3rgCQqQYO4cHNUSNpVb+vRG9lxBqo39QHw== X-Received: by 2002:a02:cd2f:: with SMTP id h15mr6419922jaq.37.1609993338136; Wed, 06 Jan 2021 20:22:18 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:17 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng Subject: [PATCH 07/10] smbios: Drop the eos parameter Date: Wed, 6 Jan 2021 21:21:59 -0700 Message-Id: <20210106212153.7.I6c28d884e356bafbb28c4fa3a1ce66b9fa761158@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean We can store this in the context and avoid passing it to each function. This makes it easier to follow and will also allow keeping track of the end of the string table (in future patches). Add an 'eos' field to the context and create a function to set it up. Signed-off-by: Simon Glass --- lib/smbios.c | 61 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 24 deletions(-) diff --git a/lib/smbios.c b/lib/smbios.c index bb2c278e344..03045b80227 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -22,10 +22,13 @@ * * @node: node containing the information to write (ofnode_null() if none) * @dev: sysinfo device to use (NULL if none) + * @eos: end-of-string pointer for the table being processed. This is set + * up when we start processing a table */ struct smbios_ctx { ofnode node; struct udevice *dev; + char *eos; }; /** @@ -57,14 +60,15 @@ struct smbios_write_method { * This adds a string to the string area which is appended directly after * the formatted portion of an SMBIOS structure. * - * @start: string area start address + * @ctx: SMBIOS context * @str: string to add * @return: string number in the string area (1 or more) */ -static int smbios_add_string(char *start, const char *str) +static int smbios_add_string(struct smbios_ctx *ctx, const char *str) { int i = 1; - char *p = start; + char *p = ctx->eos; + if (!*str) str = "Unknown"; @@ -90,25 +94,28 @@ static int smbios_add_string(char *start, const char *str) * smbios_add_prop() - Add a property from the device tree * * @start: string area start address - * @ctx: context for writing the tables + * @node: node containing the information to write (ofnode_null() if none) * @prop: property to write * @return 0 if not found, else SMBIOS string number (1 or more) */ -static int smbios_add_prop(char *start, struct smbios_ctx *ctx, - const char *prop) +static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) { - if (IS_ENABLED(CONFIG_OF_CONTROL)) { const char *str; str = ofnode_read_string(ctx->node, prop); if (str) - return smbios_add_string(start, str); + return smbios_add_string(ctx, str); } return 0; } +static void set_eos(struct smbios_ctx *ctx, char *eos) +{ + ctx->eos = eos; +} + /** * smbios_string_table_len() - compute the string area size * @@ -140,9 +147,10 @@ static int smbios_write_type0(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type0)); fill_smbios_header(t, SMBIOS_BIOS_INFORMATION, len, handle); - t->vendor = smbios_add_string(t->eos, "U-Boot"); - t->bios_ver = smbios_add_string(t->eos, PLAIN_VERSION); - t->bios_release_date = smbios_add_string(t->eos, U_BOOT_DMI_DATE); + set_eos(ctx, t->eos); + t->vendor = smbios_add_string(ctx, "U-Boot"); + t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); + t->bios_release_date = smbios_add_string(ctx, U_BOOT_DMI_DATE); #ifdef CONFIG_ROM_SIZE t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; #endif @@ -179,17 +187,18 @@ static int smbios_write_type1(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type1)); fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); - t->product_name = smbios_add_prop(t->eos, ctx, "product"); - t->version = smbios_add_prop(t->eos, ctx, "version"); + set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); + t->product_name = smbios_add_prop(ctx, "product"); + t->version = smbios_add_prop(ctx, "version"); if (serial_str) { - t->serial_number = smbios_add_string(t->eos, serial_str); + t->serial_number = smbios_add_string(ctx, serial_str); strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); } else { - t->serial_number = smbios_add_prop(t->eos, ctx, "serial"); + t->serial_number = smbios_add_prop(ctx, "serial"); } - t->sku_number = smbios_add_prop(t->eos, ctx, "sku"); - t->family = smbios_add_prop(t->eos, ctx, "family"); + t->sku_number = smbios_add_prop(ctx, "sku"); + t->family = smbios_add_prop(ctx, "family"); len = t->length + smbios_string_table_len(t->eos); *current += len; @@ -207,9 +216,10 @@ static int smbios_write_type2(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type2)); fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); - t->product_name = smbios_add_prop(t->eos, ctx, "product"); - t->asset_tag_number = smbios_add_prop(t->eos, ctx, "asset-tag"); + set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); + t->product_name = smbios_add_prop(ctx, "product"); + t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; t->board_type = SMBIOS_BOARD_MOTHERBOARD; @@ -229,7 +239,8 @@ static int smbios_write_type3(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type3)); fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - t->manufacturer = smbios_add_prop(t->eos, ctx, "manufacturer"); + set_eos(ctx, t->eos); + t->manufacturer = smbios_add_prop(ctx, "manufacturer"); t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; t->bootup_state = SMBIOS_STATE_SAFE; t->power_supply_state = SMBIOS_STATE_SAFE; @@ -272,8 +283,8 @@ static void smbios_write_type4_dm(struct smbios_type4 *t, #endif t->processor_family = processor_family; - t->processor_manufacturer = smbios_add_string(t->eos, vendor); - t->processor_version = smbios_add_string(t->eos, name); + t->processor_manufacturer = smbios_add_string(ctx, vendor); + t->processor_version = smbios_add_string(ctx, name); } static int smbios_write_type4(ulong *current, int handle, @@ -285,6 +296,7 @@ static int smbios_write_type4(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type4)); fill_smbios_header(t, SMBIOS_PROCESSOR_INFORMATION, len, handle); + set_eos(ctx, t->eos); t->processor_type = SMBIOS_PROCESSOR_TYPE_CENTRAL; smbios_write_type4_dm(t, ctx); t->status = SMBIOS_PROCESSOR_STATUS_ENABLED; @@ -310,6 +322,7 @@ static int smbios_write_type32(ulong *current, int handle, t = map_sysmem(*current, len); memset(t, 0, sizeof(struct smbios_type32)); fill_smbios_header(t, SMBIOS_SYSTEM_BOOT_INFORMATION, len, handle); + set_eos(ctx, t->eos); *current += len; unmap_sysmem(t); From patchwork Thu Jan 7 04:22:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423142 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=85.214.62.61; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=Ciby6vR6; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBClw3B35z9sVt for ; Thu, 7 Jan 2021 15:23:40 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C8B26827D3; Thu, 7 Jan 2021 05:22:33 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="Ciby6vR6"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C58B0827B5; Thu, 7 Jan 2021 05:22:25 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd2d.google.com (mail-io1-xd2d.google.com [IPv6:2607:f8b0:4864:20::d2d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 9AF25827B3 for ; Thu, 7 Jan 2021 05:22:20 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd2d.google.com with SMTP id 81so4924620ioc.13 for ; Wed, 06 Jan 2021 20:22:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lAZgzC3fQ1NoJkBQyNsBqLHYSp6l77e8yAQncNdHvjo=; b=Ciby6vR6lp9EKfRz6fLM64a6n39cqhF61tCmBif2ey/VTHxJwm/EHHdGKMEGZ0U7sm msr2fFiFcP7JGkLVCqlRkW2uP9LIdHehARmE0T8ya601+AykusmGT5SIsE/L1TacnMBg fK3avGPBJDPcH2wIP2cMY30jec90/+ogUoxfk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lAZgzC3fQ1NoJkBQyNsBqLHYSp6l77e8yAQncNdHvjo=; b=ZlkstIjDPi1/BaJGQ6Iw+Mx1L57hG2j+ARVjB9cm1NgSFoqKSgOgT4VN6dWwUVSLaU d9cAlSGnJ/Zi5AOsGYlz5iM4rWU2QA7ZBIP3W86vTZ7DhivcWIPI8MX3qkOivf+1MGWo BoXBDaa2TEj7SSjeHPW7X7BXG/T5yv1k3uUzIzrbQDB7wv+uSOFeinvvTkaQGEwuaD0y w01KRslILP4kZvm8CtGa07wDd0GbYOhF2/R5QG1oC3vVFu1lOhTT6/HcenKEr1GgUdvw szodK1QDYBZreNmzdK1MDbpZRqT2qnCIhp4gWOznFCWiSKsJEsk/hbeA47oQ+V0IdOzI sedQ== X-Gm-Message-State: AOAM530ht+62T/P4u+l/rmDATHfYDAsOxFicZm14jHGbUx+tRlRdmtxm YliJ90sai7+CnevG/1J4J5Cg54l8LSWQ9Uge X-Google-Smtp-Source: ABdhPJyotX90FJmp5dz5ZrZ85UXSwDgjBhfmbKEkpxW8W7qsG/aUf6VOKCS2N3KuitYD5VqRDgI9VQ== X-Received: by 2002:a05:6638:153:: with SMTP id y19mr6402260jao.47.1609993339159; Wed, 06 Jan 2021 20:22:19 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:18 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng Subject: [PATCH 08/10] smbios: Track the end of the string table Date: Wed, 6 Jan 2021 21:22:00 -0700 Message-Id: <20210107042202.2600568-2-sjg@chromium.org> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean Add a new member to the context struct which tracks the end of the string table. This allows us to avoid recalculating this at the end. Signed-off-by: Simon Glass --- lib/smbios.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/lib/smbios.c b/lib/smbios.c index 03045b80227..227dd2521f9 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -24,11 +24,15 @@ * @dev: sysinfo device to use (NULL if none) * @eos: end-of-string pointer for the table being processed. This is set * up when we start processing a table + * @next_ptr: pointer to the start of the next string to be added. When the + * table is nopt empty, this points to the byte after the \0 of the + * previous string. */ struct smbios_ctx { ofnode node; struct udevice *dev; char *eos; + char *next_ptr; }; /** @@ -77,6 +81,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) strcpy(p, str); p += strlen(str); *p++ = '\0'; + ctx->next_ptr = p; *p++ = '\0'; return i; @@ -114,6 +119,7 @@ static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) static void set_eos(struct smbios_ctx *ctx, char *eos) { ctx->eos = eos; + ctx->next_ptr = eos; } /** @@ -121,21 +127,13 @@ static void set_eos(struct smbios_ctx *ctx, char *eos) * * This computes the size of the string area including the string terminator. * - * @start: string area start address + * @ctx: SMBIOS context * @return: string area size */ -static int smbios_string_table_len(char *start) +static int smbios_string_table_len(const struct smbios_ctx *ctx) { - char *p = start; - int i, len = 0; - - while (*p) { - i = strlen(p) + 1; - p += i; - len += i; - } - - return len + 1; + /* Allow for the final \0 after all strings */ + return (ctx->next_ptr + 1) - ctx->eos; } static int smbios_write_type0(ulong *current, int handle, @@ -170,7 +168,7 @@ static int smbios_write_type0(ulong *current, int handle, t->ec_major_release = 0xff; t->ec_minor_release = 0xff; - len = t->length + smbios_string_table_len(t->eos); + len = t->length + smbios_string_table_len(ctx); *current += len; unmap_sysmem(t); @@ -200,7 +198,7 @@ static int smbios_write_type1(ulong *current, int handle, t->sku_number = smbios_add_prop(ctx, "sku"); t->family = smbios_add_prop(ctx, "family"); - len = t->length + smbios_string_table_len(t->eos); + len = t->length + smbios_string_table_len(ctx); *current += len; unmap_sysmem(t); @@ -223,7 +221,7 @@ static int smbios_write_type2(ulong *current, int handle, t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; t->board_type = SMBIOS_BOARD_MOTHERBOARD; - len = t->length + smbios_string_table_len(t->eos); + len = t->length + smbios_string_table_len(ctx); *current += len; unmap_sysmem(t); @@ -247,7 +245,7 @@ static int smbios_write_type3(ulong *current, int handle, t->thermal_state = SMBIOS_STATE_SAFE; t->security_status = SMBIOS_SECURITY_NONE; - len = t->length + smbios_string_table_len(t->eos); + len = t->length + smbios_string_table_len(ctx); *current += len; unmap_sysmem(t); @@ -306,7 +304,7 @@ static int smbios_write_type4(ulong *current, int handle, t->l3_cache_handle = 0xffff; t->processor_family2 = t->processor_family; - len = t->length + smbios_string_table_len(t->eos); + len = t->length + smbios_string_table_len(ctx); *current += len; unmap_sysmem(t); From patchwork Thu Jan 7 04:22:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423144 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=HiBsBmG+; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCmJ60Nnz9sVt for ; Thu, 7 Jan 2021 15:24:00 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id ABB11827D8; Thu, 7 Jan 2021 05:22:37 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="HiBsBmG+"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id A88AA827B5; Thu, 7 Jan 2021 05:22:26 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-il1-x130.google.com (mail-il1-x130.google.com [IPv6:2607:f8b0:4864:20::130]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id A4153827A4 for ; Thu, 7 Jan 2021 05:22:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-il1-x130.google.com with SMTP id q5so5488772ilc.10 for ; Wed, 06 Jan 2021 20:22:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PPo8bH54WAP49XKPVyB478r6Jry+fH++VAv3FuJL22U=; b=HiBsBmG+xzheej/UOn/widXWXxpm7NA+djuCjXctRaPA4/cqzf63PcmPEBcS+4niME ogHW6GhfxwVLKfcbhlDmyLWmhss6Hmpr3fOdnEiZ3VGTih/mBOmwMOHhEGkUJwiZmZaU AfmXNAme3SE5MOBDZ7aRkL0teiqSmAPXNWStk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PPo8bH54WAP49XKPVyB478r6Jry+fH++VAv3FuJL22U=; b=GPadpD4Biu0sFRtzyjRNse3P4DSDm+ZVTBZRVXBwoy0P0BdOpkOudX2ibydv9SVzWd D/uMV59e7rxt32s6fA9AnkkE2dDOaB3IGdiyxEQ+ozf2iqN6O+is5Fy+bNlm5iArobYB n1e3PkKxZbgYT8UHeGcp8HsDrPcl/+RCeIJ/AR1B/9IJhFSHvNgPmFz15Hi6n3g5MvD8 mxlJw/GhmBoxL9tEkjIE5og6b4ew3Ft7wLQbY1SSi4a1gA/fY1yUaYTvEj2UZQb7Bw8z IYuDU17XFw/1XizNCGZmrewFhK77/f9uX5Szpif7Bdpoy4MpbNR+nGrHcLjfmv8gkuWa jxzA== X-Gm-Message-State: AOAM530MLv09Eytb8OeGfcSyz6YK0trM2KZ83tnzSOWOkBDyR0u7ivlZ w7bqsgdto2S7zNjYrqBX1m+0KGrv487rzgdG X-Google-Smtp-Source: ABdhPJzhb9z1g13Elxkdd3lPaCOMPw0ujOtOaDThW1XiFRm0zW5TaV8LRP14NXhjqrfBIbz/ReRtoA== X-Received: by 2002:a92:dc8e:: with SMTP id c14mr7394126iln.54.1609993340338; Wed, 06 Jan 2021 20:22:20 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:19 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Baruch Siach , Bin Meng , Christian Gmeiner , Masahiro Yamada , Peng Fan Subject: [PATCH 09/10] smbios: Add more options for the BIOS version string Date: Wed, 6 Jan 2021 21:22:01 -0700 Message-Id: <20210106212153.9.I8018bd2c82cadc8ec924e7302dee4d0901b0a822@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean At present the version string is obtained from PLAIN_VERSION. Some boards may want to configure this using the device tree, since the build system can more easily insert things there after U-Boot itself is built. Add this option to the code. Also in some cases the version needs to be generated programmatically, such as when it is stored elsewhere in the ROM and must be read first. To handle this, keep a pointer around so that it can be updated later. This works by storing the last string in the context, since it is easier than passing out a little-used extra parameter. Provide a function to update the version string. Signed-off-by: Simon Glass --- include/asm-generic/global_data.h | 3 ++ include/smbios.h | 12 +++++++ lib/smbios.c | 56 +++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 3 deletions(-) diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index 31e249177c3..9d478c2d9e7 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -433,6 +433,9 @@ struct global_data { */ struct acpi_ctx *acpi_ctx; #endif +#if CONFIG_IS_ENABLED(GENERATE_SMBIOS_TABLE) + char *smbios_version; /* Points to SMBIOS type 0 version */ +#endif }; /** diff --git a/include/smbios.h b/include/smbios.h index 1cbeabf9522..ecc4fd1de3b 100644 --- a/include/smbios.h +++ b/include/smbios.h @@ -257,4 +257,16 @@ const struct smbios_header *smbios_header(const struct smbios_entry *entry, int */ const char *smbios_string(const struct smbios_header *header, int index); +/** + * smbios_update_version() - Update the version string + * + * This can be called after the SMBIOS tables are written (e.g. after the U-Boot + * main loop has started) to update the BIOS version string (SMBIOS table 0). + * + * @version: New version string to use + * @return 0 if OK, -ENOENT if no version string was previously written, + * -ENOSPC if the new string is too large to fit + */ +int smbios_update_version(const char *version); + #endif /* _SMBIOS_H_ */ diff --git a/lib/smbios.c b/lib/smbios.c index 227dd2521f9..80118cfea89 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -17,6 +17,10 @@ #include #endif +enum { + SMBIOS_STR_MAX = 64, /* Maximum length allowed for a string */ +}; + /** * struct smbios_ctx - context for writing SMBIOS tables * @@ -27,12 +31,15 @@ * @next_ptr: pointer to the start of the next string to be added. When the * table is nopt empty, this points to the byte after the \0 of the * previous string. + * @last_str: points to the last string that was written to the table, or NULL + * if none */ struct smbios_ctx { ofnode node; struct udevice *dev; char *eos; char *next_ptr; + char *last_str; }; /** @@ -78,6 +85,7 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) for (;;) { if (!*p) { + ctx->last_str = p; strcpy(p, str); p += strlen(str); *p++ = '\0'; @@ -87,8 +95,10 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) return i; } - if (!strcmp(p, str)) + if (!strcmp(p, str)) { + ctx->last_str = p; return i; + } p += strlen(p) + 1; i++; @@ -120,6 +130,35 @@ static void set_eos(struct smbios_ctx *ctx, char *eos) { ctx->eos = eos; ctx->next_ptr = eos; + ctx->last_str = NULL; +} + +int smbios_update_version(const char *version) +{ + char *ptr = gd->smbios_version; + uint old_len, len; + + if (!ptr) + return log_ret(-ENOENT); + + /* + * This string is supposed to have at least enough bytes and is + * padded with spaces. Update it, taking care not to move the + * \0 terminator, so that other strings in the string table + * are not disturbed. See smbios_add_string() + */ + old_len = strnlen(ptr, SMBIOS_STR_MAX); + len = strnlen(version, SMBIOS_STR_MAX); + if (len > old_len) + return log_ret(-ENOSPC); + + log_debug("Replacing SMBIOS type 0 version string '%s'\n", ptr); + memcpy(ptr, version, len); +#ifdef LOG_DEBUG + print_buffer((ulong)ptr, ptr, 1, old_len + 1, 0); +#endif + + return 0; } /** @@ -147,7 +186,18 @@ static int smbios_write_type0(ulong *current, int handle, fill_smbios_header(t, SMBIOS_BIOS_INFORMATION, len, handle); set_eos(ctx, t->eos); t->vendor = smbios_add_string(ctx, "U-Boot"); - t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); + + t->bios_ver = smbios_add_prop(ctx, "version"); + if (!t->bios_ver) + t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); + if (t->bios_ver) + gd->smbios_version = ctx->last_str; + log_debug("smbios_version = %p: '%s'\n", gd->smbios_version, + gd->smbios_version); +#ifdef LOG_DEBUG + print_buffer((ulong)gd->smbios_version, gd->smbios_version, + 1, strlen(gd->smbios_version) + 1, 0); +#endif t->bios_release_date = smbios_add_string(ctx, U_BOOT_DMI_DATE); #ifdef CONFIG_ROM_SIZE t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; @@ -345,7 +395,7 @@ static int smbios_write_type127(ulong *current, int handle, } static struct smbios_write_method smbios_write_funcs[] = { - { smbios_write_type0, }, + { smbios_write_type0, "bios", }, { smbios_write_type1, "system", }, { smbios_write_type2, "baseboard", }, { smbios_write_type3, "chassis", }, From patchwork Thu Jan 7 04:22:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1423145 X-Patchwork-Delegate: bmeng.cn@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: 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=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.a=rsa-sha256 header.s=google header.b=mN7juehO; dkim-atps=neutral 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 RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBCmW1L1zz9sVt for ; Thu, 7 Jan 2021 15:24:11 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id AADD2827DD; Thu, 7 Jan 2021 05:22:39 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org 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=chromium.org header.i=@chromium.org header.b="mN7juehO"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id ABC0D827BB; Thu, 7 Jan 2021 05:22:27 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-xd2f.google.com (mail-io1-xd2f.google.com [IPv6:2607:f8b0:4864:20::d2f]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E1C2F827BD for ; Thu, 7 Jan 2021 05:22:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd2f.google.com with SMTP id i18so4998875ioa.1 for ; Wed, 06 Jan 2021 20:22:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Zs5EaW/3fSJzV4uHVfChVo6drCXptnb8h1GOrQy01KU=; b=mN7juehO63mZoKKUGmE1ldlIwaUJJpBBNT+/cSxiDM9hsdRrE+gNa1hmHLkBmaIH0I WtWArE993veOCg2IKhriB0zeLSV6ifzsSd1qFEpPMDlj3uyDK4U5AyRyZTVTF8Ac1ZN7 t9Eyxuh/aQEANVQRFL4SCSdpj6nsU9kVMEwUY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Zs5EaW/3fSJzV4uHVfChVo6drCXptnb8h1GOrQy01KU=; b=oooPdePgeyDjj4ZeWjciBSeIbW6ISQprsnoReEA9LtG0JcRfS4uLcfzeqUHNh85v6D T0MS/OEw64V9kV6X7bGqIwTJg02wKi6ib4E2ZwsOjw/TeMhz9toKSuEgl2mDcD957bEs X+K0kVfBHL/NYiAFyVWuQFf44cVGiVucJW5szX81UXiw6Y59JsBjF2l2N2h/Zn7xk/OZ HIRCNwZF1NBGtiqZ0InsjHKqD7MJn4ODJxqGdViMOksJ9190el6YMbx0Cji35ULHtcv6 iQfmpp4xjsJeP39eBBDHGjtOKs4agGpsR6lfwI+18rmyfQf3+PoZq6ReZ4zH0y0yAXrD M8AA== X-Gm-Message-State: AOAM530oudh1unDb/ZPRLuoNechf6mWO4YSW8Vl+k8wMX82a3sH5AOYP 4u7TIDvAVtybuPN9ZnLJdC2JOXdnBWxRi4us X-Google-Smtp-Source: ABdhPJztgzCOk7IGhzx5AMCizVibIqNbjlXMEFzzUm56UCU0k9U1CcTyNb2YkWmS4bBv726G8ihtnA== X-Received: by 2002:a05:6638:30f:: with SMTP id w15mr6470242jap.121.1609993341335; Wed, 06 Jan 2021 20:22:21 -0800 (PST) Received: from localhost.localdomain (c-67-190-101-114.hsd1.co.comcast.net. [67.190.101.114]) by smtp.gmail.com with ESMTPSA id s1sm2793419iot.0.2021.01.06.20.22.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jan 2021 20:22:20 -0800 (PST) From: Simon Glass To: U-Boot Mailing List Cc: Andy Shevchenko , Heinrich Schuchardt , Bernhard Messerklinger , Wolfgang Wallner , Walter Lozano , Simon Glass , Bin Meng , Jean-Jacques Hiblot Subject: [PATCH 10/10] smbios: Allow a few values to come from sysinfo Date: Wed, 6 Jan 2021 21:22:02 -0700 Message-Id: <20210106212153.10.I2ef14d4a29ee813c1a6c3577d10df8fe6062172d@changeid> X-Mailer: git-send-email 2.29.2.729.g45daf8777d-goog In-Reply-To: <20210107042202.2600568-1-sjg@chromium.org> References: <20210107042202.2600568-1-sjg@chromium.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 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.102.3 at phobos.denx.de X-Virus-Status: Clean While static configuration is useful it cannot cover every case. Sometimes board revisions are encoded in resistor straps and must be read at runtime. The easiest way to provide this information is via sysinfo, since the board can then provide a driver to read whatever is needed. Add some standard sysinfo options for this, and use them to obtain the required information. Signed-off-by: Simon Glass --- include/sysinfo.h | 11 +++++++++++ lib/smbios.c | 32 +++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/include/sysinfo.h b/include/sysinfo.h index c045d316b07..b6e1abff5e4 100644 --- a/include/sysinfo.h +++ b/include/sysinfo.h @@ -31,6 +31,17 @@ * to read the serial number. */ +/** enum sysinfo_id - Standard IDs defined by U-Boot */ +enum sysinfo_id { + SYSINFO_ID_NONE, + + SYSINFO_ID_SMBIOS_SYSTEM_VERSION, + SYSINFO_ID_SMBIOS_BASEBOARD_VERSION, + + /* First value available for downstream/board used */ + SYSINFO_ID_USER = 0x1000, +}; + #if CONFIG_IS_ENABLED(SYSINFO) struct sysinfo_ops { /** diff --git a/lib/smbios.c b/lib/smbios.c index 80118cfea89..d28390f4024 100644 --- a/lib/smbios.c +++ b/lib/smbios.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #ifdef CONFIG_CPU @@ -106,15 +107,26 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) } /** - * smbios_add_prop() - Add a property from the device tree + * smbios_add_prop_si() - Add a property from the devicetree or sysinfo + * + * Sysinfo is used if available, with a fallback to devicetree * * @start: string area start address * @node: node containing the information to write (ofnode_null() if none) * @prop: property to write * @return 0 if not found, else SMBIOS string number (1 or more) */ -static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) +static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, + int sysinfo_id) { + if (sysinfo_id && ctx->dev) { + char val[80]; + int ret; + + ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); + if (!ret) + return smbios_add_string(ctx, val); + } if (IS_ENABLED(CONFIG_OF_CONTROL)) { const char *str; @@ -126,6 +138,17 @@ static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) return 0; } +/** + * smbios_add_prop() - Add a property from the devicetree + * + * @prop: property to write + * @return 0 if not found, else SMBIOS string number (1 or more) + */ +static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) +{ + return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE); +} + static void set_eos(struct smbios_ctx *ctx, char *eos) { ctx->eos = eos; @@ -238,7 +261,8 @@ static int smbios_write_type1(ulong *current, int handle, set_eos(ctx, t->eos); t->manufacturer = smbios_add_prop(ctx, "manufacturer"); t->product_name = smbios_add_prop(ctx, "product"); - t->version = smbios_add_prop(ctx, "version"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_SYSTEM_VERSION); if (serial_str) { t->serial_number = smbios_add_string(ctx, serial_str); strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); @@ -267,6 +291,8 @@ static int smbios_write_type2(ulong *current, int handle, set_eos(ctx, t->eos); t->manufacturer = smbios_add_prop(ctx, "manufacturer"); t->product_name = smbios_add_prop(ctx, "product"); + t->version = smbios_add_prop_si(ctx, "version", + SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; t->board_type = SMBIOS_BOARD_MOTHERBOARD;