gitlab-ci: Re-add kernels for bare-metal
authorTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 9 Jul 2020 20:38:51 +0000 (22:38 +0200)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Fri, 17 Jul 2020 18:23:16 +0000 (20:23 +0200)
I mistakenly removed what I thought were remnants of when Freedreno used
LAVA for their DUTs. lava_arm.sh is used for baremetal, so re-add that
code.

Fixes: dcd171f5e9bd ("gitlab-ci: More stable URL for kernel and ramdisk artifacts, for LAVA")
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5839>

.gitlab-ci.yml
.gitlab-ci/container/lava_arm.sh
.gitlab-ci/create-rootfs.sh
.gitlab-ci/lava-gitlab-ci.yml

index 594cadb559ffc9ff0b2fc4cb6e82b83ba5a04cce..0b6d0c63b6d4d1c6991098e9c3a49b48f2aeead3 100644 (file)
@@ -336,7 +336,7 @@ arm_test-base:
     - .fdo.container-build@debian
     - .container
   variables:
-    FDO_DISTRIBUTION_TAG: &arm_test-base "2020-06-22-tracie"
+    FDO_DISTRIBUTION_TAG: &arm_test-base "2020-07-09-cache"
 
 .use-arm_test-base:
   extends:
@@ -354,7 +354,7 @@ arm64_test:
   extends:
     - .use-arm_test-base
   variables:
-    FDO_DISTRIBUTION_TAG: &arm64_test "2020-06-25-kernelfix"
+    FDO_DISTRIBUTION_TAG: &arm64_test "2020-07-09-cache"
 
 .use-arm64_test:
   variables:
index 8751d2ecbdbd5edb54fd72b5474a2769b4cc6731..baee8d813f245cd11fe458c4a288da33883afcc8 100755 (executable)
@@ -118,7 +118,6 @@ rm -rf /renderdoc
 
 
 ############### Cross-build kernel
-KERNEL_URL="https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz"
 mkdir -p kernel
 wget -qO- ${KERNEL_URL} | tar -xz --strip-components=1 -C kernel
 pushd kernel
@@ -129,6 +128,18 @@ for image in ${KERNEL_IMAGE_NAME}; do
 done
 cp ${DEVICE_TREES} /lava-files/.
 
+if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage > /dev/null; then
+    make Image.lzma
+    mkimage \
+        -f auto \
+        -A arm \
+        -O linux \
+        -d arch/arm64/boot/Image.lzma \
+        -C lzma\
+        -b arch/arm64/boot/dts/qcom/sdm845-cheza-r3.dtb \
+        /lava-files/cheza-kernel
+fi
+
 popd
 rm -rf kernel
 
@@ -151,19 +162,56 @@ rm /lava-files/rootfs-${DEBIAN_ARCH}/create-rootfs.sh
 pushd /lava-files/rootfs-${DEBIAN_ARCH}
   find -H  |  cpio -H newc -o | gzip -c - > /lava-files/lava-rootfs.cpio.gz
 popd
-rm -rf /lava-files/rootfs-${DEBIAN_ARCH}
 
-ls -lh /lava-files/
+if [ ${DEBIAN_ARCH} = arm64 ]; then
+    # Pull down a specific build of qcomlt/release/qcomlt-5.4 8c79b3d12355
+    # ("Merge tag 'v5.4.23' into release/qcomlt-5.4"), where I used the
+    # .config from
+    # http://snapshots.linaro.org/96boards/dragonboard820c/linaro/debian/457/config-5.4.0-qcomlt-arm64
+    # with the following merged in:
+    #
+    # CONFIG_DRM=y
+    # CONFIG_DRM_MSM=y
+    # CONFIG_ATL1C=y
+    #
+    # Reason: 5.5 has a big stack of oopses and warns on db820c.  4.14-5.4
+    # linaro kernel binaries (see above .config link) have these as modules
+    # and distributed the modules only in the debian system, not the initrd,
+    # so they're very hard to extract (involving simg2img and loopback
+    # mounting).  4.11 is missing d72fea538fe6 ("drm/msm: Fix the check for
+    # the command size") so it can't actually run fredreno.  qcomlt-4.14 is
+    # unstable at boot (~10% instaboot rate).  The 5.4 qcomlt kernel with msm
+    # built in seems like the easiest way to go.
+    wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/Image.gz -O Image.gz \
+         -O /lava-files/db820c-kernel
+    wget https://people.freedesktop.org/~anholt/qcomlt-5.4-msm-build/apq8096-db820c.dtb \
+         -O /lava-files/db820c.dtb
+
+    # Make a gzipped copy of the Image for db410c.
+    gzip -k /lava-files/Image
+
+    # Add missing a630 firmware, added to debian packge in apr 2020
+    wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_gmu.bin \
+         -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_gmu.bin
+    wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/qcom/a630_sqe.fw \
+         -O /lava-files/rootfs-arm64/lib/firmware/qcom/a630_sqe.fw
+fi
 
 . .gitlab-ci/container/container_post_build.sh
 
 ############### Upload the files!
