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: 11330737 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 284FD109A for ; Mon, 13 Jan 2020 18:17:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 06077214AF for ; Mon, 13 Jan 2020 18:17:04 +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 S1728926AbgAMSQw (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: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@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: 11330731 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 91C961398 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 6D90F207E0 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 S1726934AbgAMSQu (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: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@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); From patchwork Mon Jan 13 18:16:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandre TORGUE X-Patchwork-Id: 11330733 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 084CD109A for ; Mon, 13 Jan 2020 18:16:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D9FD4207E0 for ; Mon, 13 Jan 2020 18:16:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=st.com header.i=@st.com header.b="eCNF0WOg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728898AbgAMSQ4 (ORCPT ); Mon, 13 Jan 2020 13:16:56 -0500 Received: from mx07-00178001.pphosted.com ([62.209.51.94]:36658 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728923AbgAMSQy (ORCPT ); Mon, 13 Jan 2020 13:16:54 -0500 Received: from pps.filterd (m0046668.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00DICWgJ031805; Mon, 13 Jan 2020 19:16:39 +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=FqG6RRGJ2qKprjOk0E+7QuGlz/uGedPc3JymgcduaQ4=; b=eCNF0WOg9K4tDw9RTmicRxS5A+zMzFcTwmsTg39uB7uSO69KAzpbUDOQY9V2NWhWP5Ol SGYVwg1xbvb61jKy8H3etrl75FA4eB0J4A7BNXk2SEJIo6LeVv/2hUqoOkx1+rFlzlmU mdII2AFjLmKRAreYf0SMtHhqhMERibztr++oSjyIMsMFEe+UBWt9HMXw5AC8rP9uduHV T9LrMraYDU8dEtAKsAtaYJO+HEWX82zfvMvwYaVsZRxTlN/ID+ko4SWnrf8KbxOkIIKj yBL846byoTHXE1x8Y1KCQTUva8XCz3cQWr1CU7KkzTNpztUTTQ06blaHuQEyI7sIkjDs cQ== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 2xf77ashdc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Jan 2020 19:16:39 +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 C402610003A; 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 B51772B774E; Mon, 13 Jan 2020 19:16:30 +0100 (CET) Received: from localhost (10.75.127.49) by SFHDAG3NODE2.st.com (10.75.127.8) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Mon, 13 Jan 2020 19:16:30 +0100 From: Alexandre Torgue To: , Frank Rowand , Masahiro Yamada , Michal Marek , , CC: , Alexandre Torgue , , , Subject: [RFC PATCH 3/3] scripts: Use -B dtc option to generate dtb build information. Date: Mon, 13 Jan 2020 19:16:25 +0100 Message-ID: <20200113181625.3130-4-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.49] 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: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org This commit adds a new script to create a string in tmp file with some information (date, linux version, user). This file is then used by dtc with -B option to append dts file with a new property. During kernel boot it will then be possible to printout DTB build information (date, linux version used, user). Signed-off-by: Alexandre Torgue diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 3fa32f83b2d7..6a98eac1e56d 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -235,6 +235,7 @@ quiet_cmd_gzip = GZIP $@ # DTC # --------------------------------------------------------------------------- DTC ?= $(objtree)/scripts/dtc/dtc +DTB_GEN_INFO ?= $(objtree)/scripts/gen_dtb_build_info # Disable noisy checks by default ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),) @@ -275,11 +276,13 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE quiet_cmd_dtc = DTC $@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ - $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(DTC) -O $(2) -o $@ -b 0 \ + $(DTB_GEN_INFO) $(@).info ;\ + $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ + $(DTC) -O $(2) -o $@ -b 0 -B $(@).info\ $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ - -d $(depfile).dtc.tmp $(dtc-tmp) ; \ - cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + -d $(depfile).dtc.tmp $(dtc-tmp) ; \ + rm $(@).info ; \ + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc,dtb) diff --git a/scripts/gen_dtb_build_info b/scripts/gen_dtb_build_info new file mode 100755 index 000000000000..30cf7506b9d5 --- /dev/null +++ b/scripts/gen_dtb_build_info @@ -0,0 +1,11 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +DTB_TARGET=$@ +COMPILE_BY=$(whoami | sed 's/\\/\\\\/') + +touch $DTB_TARGET + +{ + echo From Linux $KERNELRELEASE by $COMPILE_BY the $(date). +} > $DTB_TARGET