From patchwork Sat Feb 18 10:30:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "MOESSBAUER, Felix" X-Patchwork-Id: 2663 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Sat, 18 Feb 2023 11:31:31 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f62.google.com (mail-wm1-f62.google.com [209.85.128.62]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 31IAVU3t026798 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 18 Feb 2023 11:31:30 +0100 Received: by mail-wm1-f62.google.com with SMTP id v12-20020a05600c444c00b003deaf780ab6sf416230wmn.4; Sat, 18 Feb 2023 02:31:30 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1676716285; cv=pass; d=google.com; s=arc-20160816; b=wtWW5WjSB2W8LhFIGaXzQUkIdeaKFMXaQ/+WcidrlZGaDan04+bFkgeg36nWspTRjB lXccvaZD0b34E0BJq3ot7WOd9Xj9vjyOzua6aMDT7soWX5HXZak5beiVbAniNLWCuY5j X43cie2mR+QDhwMUoSiJlvxrfMdIpQ6IT8s6sbBbrCtLKB2el+OOZ/7KoQaKAq/aytaZ A6SIXJD+FMGImZLb6az1djuUvPqF37nn+B0HYSYoMTojJghcJUidiJGyTa09Ocg0skoP pWFFO1oQfaZds9kQpmvWaGmMR72MIhnjzirHBGQvGhC5byFOo0tpPHasYAcGNIo+zkDG y4Xw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:feedback-id:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=wRcSTRou2skguHnbOWM8J+Q4TlUIIvHdgtwFZdBipac=; b=RQKlNb5KfS0kLtVDpfDtYJuh3B2oMcurlBo2iD77NEcOaaSAxQ7RuWkP7hk7JQzYgO PIoKo9jwkZldvQ0N07cZFvxJYx9emGSIxYxzYBsFi7sdG12oVbKcmwSWRRvUnMk+A3Vs 5S1aXqDEiA9ulAnXngH9pSfXXrW93CYBdyEtRFY80Ya4l5J3rE119HK+ZcXHYI0RwJCf vCZnRB6vExSfDeXr+372VYgoiQWdn5uf3+MDc0HmsKNl/na1/1Fk4SsPOjrN/Z3AWN2F ureYs83MycwnJQitqHzyrzQz9tXH5NtECTfB2SiUeY3ZdMtMEpIr078JLKvUoQ1jbDls yTuw== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QQHMAscp; spf=pass (google.com: domain of fm-72506-2023021810312037453e37ae02c12cc8-nbkvd2@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-2023021810312037453e37ae02c12cc8-nBkVd2@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:feedback-id:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=wRcSTRou2skguHnbOWM8J+Q4TlUIIvHdgtwFZdBipac=; b=TFwTwwN9rX/DanBJOc/AwovuOy429Fg+b7e1/eHaOsyekhEFDtKBzjZSOogK9JjPLG g/ZEH55FDlB4VGojxShxEB4tDOozrLgbiMN0dhIiVyylA4uSDG1QA/E9anqrbK1OwTCu eq/Ya45rtMOUiaF2OomrIYudOOXH40k58LnXv3upOHdymjoj7AW/icWW7bpCk1eaHsaC i6MvNONRLrWsQ/SHKMf5SJQA7jX+CtojaVqAeghvAhNrJsVKdoPQjpy/aToO8Fk3u8ar D5/qT7tR8ZqhVJEzlIbS4+sSvcNnG/zq2szaDJKEuRhaZAOfAqFqLlQFszqWi1SpgExp r8Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:feedback-id :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=wRcSTRou2skguHnbOWM8J+Q4TlUIIvHdgtwFZdBipac=; b=iNyAOpQXtfKTGQfVC7eRGvMLuHBroxTAIGrvLz93lYMkmT2oPDTezKk4pmmo9tzUH0 8o6gdxoJsThtLLGs4/cvwSHHApRFrphzBR520nfaY/+bHlAMbSvLTOpAJR5/lKHK8XQz J7jaKqYEaG7aLSgXp2RFHXcwZ5INSxQuiIrebGwb5oEykAWvM7LThkp3oMe4B0znsg3a dBtK6CJAjw4gUOeHNrmv/TDoNZSck7iNstG8dkRkey2DKbeLvwU0b5z7y+Wd++3doTSr 265yAwsOEbmh87fmMS1rTd08CyFVssffaftF3L/fsNvHDvZPdF3riuB6/73Er9ziVxsL a2JQ== Sender: isar-users@googlegroups.com X-Gm-Message-State: AO0yUKXnkACaaMiXiyiIGmweDMaP9p1/SkQrqNWwAxLUHHyJFmroOlMO uxGCUfS1QQJCM4SQy8rbwNI= X-Google-Smtp-Source: AK7set9eM0OMY/zt6ijkKWZX8za5Vp2IGJMAUgugCigpnabexD2eaey31l3XkBVhxQrxBIMUVjBJxA== X-Received: by 2002:a05:600c:1c0d:b0:3e2:905:9435 with SMTP id j13-20020a05600c1c0d00b003e209059435mr929677wms.2.1676716284877; Sat, 18 Feb 2023 02:31:24 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a5d:64a9:0:b0:2c5:5262:2e24 with SMTP id m9-20020a5d64a9000000b002c552622e24ls222835wrp.2.-pod-prod-gmail; Sat, 18 Feb 2023 02:31:22 -0800 (PST) X-Received: by 2002:a5d:4a08:0:b0:2c5:6046:aad6 with SMTP id m8-20020a5d4a08000000b002c56046aad6mr1292887wrq.23.1676716282200; Sat, 18 Feb 2023 02:31:22 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1676716282; cv=none; d=google.com; s=arc-20160816; b=GIv3jkc5osr7/vxr4lUoKmuQ3L46du5nMoNdqT7M60YGMJ1eZCprPk1yHMAjX3TWrl Ff6F5hn9k54gPOH2ut59QMv3s4CXAbl6ktLR9S7zT80IfGqyCpXWnx9EBKwllKaSGEqC Xknh7q+krb3GWRVY8FyWyM1zkY1WJryUVQ6V4ZoRNDoi+9APo8wnlipEfHHtl2LakIvh eH3hFwaPBhsYMcgv8tCO3CVAwbHOqKN2TypCmF7VMmEBFjHZz4TyP+z4IShK6ju+aifh nhPfn7+uPFWalaQWlrrWgFhFJvtU7uXSFLhULQRAwViamC/QhdgcovmNOr/rgoKRjz16 aq7w== 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=QY+vCLb9H9T4b/YOVoOYiqAxcbwGZuitdUHKJDO54a4=; b=avB3u8xlRB1U5/67KXpMmLywKdyKP0QZfJZimTADxk2YmY/VdaEDiIex6WS+Kn2t3l byffu16GabJ0Wz+qdyFq6Rw/45ceo8yHKiCgCI+gF5Astdmr50zfyFc0DiYjw12e3bwY 8I26BtmQ8/doSgzZ18kqIrGSiyby80Ymeh7ZwZADbliL0gnYGXkTnDuUdAOSm9DOG1j6 4y2hurDP7nPT63lDykjH3BeUWttQKCS7uSv0MmIgRIbfrol1VF/GO9ePyP48HID0Kb+k HOQ2ZH++oWFgMY9T/3jp9/dWMVLqTzIw+JG8+ddTohDVbk0rziLto/RyGc4gA/mpYzZT EtuQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QQHMAscp; spf=pass (google.com: domain of fm-72506-2023021810312037453e37ae02c12cc8-nbkvd2@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-2023021810312037453e37ae02c12cc8-nBkVd2@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mta-65-227.siemens.flowmailer.net (mta-65-227.siemens.flowmailer.net. [185.136.65.227]) by gmr-mx.google.com with ESMTPS id az19-20020a05600c601300b003e21b96f27asi188502wmb.2.2023.02.18.02.31.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 18 Feb 2023 02:31:22 -0800 (PST) Received-SPF: pass (google.com: domain of fm-72506-2023021810312037453e37ae02c12cc8-nbkvd2@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) client-ip=185.136.65.227; Received: by mta-65-227.siemens.flowmailer.net with ESMTPSA id 2023021810312037453e37ae02c12cc8 for ; Sat, 18 Feb 2023 11:31:21 +0100 From: Felix Moessbauer To: isar-users@googlegroups.com Cc: adriaan.schmidt@siemens.com, jan.kiszka@siemens.com, Felix Moessbauer Subject: [PATCH v2 3/3] fix race-cond between default and custom initrd Date: Sat, 18 Feb 2023 10:30:38 +0000 Message-Id: <20230218103038.3005105-4-felix.moessbauer@siemens.com> In-Reply-To: <20230218103038.3005105-1-felix.moessbauer@siemens.com> References: <20230218103038.3005105-1-felix.moessbauer@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-72506:519-21489:flowmailer X-Original-Sender: felix.moessbauer@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=QQHMAscp; spf=pass (google.com: domain of fm-72506-2023021810312037453e37ae02c12cc8-nbkvd2@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-2023021810312037453e37ae02c12cc8-nBkVd2@rts-flowmailer.siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= This patch fixes a data race happening when building a custom initrd. Previously, both custom and default initrds were deployed to the image deploy dir. The race is fixed by conditionally deploying either the custom or the default one. For that, we introduce a new variable INITRD_DEPLOY_FILE which provides the name of the initrd in the deploy directory. The existing INITRD_IMAGE variable is defaulted to the empty string and used to control if a custom initrd is requrested. Only if this variable is empty, the default one is deployed. Signed-off-by: Felix Moessbauer --- RECIPE-API-CHANGELOG.md | 8 ++++++++ meta/classes/image.bbclass | 20 ++++++++++++-------- scripts/start_vm | 4 ++-- testsuite/start_vm.py | 2 +- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md index e48c98c7..1e8dbfc8 100644 --- a/RECIPE-API-CHANGELOG.md +++ b/RECIPE-API-CHANGELOG.md @@ -476,3 +476,11 @@ Bitbake 2.0 for better performance. It also requires isar-sstate script to be migrated to zstd. Mixing old Gzip-based and new ZStandatd-based sstate cache is not recommended and should be avoid for correct compatibility. + +### Working with a custom initramfs + +The existing `INITRD_IMAGE` variable is defaulted to the empty string and used to +control if a custom initrd is requrested. Only if this variable is empty, the +default one is deployed. By that, the variable cannot be used to get the name of +the images initramfs. Instead, the variable `INITRD_DEPLOY_FILE` is provided which +always povides the name of the initrd file (also when the default one is used). diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 6277069f..7b3551b0 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -23,7 +23,8 @@ IMAGE_FULLNAME = "${PN}-${DISTRO}-${MACHINE}" # These variables are used by wic and start_vm KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}" -INITRD_IMAGE ?= "${IMAGE_FULLNAME}-initrd.img" +INITRD_IMAGE ?= "" +INITRD_DEPLOY_FILE = "${@ d.getVar('INITRD_IMAGE', True) or '${IMAGE_FULLNAME}-initrd.img'}" # This defines the deployed dtbs for reuse by imagers DTB_FILES ?= "" @@ -353,7 +354,7 @@ EOF # Default kernel, initrd and dtb image deploy paths (inside imager) KERNEL_IMG = "${PP_DEPLOY}/${KERNEL_IMAGE}" -INITRD_IMG = "${PP_DEPLOY}/${INITRD_IMAGE}" +INITRD_IMG = "${PP_DEPLOY}/${INITRD_DEPLOY_FILE}" # only one dtb file supported, pick the first DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}" @@ -370,12 +371,15 @@ do_copy_boot_files() { sudo cat "$kernel" > "${DEPLOYDIR}/${KERNEL_IMAGE}" fi - initrd="$(realpath -q '${IMAGE_ROOTFS}/initrd.img')" - if [ ! -f "$initrd" ]; then - initrd="$(realpath -q '${IMAGE_ROOTFS}/boot/initrd.img')" - fi - if [ -f "$initrd" ]; then - cp -f "$initrd" '${DEPLOYDIR}/${INITRD_IMAGE}' + if [ -e "${INITRD_IMAGE}" ]; then + # deploy default initrd if no custom one is build + initrd="$(realpath -q '${IMAGE_ROOTFS}/initrd.img')" + if [ ! -f "$initrd" ]; then + initrd="$(realpath -q '${IMAGE_ROOTFS}/boot/initrd.img')" + fi + if [ -f "$initrd" ]; then + cp -f "$initrd" '${DEPLOYDIR}/${INITRD_DEPLOY_FILE}' + fi fi for file in ${DTB_FILES}; do diff --git a/scripts/start_vm b/scripts/start_vm index 17091d72..8c696a4a 100755 --- a/scripts/start_vm +++ b/scripts/start_vm @@ -125,10 +125,10 @@ case "$IMAGE_FSTYPES" in readonly ROOTFS_IMAGE=$IMAGE_FULLNAME.ext4 eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^KERNEL_IMAGE=") - eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^INITRD_IMAGE=") + eval $(bitbake -e mc:qemu$ARCH-$DISTRO:isar-image-base | grep "^INITRD_DEPLOY_FILE=") QKERNEL=$IMAGE_DIR/${KERNEL_IMAGE} QINITRD=/dev/null - [ -n "$INITRD_IMAGE" ] && QINITRD=$IMAGE_DIR/${INITRD_IMAGE} + [ -n "$INITRD_DEPLOY_FILE" ] && QINITRD=$IMAGE_DIR/${INITRD_DEPLOY_FILE} if [ "$ARCH" = "riscv64" ]; then EXTRA_ARGS="$EXTRA_ARGS -device loader,file=$QKERNEL,addr=0x80200000" QKERNEL="/usr/lib/riscv64-linux-gnu/opensbi/qemu/virt/fw_jump.elf" diff --git a/testsuite/start_vm.py b/testsuite/start_vm.py index 82ecc17d..ba1ba127 100755 --- a/testsuite/start_vm.py +++ b/testsuite/start_vm.py @@ -35,7 +35,7 @@ def format_qemu_cmdline(arch, build, distro, out, pid, enforce_pcbios=False): if image_type == 'ext4': rootfs_image = 'isar-image-base-' + base + '-' + distro + '-qemu' + arch + '.ext4' kernel_image = deploy_dir_image + '/' + get_bitbake_var(bb_output, 'KERNEL_IMAGE') - initrd_image = get_bitbake_var(bb_output, 'INITRD_IMAGE') + initrd_image = get_bitbake_var(bb_output, 'INITRD_DEPLOY_FILE') if not initrd_image: initrd_image = '/dev/null'