[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 06/10] automation: qemu-smoke-arm32.sh: Modify script to use ImageBuilder


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Tue, 27 Sep 2022 11:47:23 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none
  • 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=Ax5+F8w1fPqztC0E47oipxuAnLpuQqKzKyegV6Abe7s=; b=kV7u/2HtlUrERhaBjJcVIZEsgVSFWGIumJ7wkcUnAmaIithGfyPnefXHYyJRvT6XgWzWOc2ZJn7jUWzzy5qYgP1QHvGDPb6Tzf6QMTurmUDJInKbnQ5VXwgoEvYzTA36YJm/Gk6K8ISi93IwiJKNPDlGIA2AWDstrm3L89ANEwMloyAOI8Pd4+kPT+3Wuw9WaCMtOdT60naGxOvV+xuKZCdtTaFHmsKoItA2QsQe8jHQa79RQlHFhbX6pqg3jXBZ2PhZnY6ZmrmskqW/BEyrWbsZXfwqj1Ec5jWyB3NlgJ+0+YdfgRSDndwODula2QCFND5Tgd0w2Dds8HEZ5O4tFw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GqBQ9EEvk3tft/KMnO5CZvplcC2/Jd5zXCoKqWLVQvIShjAQ1emym2xpykJukdK/YWuCyROCMh93VfSi7971yvNipj3LSUe7UNCOEoaXV6gG+hwjt6Xcnr7vyFNwb1qCE624nklHTrcYEI7knfyKAXdl3QTdNaoep46gtoXLZ9FFT8bIdXqmvZ2WfPcc3JnBzxars1n7Cy2piEoXqqg+brAR+9UUdrH7dyXN/myCw7T66T5QcMNUCr06Lhp2DmyFTQvmGYpm/IvoxCcLBjZJZitqczsAsJE6oxuLnIE1s8+IikrFpO3Fb0QpZK4gy2wvrDVUQyg4vwSZG+3VCzg1Xg==
  • Cc: Michal Orzel <michal.orzel@xxxxxxx>, Doug Goldstein <cardoe@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Luca Fancellu <luca.fancellu@xxxxxxx>
  • Delivery-date: Tue, 27 Sep 2022 09:47:51 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Take an example from arm64 qemu test scripts and use ImageBuilder
to generate u-boot script automatically. Calculating the addresses
manually is quite error prone and also we will be able to benefit
from using ImageBuilder when adding domUs to this test in the future.

Install and use u-boot from the debian package.
Modify the script so that binaries are loaded from u-boot via tftp.
Remove dtuart=/pl011@9000000 because stdout-path in QEMU dtb is always
set to pl011 node path.

Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
Reviewed-by: Luca Fancellu <luca.fancellu@xxxxxxx>
Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
---
Changes in v3:
- none
Changes in v2:
- add explanation in commit msg why we remove dtuart path
---
 automation/scripts/qemu-smoke-arm32.sh | 57 ++++++++++++--------------
 1 file changed, 27 insertions(+), 30 deletions(-)

diff --git a/automation/scripts/qemu-smoke-arm32.sh 
b/automation/scripts/qemu-smoke-arm32.sh
index c8ae0bfb9b1c..ef19b988c2c4 100755
--- a/automation/scripts/qemu-smoke-arm32.sh
+++ b/automation/scripts/qemu-smoke-arm32.sh
@@ -4,7 +4,9 @@ set -ex
 
 export DEBIAN_FRONTEND=noninteractive
 apt-get -qy update
-apt-get -qy install --no-install-recommends device-tree-compiler \
+apt-get -qy install --no-install-recommends u-boot-qemu \
+                                            u-boot-tools \
+                                            device-tree-compiler \
                                             curl \
                                             cpio
 
@@ -20,10 +22,6 @@ tar xvzf ../initrd.tar.gz
 find . | cpio -H newc -o | gzip > ../initrd.gz
 cd ..
 
-kernel=`stat -L --printf="%s" vmlinuz`
-initrd=`stat -L --printf="%s" initrd.gz`
-
-# For Xen, we need a couple of more node. Dump the DT from QEMU and add them
 # XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
 curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
 ./qemu-system-arm \
@@ -36,31 +34,31 @@ curl -fsSLO 
https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
    -display none \
    -machine dumpdtb=virt.dtb
 
-dtc -I dtb -O dts virt.dtb > virt.dts
+# ImageBuilder
+echo 'MEMORY_START="0x40000000"
+MEMORY_END="0x80000000"
+
+DEVICE_TREE="virt.dtb"
+XEN="xen"
+DOM0_KERNEL="vmlinuz"
+DOM0_RAMDISK="initrd.gz"
+DOM0_CMD="console=hvc0 earlyprintk clk_ignore_unused root=/dev/ram0 
rdinit=/bin/sh"
+XEN_CMD="console=dtuart dom0_mem=512M bootscrub=0"
+
+NUM_DOMUS=0
+
+LOAD_CMD="tftpb"
+BOOT_CMD="bootm"
+UBOOT_SOURCE="boot.source"
+UBOOT_SCRIPT="boot.scr"' > config
 
-cat >> virt.dts << EOF
-/ {
-       chosen {
-               #address-cells = <0x2>;
-               #size-cells = <0x2>;
-               stdout-path = "/pl011@9000000";
-        xen,xen-bootargs = "console=dtuart dtuart=/pl011@9000000 dom0_mem=512M 
bootscrub=0";
-               xen,dom0-bootargs = "console=tty0 console=hvc0 earlyprintk 
clk_ignore_unused root=/dev/ram0 rdinit=/bin/sh";
-               dom0 {
-                       compatible = "xen,linux-zimage", "xen,multiboot-module";
-                       reg = <0x0 0x1000000 0x0 $kernel>;
-               };
-        dom0-ramdisk {
-                       compatible = "xen,linux-initrd", "xen,multiboot-module";
-                       reg = <0x0 0x3200000 0x0 $initrd>;
-               };
-       };
-};
-EOF
-dtc -I dts -O dtb virt.dts > virt.dtb
+rm -rf imagebuilder
+git clone https://gitlab.com/ViryaOS/imagebuilder
+bash imagebuilder/scripts/uboot-script-gen -t tftp -d . -c config
 
 rm -f smoke.serial
 set +e
+echo "  virtio scan; dhcp; tftpb 0x40000000 boot.scr; source 0x40000000"| \
 timeout -k 1 240 \
 ./qemu-system-arm \
    -machine virt \
@@ -70,11 +68,10 @@ timeout -k 1 240 \
    -serial stdio \
    -monitor none \
    -display none \
-   -dtb virt.dtb \
    -no-reboot \
-   -kernel ./xen \
-   -device loader,file=./vmlinuz,addr=0x1000000 \
-   -device loader,file=./initrd.gz,addr=0x3200000 |& tee smoke.serial
+   -device virtio-net-pci,netdev=n0 \
+   -netdev user,id=n0,tftp=./ \
+   -bios /usr/lib/u-boot/qemu_arm/u-boot.bin |& tee smoke.serial
 
 set -e
 (grep -q "^/ #" smoke.serial) || exit 1
-- 
2.25.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.