From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7128466769373560832 X-Received: by 2002:a05:600c:1e27:b0:3a3:26dd:5757 with SMTP id ay39-20020a05600c1e2700b003a326dd5757mr5607861wmb.45.1659725507703; Fri, 05 Aug 2022 11:51:47 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:6000:238:b0:21d:a0b5:24ab with SMTP id l24-20020a056000023800b0021da0b524abls8155176wrz.1.-pod-prod-gmail; Fri, 05 Aug 2022 11:51:46 -0700 (PDT) X-Google-Smtp-Source: AA6agR5pBxLVBY2NoT6kEP1QPHHfgLGxabshpCrD6gqH3PEVcaj5I5ygF4TD2IRYiMAJw8qXYaPx X-Received: by 2002:a5d:6b10:0:b0:21e:4bbd:e893 with SMTP id v16-20020a5d6b10000000b0021e4bbde893mr5155491wrw.613.1659725506644; Fri, 05 Aug 2022 11:51:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1659725506; cv=none; d=google.com; s=arc-20160816; b=RgFfYe3j7eqvWl+C5OCXAXuSFrlDFpdBNlIXptwndVhtsgg90e3Hc0kDw9E92ZciQK yOsmgwxuyr4DAME4hMKhQAsOvrNTMxEAIBBy+DV7hpWqcSi3j7vvUIAWXKF4I7wkn3NH AFRWEH5EJiJs7zSvccb/PtaW+qkpWr4U6qKfS2LMf7Nhx5vOvsFYAyob6yGSDK3BH7ff f8x1yseiE0WLSwDoLS3N/CMAgB6eM1hWSHeTGMA4vF2JFV6AY0yXFwbOCHredd91QVn2 M/SD8WMmVjtd+zsv5qSMvNkQLAydwvy/tz2z1v3fwMv/OKLergJSVg9K+IzddM08FE5T RMaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=ag1of/b9cn3bUCOQT3vNXF2woM21JEyYZYi8DCrlVlQ=; b=sKl+mh9IUIQ1kOa2aY0H33ehbRom92XV+y7wFnZDa8yrlamCWJrzu+xqIGcVJ1nXnc H2emd1GNbnDtbwgmdJyC/RoZAMaIhOmhGvXC2QOk89wLz13HwpLnDxI8gzDWwPlGtFS4 PmXEhwJWQrsm6hXCX+nHcZilv7kT1nsfSNhQJYWCBQ0xBn9n0zIa5q9d8ISIarOFuKYv gjBel5PTEeEfLd2QWoTLq9RjfwsAscIoubKiDfgeUUX9KeHI78dzsaiYiRsE6HM7ugSm kHIsWEU22+n1LOTCQVu/xA3pU0lfgnw6C5nERkVnPC7A5LBRr25RGiwtD/ck/2lFORHo ZyCg== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm2 header.b=F3a+Emet; spf=pass (google.com: domain of fm-294854-20220805185146834eefe98f01f7626e-rhpssa@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-294854-20220805185146834eefe98f01f7626e-rhpSSa@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from mta-65-226.siemens.flowmailer.net (mta-65-226.siemens.flowmailer.net. [185.136.65.226]) by gmr-mx.google.com with ESMTPS id 189-20020a1c19c6000000b003a31bb11cdfsi470325wmz.2.2022.08.05.11.51.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 05 Aug 2022 11:51:46 -0700 (PDT) Received-SPF: pass (google.com: domain of fm-294854-20220805185146834eefe98f01f7626e-rhpssa@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) client-ip=185.136.65.226; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm2 header.b=F3a+Emet; spf=pass (google.com: domain of fm-294854-20220805185146834eefe98f01f7626e-rhpssa@rts-flowmailer.siemens.com designates 185.136.65.226 as permitted sender) smtp.mailfrom=fm-294854-20220805185146834eefe98f01f7626e-rhpSSa@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: by mta-65-226.siemens.flowmailer.net with ESMTPSA id 20220805185146834eefe98f01f7626e for ; Fri, 05 Aug 2022 20:51:46 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm2; d=siemens.com; i=jan.kiszka@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=ag1of/b9cn3bUCOQT3vNXF2woM21JEyYZYi8DCrlVlQ=; b=F3a+EmetkR3lAjPr41A4soNGBTTfkxPLvl/PLugyFB8SC+dET3w0i48BAZBLkM0C8M88rZ bK+jEzDBJEvb8B7MN8Qwp1Qz3XqmGfHHCeNeKR/hZik4OC7NnSrQdmRHFoUzHudKT633Y7HL 9yvYJZsilKvmvwj2l5G5PuEy1zLvA=; From: Jan Kiszka To: isar-users Cc: Henning Schild Subject: [PATCH 8/9] wic/bootimg-efi: Add support for loading devicetree files Date: Fri, 5 Aug 2022 20:51:43 +0200 Message-Id: <42c7286a2db556a136551963ba7ce6f2d8c48f4f.1659725504.git.jan.kiszka@siemens.com> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-294854:519-21489:flowmailer X-TUID: jgFUM4daNKwu From: Jan Kiszka For device tree using systems, add support to set a custom devices tree during UEFI boot. This requires to copy the DTB file to the boot partition and to add the respective loader entries to the configuration files. Both grub and systemd-boot support only loading a specific device tree. Therefore refuse to work if the 'dtb' parameter contains more than one entry. Out of scope for now are overlays (only supported by systemd-boot). Signed-off-by: Jan Kiszka Signed-off-by: Luca Ceresoli [Luca: rebased on commit 98e9d435b278 ("wic/bootimg-efi: use cross objcopy when building unified kernel image")] --- scripts/lib/wic/plugins/source/bootimg-efi.py | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py index 57e79f45..634a808d 100644 --- a/scripts/lib/wic/plugins/source/bootimg-efi.py +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py @@ -35,12 +35,12 @@ class BootimgEFIPlugin(SourcePlugin): name = 'bootimg-efi' @classmethod - def _copy_additional_files(cls, hdddir, initrd): - if initrd: - bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") - if not bootimg_dir: - raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") + def _copy_additional_files(cls, hdddir, initrd, dtb): + bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE") + if not bootimg_dir: + raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting") + if initrd: initrds = initrd.split(';') for rd in initrds: cp_cmd = "cp %s/%s %s" % (bootimg_dir, rd, hdddir) @@ -48,6 +48,12 @@ class BootimgEFIPlugin(SourcePlugin): else: logger.debug("Ignoring missing initrd") + if dtb: + if ';' in dtb: + raise WicError("Only one DTB supported, exiting") + cp_cmd = "cp %s/%s %s" % (bootimg_dir, dtb, hdddir) + exec_cmd(cp_cmd, True) + @classmethod def do_configure_grubefi(cls, hdddir, creator, cr_workdir, source_params): """ @@ -67,8 +73,9 @@ class BootimgEFIPlugin(SourcePlugin): "get it from %s." % configfile) initrd = source_params.get('initrd') + dtb = source_params.get('dtb') - cls._copy_additional_files(hdddir, initrd) + cls._copy_additional_files(hdddir, initrd, dtb) if not custom_cfg: # Create grub configuration using parameters from wks file @@ -102,6 +109,9 @@ class BootimgEFIPlugin(SourcePlugin): grubefi_conf += " /%s" % rd grubefi_conf += "\n" + if dtb: + grubefi_conf += "devicetree /%s\n" % dtb + grubefi_conf += "}\n" logger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg", @@ -131,9 +141,10 @@ class BootimgEFIPlugin(SourcePlugin): loader_conf += "timeout %d\n" % bootloader.timeout initrd = source_params.get('initrd') + dtb = source_params.get('dtb') if not unified_image: - cls._copy_additional_files(hdddir, initrd) + cls._copy_additional_files(hdddir, initrd, dtb) logger.debug("Writing systemd-boot config " "%s/hdd/boot/loader/loader.conf", cr_workdir) @@ -181,6 +192,9 @@ class BootimgEFIPlugin(SourcePlugin): for rd in initrds: boot_conf += "initrd /%s\n" % rd + if dtb: + boot_conf += "devicetree /%s\n" % dtb + if not unified_image: logger.debug("Writing systemd-boot config " "%s/hdd/boot/loader/entries/boot.conf", cr_workdir) @@ -316,6 +330,15 @@ class BootimgEFIPlugin(SourcePlugin): shutil.copyfileobj(in_file, initrd) initrd.close() + dtb = source_params.get('dtb') + if dtb: + if ';' in dtb: + raise WicError("Only one DTB supported, exiting") + dtb_params = '--add-section .dtb=%s/%s --change-section-vma .dtb=0x40000' % \ + (deploy_dir, dtb) + else: + dtb_params = '' + # Searched by systemd-boot: # https://systemd.io/BOOT_LOADER_SPECIFICATION/#type-2-efi-unified-kernel-images install_cmd = "install -d %s/EFI/Linux" % hdddir @@ -330,6 +353,7 @@ class BootimgEFIPlugin(SourcePlugin): objcopy_cmd += " --change-section-vma .osrel=0x20000" objcopy_cmd += " --add-section .cmdline=%s" % cmdline.name objcopy_cmd += " --change-section-vma .cmdline=0x30000" + objcopy_cmd += dtb_params objcopy_cmd += " --add-section .linux=%s/%s" % (staging_kernel_dir, kernel) objcopy_cmd += " --change-section-vma .linux=0x2000000" objcopy_cmd += " --add-section .initrd=%s" % initrd.name -- 2.35.3