From patchwork Mon Jan 13 18:16:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre TORGUE X-Patchwork-Id: 205799 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E09D6C33CA9 for ; Mon, 13 Jan 2020 18:17:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A7F05207FF for ; Mon, 13 Jan 2020 18:17:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="Ubb3nfV8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728925AbgAMSQw (ORCPT ); Mon, 13 Jan 2020 13:16:52 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:37348 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728689AbgAMSQv (ORCPT ); Mon, 13 Jan 2020 13:16:51 -0500 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00DICJLZ013375; Mon, 13 Jan 2020 19:16:32 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=jqz4VLQz2pbgJRJ9HLcUA7hHoCj0rPEjHAlpBG1sbDM=; b=Ubb3nfV8EsWSDtDcV2HNBGGHkPLs8aK7mzlgH8n6yzasB7xdJ+04qlM2NwWe5Xid6rKy hUzRVXxWyOXwU5zdAYG2wNigZHu3ATSOZ+uLvLfL34XT9sHfuHAMn736owgsRFC6A8r6 n/bn/O56cPlKKcS3WsjfwmrWU6x3FNQe3eJ1uY8+pp9JMOWtB53F5IGUAVmGelpzEvCm CEYHQfYNk7Wqd9E611K9VarG0kQylIrJdn+lLNUZlGkawli91K7uGOFS3Oq33x+HJwbz 6jzNnz6GtNDrY4txXGlRXpuPMHQIeI2ylnhKd54xPSgW9+rMgv7lYvve2+vNr3ZX91/K TA== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2xf7jp9cja-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Jan 2020 19:16:32 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 74F19100039; Mon, 13 Jan 2020 19:16:29 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag3node2.st.com [10.75.127.8]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 636142B1891; Mon, 13 Jan 2020 19:16:29 +0100 (CET) Received: from localhost (10.75.127.51) by SFHDAG3NODE2.st.com (10.75.127.8) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 13 Jan 2020 19:16:29 +0100 From: Alexandre Torgue To: , Frank Rowand , Masahiro Yamada , Michal Marek , , CC: , Alexandre Torgue , , , Subject: [RFC PATCH 1/3] dtc: Add dtb build information option Date: Mon, 13 Jan 2020 19:16:23 +0100 Message-ID: <20200113181625.3130-2-alexandre.torgue@st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200113181625.3130-1-alexandre.torgue@st.com> References: <20200113181625.3130-1-alexandre.torgue@st.com> MIME-Version: 1.0 X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG3NODE2.st.com (10.75.127.8) To SFHDAG3NODE2.st.com (10.75.127.8) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-13_06:2020-01-13,2020-01-13 signatures=0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org This commit adds the possibility to add build information for a DTB. Build information can be: build date, DTS version, "who built the DTB" (same kind of information that we get in Linux with the Linux banner). To do this, an extra option "-B" using an information file as argument has been added. If this option is used, input device tree is appended with a new string property "Build-info". This property is built with information found in information file given as argument. This file has to be generated by user and shouldn't exceed 256 bytes. Signed-off-by: Alexandre Torgue diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c index bdb3f5945699..294828bac20b 100644 --- a/scripts/dtc/dtc.c +++ b/scripts/dtc/dtc.c @@ -18,6 +18,7 @@ int padsize; /* Additional padding to blob */ int alignsize; /* Additional padding to blob accroding to the alignsize */ int phandle_format = PHANDLE_EPAPR; /* Use linux,phandle or phandle properties */ int generate_symbols; /* enable symbols & fixup support */ +int generate_build_info; /* Add build information: time, source version ... */ int generate_fixups; /* suppress generation of fixups on symbol support */ int auto_label_aliases; /* auto generate labels -> aliases */ int annotate; /* Level of annotation: 1 for input source location @@ -45,9 +46,42 @@ static void fill_fullpaths(struct node *tree, const char *prefix) fill_fullpaths(child, tree->fullpath); } +static void fill_build_info(struct node *tree, const char *fname) +{ + struct data d = empty_data; + char *tmp; + FILE *f; + int len; + + tmp = xmalloc(sizeof(char) * 256); + + f = fopen(fname, "r"); + if (!f) { + printf("Can't open file %s\n", fname); + return; + } + + len = fread(tmp, sizeof(char), 256, f); + if (!len) { + printf("Can't read file %s\n", fname); + fclose(f); + free(tmp); + } + fclose(f); + + tmp[len - 1] = '\0'; + + d = data_add_marker(d, TYPE_STRING, tmp); + d = data_append_data(d, tmp, len); + + add_property(tree, build_property("Build-info", d, NULL)); + + free(tmp); +} + /* Usage related data. */ static const char usage_synopsis[] = "dtc [options] "; -static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@AThv"; +static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@AT:B:hv"; static struct option const usage_long_opts[] = { {"quiet", no_argument, NULL, 'q'}, {"in-format", a_argument, NULL, 'I'}, @@ -69,6 +103,7 @@ static struct option const usage_long_opts[] = { {"symbols", no_argument, NULL, '@'}, {"auto-alias", no_argument, NULL, 'A'}, {"annotate", no_argument, NULL, 'T'}, + {"build-info", a_argument, NULL, 'B'}, {"help", no_argument, NULL, 'h'}, {"version", no_argument, NULL, 'v'}, {NULL, no_argument, NULL, 0x0}, @@ -106,6 +141,7 @@ static const char * const usage_opts_help[] = { "\n\tEnable generation of symbols", "\n\tEnable auto-alias of labels", "\n\tAnnotate output .dts with input source file and line (-T -T for more details)", + "\n\tAdd build information (date, version, ...) in the blob", "\n\tPrint this help and exit", "\n\tPrint version and exit", NULL, @@ -164,6 +200,7 @@ int main(int argc, char *argv[]) const char *outform = NULL; const char *outname = "-"; const char *depname = NULL; + const char *version = NULL; bool force = false, sort = false; const char *arg; int opt; @@ -256,9 +293,12 @@ int main(int argc, char *argv[]) case 'T': annotate++; break; - case 'h': usage(NULL); + case 'B': + version = optarg; + generate_build_info = 1; + break; default: usage("unknown option"); } @@ -296,14 +336,17 @@ int main(int argc, char *argv[]) } if (annotate && (!streq(inform, "dts") || !streq(outform, "dts"))) die("--annotate requires -I dts -O dts\n"); - if (streq(inform, "dts")) + if (streq(inform, "dts")) { dti = dt_from_source(arg); - else if (streq(inform, "fs")) + if (generate_build_info) + fill_build_info(dti->dt, version); + } else if (streq(inform, "fs")) { dti = dt_from_fs(arg); - else if(streq(inform, "dtb")) + } else if (streq(inform, "dtb")) { dti = dt_from_blob(arg); - else + } else { die("Unknown input format \"%s\"\n", inform); + } dti->outname = outname; From patchwork Mon Jan 13 18:16:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre TORGUE X-Patchwork-Id: 205800 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH, MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC5C5C33CA9 for ; Mon, 13 Jan 2020 18:16:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A02A4207FF for ; Mon, 13 Jan 2020 18:16:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="Mus7cWI7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728669AbgAMSQu (ORCPT ); Mon, 13 Jan 2020 13:16:50 -0500 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:37346 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728714AbgAMSQu (ORCPT ); Mon, 13 Jan 2020 13:16:50 -0500 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00DICJLY013375; Mon, 13 Jan 2020 19:16:32 +0100 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=KK+4RB7FOUhUsITJ0vCpMcOFWa7UxQVHwrmcg/94Bsc=; b=Mus7cWI7zodrC3PBcoSDKkY6Z+Kn9YCRTfRcxFHjb08J85qOyq20YL43lPu0iC/Unl7v CfKbIeTmk73ax2SKrPOEahZSZse6Thz1ZJCTmstHMdXCSDAIX5Izpv6xEcnCV5oghU06 VT6e3EdyU9hIeS9Fe6JFnYM7s2e+YI+o+JC/cq9FNpXtkEKANLL2HDB+RB0VeFJKDVPJ 9dK9mxPWFd8FtZNF9peNZlWTyQZsp4aQufc+y6OQ99jm8WLmhIqYWj+ae0Fr1FCAp5IG OmwqhJmxM4t0AhC9DCbRRqlkSVD5AfQMAmefxeZouQro0nG349Nbobo3sd5kU45hDmDB EQ== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2xf7jp9cj9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Jan 2020 19:16:32 +0100 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 20C9D10002A; Mon, 13 Jan 2020 19:16:30 +0100 (CET) Received: from Webmail-eu.st.com (sfhdag3node2.st.com [10.75.127.8]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 0C0C02B772F; Mon, 13 Jan 2020 19:16:30 +0100 (CET) Received: from localhost (10.75.127.51) by SFHDAG3NODE2.st.com (10.75.127.8) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 13 Jan 2020 19:16:29 +0100 From: Alexandre Torgue To: , Frank Rowand , Masahiro Yamada , Michal Marek , , CC: , Alexandre Torgue , , , Subject: [RFC PATCH 2/3] of: fdt: print dtb build information Date: Mon, 13 Jan 2020 19:16:24 +0100 Message-ID: <20200113181625.3130-3-alexandre.torgue@st.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200113181625.3130-1-alexandre.torgue@st.com> References: <20200113181625.3130-1-alexandre.torgue@st.com> MIME-Version: 1.0 X-Originating-IP: [10.75.127.51] X-ClientProxiedBy: SFHDAG6NODE3.st.com (10.75.127.18) To SFHDAG3NODE2.st.com (10.75.127.8) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-13_06:2020-01-13,2020-01-13 signatures=0 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org This commit prints out DTB build information (build time, dts source version used, ...) if "Build-info" property exists in DTB root node. Signed-off-by: Alexandre Torgue diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index 2cdf64d2456f..df5f54f9582a 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -1224,9 +1224,18 @@ bool __init early_init_dt_scan(void *params) */ void __init unflatten_device_tree(void) { + const char *build_info; + unsigned long dt_root; + __unflatten_device_tree(initial_boot_params, NULL, &of_root, early_init_dt_alloc_memory_arch, false); + /* If available, provide dtb build information */ + dt_root = of_get_flat_dt_root(); + build_info = of_get_flat_dt_prop(dt_root, "Build-info", NULL); + if (build_info) + pr_info("%s\n", build_info); + /* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */ of_alias_scan(early_init_dt_alloc_memory_arch);