-ci-fairy minio login $CI_JOB_JWT
-for f in $(ls /lava-files/); do
-    ci-fairy minio cp /lava-files/$f \
-        minio://${MINIO_PATH}/$f
-done
-
-touch /lava-files/done
-ci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done
+if [ -n "$UPLOAD_FOR_LAVA" ]; then
+    ci-fairy minio login $CI_JOB_JWT
+    FILES_TO_UPLOAD="lava-rootfs.cpio.gz \
+                     $KERNEL_IMAGE_NAME \
+                     $(basename -a $DEVICE_TREES)"
+
+    for f in $FILES_TO_UPLOAD; do
+        ci-fairy minio cp /lava-files/$f \
+            minio://${MINIO_PATH}/$f
+    done
+
+    touch /lava-files/done
+    ci-fairy minio cp /lava-files/done minio://${MINIO_PATH}/done
+fi
 
index f6e80e1c517196d33fdaf3834b0c5d1a3763c906..e9a2c787041f0eeec36c32f8c38d3b8d91c54f96 100644 (file)
@@ -13,6 +13,7 @@ apt-get -y install --no-install-recommends \
     libdrm-nouveau2 \
     libx11-6 \
     libx11-xcb1 \
+    firmware-qcom-media \
     netcat-openbsd \
     python3 \
     libpython3.7 \
@@ -37,13 +38,19 @@ exec sh
 EOF
 chmod +x  /init
 
+mkdir -p /lib/firmware/rtl_nic
+wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/rtl_nic/rtl8153a-3.fw -O /lib/firmware/rtl_nic/rtl8153a-3.fw
+
 #######################################################################
 # Strip the image to a small minimal system without removing the debian
 # toolchain.
 
-# xz compress firmware so it doesn't waste RAM at runtime.
+# xz compress firmware so it doesn't waste RAM at runtime.  Except db820c's
+# GPU firmware, due to using a precompiled kernel without compression support.
 find /lib/firmware -type f -print0 | \
+    grep -vz a530 | \
     xargs -0r -P4 -n4 xz -T1 -C crc32
+ln -s /lib/firmware/qcom/a530* /lib/firmware/
 
 # Copy timezone file and remove tzdata package
 rm -rf /etc/localtime
index 07c7ac4e6b0f9cfa22eaf8d591cff7e33b58f412..c1c2352fc1c2109b54fcdab826792710ab6f0d1d 100644 (file)
@@ -1,5 +1,5 @@
 variables:
-  DISTRIBUTION_TAG: "2020-07-06"
+  DISTRIBUTION_TAG: "2020-07-10"
 
 .kernel+rootfs:
   stage: container-2
@@ -7,8 +7,10 @@ variables:
     - .ci-run-policy
   variables:
     GIT_STRATEGY: fetch
+    KERNEL_URL: "https://gitlab.freedesktop.org/tomeu/linux/-/archive/v5.5-panfrost-fixes/linux-v5.5-panfrost-fixes.tar.gz"
+    UPLOAD_FOR_LAVA: 1
   script:
-    - DEBIAN_ARCH=${DEBIAN_ARCH} .gitlab-ci/container/lava_arm.sh
+    - .gitlab-ci/container/lava_arm.sh
 
 kernel+rootfs_arm64:
   extends: