############### 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
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
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
libdrm-nouveau2 \
libx11-6 \
libx11-xcb1 \
+ firmware-qcom-media \
netcat-openbsd \
python3 \
libpython3.7 \
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