From patchwork Thu Feb 23 06:43:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "MOESSBAUER, Felix" X-Patchwork-Id: 2685 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 23 Feb 2023 07:44:40 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f59.google.com (mail-wm1-f59.google.com [209.85.128.59]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 31N6idU7019209 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 23 Feb 2023 07:44:39 +0100 Received: by mail-wm1-f59.google.com with SMTP id c15-20020a05600c0a4f00b003ddff4b9a40sf3979108wmq.9; Wed, 22 Feb 2023 22:44:39 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1677134674; cv=pass; d=google.com; s=arc-20160816; b=OSNqq3MTpqZLD4YdT71oo1HZOQKNZd26KIWedZgMnKUjcFTASSZFR5+/fOY05y7U+q Pai1dkU+pdnEMwjXd71OmhYd6OgdUijyV5IpZNFmXKxTqZuUi1xySopbDNuMjLsj8CnH hx4ygK3jkcNF6A1QGmMNecLsvyqz3AJnogN+tzvUnaddv7c848YJtDMWziXCjshs6KFD /ikKYfemQGetcc/enKAeO4eARnzVEg2P//fdbCLQ4bDbSilBeUHdG65NSrl/+OBlN1gT NZsHCX0NhIm75a6DA8mWFAGlaONx8nR3ptFS9EKGfq65GjOq7tDRadVm1yZcXN4RWehz hV1A== 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=S18oR87IGZPsOG6zaO0H9qdu6kDvnicKvHQXXH7xUyE=; b=OkipUyIgUMURYlcN6cW/M4hsG87movK5OSgjZwtUH4Q4pTbLYS0SUbyu9XGRBvJzSb 1QPvYHOs269T09Vzx1SM7oA9jf8TqsQXyE7nk3Z8ysn0EgKRxbUyPVCyKyYWn74yhVgk rWeY3CPtYAiDyOUHTmqeckQHLztomhaWp4Ol6DHgfvJO2uTPA5IH1Wah932hm/D7LXG4 gco2UBEhQVqnOjZAxunSHAjVdayKp69CGz8W+/c6ymtvl+wIha/D2IuEsvm1Qk5sMoPp 3NzD4yNchI89GipSpLkWce8rjq7DBBb87BVTZKnUA1RTRWzGtEvXXd3PPJzXa4kCXff+ JgdQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=NfLAZxIm; spf=pass (google.com: domain of fm-72506-20230223064432286c00ab689f1d5795-u1qyk5@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-20230223064432286c00ab689f1d5795-U1qYk5@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=S18oR87IGZPsOG6zaO0H9qdu6kDvnicKvHQXXH7xUyE=; b=WCquoAPxvemW5SfJ2bKSY1NvdM/dnuhGPuyPfz4Cy+Z9YGwn2BnRnMk6fGXTDE7M3L FCgdhxXVfwWp0pvVpkuVytOFb5zI4MHR0eMQzVHxIGnrfmfqQKViJVWCnznTY8xSM444 +v5jQ8WjAu5bRLp9TdlJSJC61ZH+jjRJM/47AOPehehEkLaMZcClXLGQdbl/Cro2zhTd lceVLWnCsuPsaxqBubEoLSHznXV/wR+6Qxs1g1Dvk0+Mav/vtxeZuB0GqmUo6v9t0+n3 rupFJthkXbX6OYAAfsugnATm4fmf5oO3ex0AHMHhDQi8p5NK41B4qXJ6g3yO9sUrEUn3 bvtQ== 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=S18oR87IGZPsOG6zaO0H9qdu6kDvnicKvHQXXH7xUyE=; b=ryP9wvlsY+CD3nAmXiZIJ6I7XLfY02XmLhMOdva00i6j7d+yJaWo3x+/b13XKUkaIY 1WSd382HFUl03OGayOcgItg99HM87eP3twU/bb5QFmBycUcTzsbyhtdkS1rqIP3S681k RtL4YXNOConfwteZBY77Dg6lid0U+GYawNtbkRPp7TpvlhQgUvaIMpTBu+CC9vY3wmGd +dOkrtxNJQW8EB9bLjHeBomJnYXVw+ZBLbX4NOBlfWYIo+fNOjCP1QtD9Xgt99uQ+9ZE puhqXNUKKs6Bt8oL5cauKhwZWjUBUy8rLxrJjuJ4TvsihL+l34ECH1tvzRJZKTRn0sVI eFAA== Sender: isar-users@googlegroups.com X-Gm-Message-State: AO0yUKXAW9U606BXLaF49KFqcJUtt3VlKAIJXjtRnGQaL07Hp7VM2W1J NZcjnuh1l++hoCSWXY1snAs= X-Google-Smtp-Source: AK7set83fHhKoBkpRhGRZRLuFlL5d+RLgTWsPhuPK5wEao1bf1zKArppKVlB0LNpVOCo2hVvw59u3Q== X-Received: by 2002:a05:600c:1d25:b0:3ea:91d9:1f44 with SMTP id l37-20020a05600c1d2500b003ea91d91f44mr83251wms.9.1677134674433; Wed, 22 Feb 2023 22:44:34 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:adf:a3d1:0:b0:2c5:953c:231b with SMTP id m17-20020adfa3d1000000b002c5953c231bls4668473wrb.0.-pod-prod-gmail; Wed, 22 Feb 2023 22:44:32 -0800 (PST) X-Received: by 2002:a5d:4650:0:b0:2c5:c19b:5bcb with SMTP id j16-20020a5d4650000000b002c5c19b5bcbmr9428745wrs.29.1677134672747; Wed, 22 Feb 2023 22:44:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677134672; cv=none; d=google.com; s=arc-20160816; b=cIPOKOZgSd+OzSOfVMPpIb2vAZc6G6PutnzmAT+f44OcnhbT80lHFQgTuNO9cHxaQ1 RXAgIUSTdPTjRBu0bxJP1qsKXMkX1iE+XJ7uu3FlvcY8GGZbD5rfdPWJwF3tGjRZiZkn xAiSY3bbtIueMzxz9Te1CG1gGv/snFRqhjgifCr3oU2XXsQ6TtV9Ahb8fKWX8jy0BW6G goKOX39D5eaDmg0SEMH5jwjLeyoui4Tz8TWI8VOaYXak2UqWFRbCR3z3o5D/7z+/I+wA jcXxncrUxJdyZTxFRolCwgp1PeM6aYs9RsMSwvYmcmDnz7kcuJ91gkMN1ydtA4nSIev0 v6YQ== 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=1zJFqoTuvzRDr5ROGD2imnvHLtHfWath6fLZrq0J7sc=; b=HToBz+G9Or6moyuGK7jcTPQ6pXjiNRTaROId6z3EvOZpCspMwc+q/jyQ6C/VaBBUIF V5RTLOdnxtU53DvsGxax7l7Dq3CqPCySoCvFdeQMmPL6C1WENu83trglpOVo/EKi2Dmz aXUrKMtTqKxQ0v7XrnK1RNupvMXINkvxNz2QHvSF2HiKAuRzTuQ3JXd/zV6YVWBaaK2V c8ZE5DDc2+bPhlQsQ6PxPQ43N2/oNMCWyjXKPdDwTtFkfrk23uYd7uNh4CNR78SynA7q Nzhc6vEvTn1tgyUY9d8LR5cjXkMi+DFV3G65uOLqomRqRakAlsHIgPIi8bMwi2WndAtm w4Zw== ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=NfLAZxIm; spf=pass (google.com: domain of fm-72506-20230223064432286c00ab689f1d5795-u1qyk5@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-20230223064432286c00ab689f1d5795-U1qYk5@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 bt7-20020a056000080700b002c5995fb581si356192wrb.6.2023.02.22.22.44.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Feb 2023 22:44:32 -0800 (PST) Received-SPF: pass (google.com: domain of fm-72506-20230223064432286c00ab689f1d5795-u1qyk5@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 20230223064432286c00ab689f1d5795 for ; Thu, 23 Feb 2023 07:44:32 +0100 From: Felix Moessbauer To: isar-users@googlegroups.com Cc: adriaan.schmidt@siemens.com, jan.kiszka@siemens.com, Felix Moessbauer Subject: [PATCH v3 3/3] fix race-cond between default and custom initrd Date: Thu, 23 Feb 2023 06:43:59 +0000 Message-Id: <20230223064359.4171845-4-felix.moessbauer@siemens.com> In-Reply-To: <20230223064359.4171845-1-felix.moessbauer@siemens.com> References: <20230223064359.4171845-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=NfLAZxIm; spf=pass (google.com: domain of fm-72506-20230223064432286c00ab689f1d5795-u1qyk5@rts-flowmailer.siemens.com designates 185.136.65.227 as permitted sender) smtp.mailfrom=fm-72506-20230223064432286c00ab689f1d5795-U1qYk5@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..0c29e8b5 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 [ -z "${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'