From patchwork Thu Jun 29 14:59:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Lukas Funke X-Patchwork-Id: 1801543 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-weidmueller-onmicrosoft-com header.b=wFyPoMoi; 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 ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QsMCc2dZMz20XS for ; Fri, 30 Jun 2023 01:03:40 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id C190B8668C; Thu, 29 Jun 2023 17:03:36 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=weidmueller.com 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=weidmueller.onmicrosoft.com header.i=@weidmueller.onmicrosoft.com header.b="wFyPoMoi"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 06A7186690; Thu, 29 Jun 2023 17:00:08 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FORGED_SPF_HELO,SPF_HELO_PASS,T_SCC_BODY_TEXT_LINE, T_SPF_PERMERROR autolearn=no autolearn_force=no version=3.4.2 Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20621.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1b::621]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id F2A7D866A8 for ; Thu, 29 Jun 2023 16:59:37 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=weidmueller.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=Lukas.Funke-oss@weidmueller.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O7yTGVeaLapZKfK5fJFJmmBO8ApUeM53/+JWN1d8Arl+bF2uXxszRuD+YEMH5QknR2QCMdHsOTmJ9GJCKDPewypg+OAzBhtdGR238bOwL5yir41YvRu0j7CwJR61ECmrJXBUDh7rJsAUFUXryRkJJtiV9O6lIb0vyLlcCGR9wsEyW8kj8DA6HIb9cYmGYCNcBbLFt7jXTjM20cjqIFnSHbyyAbnCgKS7exGKfW8XAcO4SofN/iUbOai03tHCsn2mQgWMj6tcCJWqREgvgn3o8KggTNPtX8LIAW/wvspmi8f++wCdfV+mF66ZDQICh4NwgDPiaQcbcuXbOc6GBqH1LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=WpO+PbGGihBnYYiTfA0mFlVqzpQRofrKcoA0sil4Xus=; b=eX8iCIWsqIuYbzmIuowg73oWwV/33BunBc6a+ld/+q+Roa3yvyWEiGLP2FXZWzw3DSRMHQbd2XtWAjXcF554nSihJ8590KovrDRB31W4WlMZF9Sj6I0eG+eg6ED+5BCq0bCn0vHXUqLTNOg/UJj+5L5Q3btYAQ/q4eBEJ0l0ZDUvcadOHIIz3e1Zy6V7LeIc7z4Jza/qP8PehFqGqbTwoLNqMdeoNsqv0SPF6ONzYxPtGxlByZGhm11wns2N2seh1TeLm7yB+KoRAknzBIV/pETtgDCKuJ2m/4Pf4/su+HeZyHP3QXXMLgg1XEm99VropqAwtghtBr2PmSdNFcs0CA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=weidmueller.com; dmarc=pass action=none header.from=weidmueller.com; dkim=pass header.d=weidmueller.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=weidmueller.onmicrosoft.com; s=selector1-weidmueller-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WpO+PbGGihBnYYiTfA0mFlVqzpQRofrKcoA0sil4Xus=; b=wFyPoMoixFMXj07Pz3l3v9tOlk1Jcjm0v+dr+RLutjDUQMulJedMqiNMQM8TLSrxtJTUJKoORaSpdSgBLkW3+2t0mA1ZWICGaP//X38kyzpTUT30AE3kmXS4e4rjRhKfqAHCNIQ2llnVTmpAmTjopCLEAuViSecl+BPdO5hEDGA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=weidmueller.com; Received: from AS2PR08MB8431.eurprd08.prod.outlook.com (2603:10a6:20b:55a::18) by AS8PR08MB9072.eurprd08.prod.outlook.com (2603:10a6:20b:5c0::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.26; Thu, 29 Jun 2023 14:59:37 +0000 Received: from AS2PR08MB8431.eurprd08.prod.outlook.com ([fe80::9d3c:b418:152b:34d9]) by AS2PR08MB8431.eurprd08.prod.outlook.com ([fe80::9d3c:b418:152b:34d9%7]) with mapi id 15.20.6521.024; Thu, 29 Jun 2023 14:59:37 +0000 From: lukas.funke-oss@weidmueller.com To: u-boot@lists.denx.de Cc: Lukas Funke , Alper Nebi Yasak , Simon Glass Subject: [PATCH 10/12] binman: btool: Add Xilinx Bootgen btool Date: Thu, 29 Jun 2023 16:59:23 +0200 Message-Id: <20230629145925.302080-11-lukas.funke-oss@weidmueller.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230629145925.302080-1-lukas.funke-oss@weidmueller.com> References: <20230629145925.302080-1-lukas.funke-oss@weidmueller.com> X-ClientProxiedBy: FR0P281CA0185.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:ab::10) To AS2PR08MB8431.eurprd08.prod.outlook.com (2603:10a6:20b:55a::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS2PR08MB8431:EE_|AS8PR08MB9072:EE_ X-MS-Office365-Filtering-Correlation-Id: 259990fa-eb48-4c27-e97d-08db78b174fc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gn5mCk14pCjF9OUqxkZaVOXR33k782K6rGz7ZAKGpG5vYv/2KfdJ+t3KgoXYaD5nQRWiRcrYRf/aeN/x7E9TnY7oyPifOYhw/AboE4FfOTrKGrcyeluJO0lP5B5qvCiN4BKqBBNo3v/gHu+zahjsFYsN622ENVgPXzhVD6TY/yWeaC48niDRxE/msBdE71VqkNcDJOwzbz2PwzpL3XjAV4vl9lt8F90sxRRgwoWXk6HkyEz+FUgmuyF/zozT/2vQFnHQ4I3WDh8ccu845Cjc0qH5mjs5wsEvCM0LbOVzNWzBweXWi/dj5fmEd4kZVQ/SrTlLoza8o5danCPTMKA7E7voVOdBXBzAzBPfwBBa9ttt6L0WYonUJITwGUTZW91caxNcafq6/O+2H+ufmO3GvP4OghTDnVEfNTo1fGyUifRDxbDkfnWP9E5q1rVvCYERBv6ugQkbptnitXT1Wdc/6A0b64Dituw4sK9CbXkxtc7hUG+Kans04YunRsld++3SzVcfpUcng6AqToD1gxIiOC9bHRz9nUR8Xv1eAi5Dj6oXFwAUf5cO7KD1dr928a18B7ZJdkVAgUvrNx9z7q/4Q5YSDlTxVmwquIBYya74YXY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AS2PR08MB8431.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(366004)(136003)(39860400002)(376002)(396003)(451199021)(6512007)(26005)(9686003)(2906002)(86362001)(52116002)(6486002)(6666004)(83380400001)(38100700002)(38350700002)(2616005)(66574015)(186003)(54906003)(41300700001)(4326008)(478600001)(36756003)(66946007)(66556008)(316002)(66476007)(6916009)(1076003)(5660300002)(8676002)(8936002)(6506007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?ld7xAPA3EFJEoKeX66aN+7vcNJxz?= =?utf-8?q?2C+s9ASbp9PuIXdGgfTA0k3ppUBVIzHtNlfUIca883QsgdK0wNfDf3VWAoQ1ikmMX?= =?utf-8?q?7Jn5aBxQAhAW2NjH8WiWmdW6wUq1jSXKcz24S7F2Cww664TRrPF1oo8nxS6AzlWCu?= =?utf-8?q?iwwfIx4YFX4iJ2ji6vCDAZCUmEOtxW2P3tI1JnDwOXfIJOJPmty/wi5cPdsrIuPS7?= =?utf-8?q?6C/P5QA7GSXoo4t9clQOkyEiyCmpX2xyzmKaTNw2XbsRiQPi0xULSAkNhO6v4sjV7?= =?utf-8?q?MkA3ohrxxM3StEQzewOLSA0Xv1HDBcTS3WbifJF02OTjvgiODEyQHk3+E7yzl5IEh?= =?utf-8?q?vnusv8PXnkUAtwGzUdxXuAdeHXjJTLAwVVUjAUg64orOoT74oBi6wtU8Jk5H8nlAS?= =?utf-8?q?rhbB38lEKL2RKq5NLvDYp3N4xrDvP1Evj8xdPCcFoz+pk1UcQiZDOoAK8ZT94sgC+?= =?utf-8?q?lXUecFNGYCbYHzWcQbdJNCQ2aOj6kFbjROqtRR5dKJFZye1dnPOrlba2BL/6Hx/GA?= =?utf-8?q?xo//HGuJ8vOnVZ0nsWV2LThPQug8qKBW0QxJxDJhu6ToilsFQ5xVzMD49uJP7br2C?= =?utf-8?q?et+LFF55MtBqETm6sEQhljVhOYtB6xWfsPdTyFcqsqFdQZcM+B9Wqami7jXUmmFrO?= =?utf-8?q?oPHz/YD1J9TsI1e8aWKpPHLUmgILkdUf0CA62fiaXWXKBkU1FGvocMfYrsKs2kBv0?= =?utf-8?q?jDT+k3wDwllp9t6nljFheci3XYfWrtzdSRLKDGVoqG9s9iWHrT7rs/YEucIeCIQrI?= =?utf-8?q?QB3kop9RhFNet3/WtRaCXx5Qkcy6+D51Tk3skLzjC8WR+4jjOEHpVzsmR0TgteZWv?= =?utf-8?q?xCwavU4i9fNjNkFvfZk6mTEl/n4XYL8wtneQHgtwN/l1rzNtYLaOQEwOZRUIIGnQz?= =?utf-8?q?OuIF7luwuV5R/J+iIT6r/XUadmojNgA64MwaC9Ia+ZBNGIrYU1OcrlIuyQeyStWzC?= =?utf-8?q?xnCst1xwTdNCxpdcl5h7JGtm2X8Q81enWdlpadPtsiqDNpDTTJ9X9RzkKTGYeyebP?= =?utf-8?q?czUYZBzeGdcVuzTuvpGkRX1f+qnHBXtnKlwUkch/C8A1GW/oi6EeZYzv84QbeyQ+Z?= =?utf-8?q?E2j4ylOiCCqQ2wtgJ3kpDWqc4sHoo/1J795Py4+hzQWD45uka5YTIhlgkmZYT2I8j?= =?utf-8?q?KHWWTZzTieKO59hv3HN/Fvh3S8xVNFHEIFMKOZGOs50x8RK2/3z3AJMr0d00RN2y/?= =?utf-8?q?Cmfod/HLAFxpInq7rm+HGNAC6KLYBJoj2QXJZrMJL8orJkjH4oCsyg/nt3Z/b8aio?= =?utf-8?q?cj7OQq5PjSkdo2uIHV7mZ7EIlrK9zYzMPFGiYP5SfJDzqX3J8GswQCVeXAGksuyeo?= =?utf-8?q?y0AsTWyZ1M4DyteT0T4ZVHT0UaBbjf4T69ZHmo2rT/V7x54DvuixjLhI1xuJ71DZ8?= =?utf-8?q?kea9zS7lGsY7uSaUt48qvnvocugEpOBOKv5B65OojsAzRiDWogUu5eGPK9WNQi8l+?= =?utf-8?q?XV0AYaNlaG6+8uSvZGxOSNOX7mGIrpHbrL5m01pmtR9trdXPdGKmFg7nerfgzPpXZ?= =?utf-8?q?qy9DVRSeJe0m+h/IVbTgJwtCUgzUUBbO4g=3D=3D?= X-OriginatorOrg: weidmueller.com X-MS-Exchange-CrossTenant-Network-Message-Id: 259990fa-eb48-4c27-e97d-08db78b174fc X-MS-Exchange-CrossTenant-AuthSource: AS2PR08MB8431.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2023 14:59:37.1477 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: e4289438-1c5f-4c95-a51a-ee553b8b18ec X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: FpwM563JuwlmlWUjIzLFYsrHIcww5yxwAX9NVAyTl38JlnICOaj5oZYMOhFCV1rlfL6NX4D3FePOVCqxvSZXqg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9072 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean From: Lukas Funke Add the Xilinx Bootgen as bintool. Xilinx Bootgen is used to create bootable SPL (FSBL in Xilinx terms) images for Zynq/ZynqMP devices. The btool creates a signed version of the SPL. Signed-off-by: Lukas Funke --- tools/binman/btool/bootgen.py | 82 +++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 tools/binman/btool/bootgen.py diff --git a/tools/binman/btool/bootgen.py b/tools/binman/btool/bootgen.py new file mode 100644 index 0000000000..8bc727a54f --- /dev/null +++ b/tools/binman/btool/bootgen.py @@ -0,0 +1,82 @@ +# SPDX-License-Identifier: GPL-2.0+ +# Copyright (C) 2023 Weidmüller Interface GmbH & Co. KG +# Lukas Funke +# +"""Bintool implementation for bootgen + +bootgen allows creating bootable SPL for Zynq(MP) + +Documentation is available via:: +https://www.xilinx.com/support/documents/sw_manuals/xilinx2022_1/ug1283-bootgen-user-guide.pdf + +Source code is available at: + +https://github.com/Xilinx/bootgen + +""" +import tempfile + +from binman import bintool +from u_boot_pylib import tools + +# pylint: disable=C0103 +class Bintoolbootgen(bintool.Bintool): + """Generate bootable fsbl image for zynq/zynqmp + + This bintools supports running Xilinx "bootgen" in order + to generate a bootable, authenticated image form an SPL. + + """ + def __init__(self, name): + super().__init__(name, 'Xilinx Bootgen', + version_regex=r'^\*\*\*\*\*\* Xilinx Bootgen', + version_args='') + + # pylint: disable=R0913 + def sign(self, arch, spl_elf_fname, pmufw_elf_fname, + psk_fname, ssk_fname, fsbl_config, auth_params, output_fname): + """ Sign FSBL(SPL) elf file and bundle it with pmu firmware + to a bootable image + + Args: + arch (str): Xilinx SoC architecture + spl_elf_fname (str): Filename of FSBL ELF file + pmufw_elf_fname (str): Filename pmu firmware + psk_fname (str): Filename of the primary secret key + ssk_fname (str): Filename of the secondary secret key + fsbl_config (str): FSBL config options + auth_params (str): Authentication parameter + output_fname (str): Filename where bootgen should write the result + """ + + _fsbl_config = f"[fsbl_config] {fsbl_config}" if fsbl_config else "" + _auth_params = f"[auth_params] {auth_params}" if auth_params else "" + + bif_template = f"""u_boot_spl_aes_rsa: {{ + [pskfile] {psk_fname} + [sskfile] {ssk_fname} + {_fsbl_config} + {_auth_params} + [ bootloader, + authentication = rsa, + destination_cpu=a53-0] {spl_elf_fname} + [pmufw_image] {pmufw_elf_fname} + }}""" + args = ["-arch", arch] + + with tempfile.NamedTemporaryFile(suffix=".bif", + dir=tools.get_output_dir()) as bif: + tools.write_file(bif.name, bif_template, binary=False) + args += ["-image", bif.name, '-w', '-o', output_fname] + self.run_cmd(*args) + + def fetch(self, method): + """Fetch bootgen from git""" + if method != bintool.FETCH_BUILD: + return None + + result = self.build_from_git( + 'https://github.com/Xilinx/bootgen', + 'all', + 'build/bootgen/bootgen') + return result