From 60c5729d1669f9d91cc77d71f8e1893f2c0d0c94 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Wed, 4 Nov 2020 10:06:20 +0100 Subject: [PATCH] ci: Distribute ADMGPU driver to LAVA as a module As it needs firmware to probe, and we cannot bundle it within the kernel image because it is incompatible with the GPL. Currently we rebind the driver after boot but that's slow and fragile, as unloads of DRM drivers aren't generally tested. Signed-off-by: Tomeu Vizoso Reviewed-by: Eric Anholt Part-of: --- .gitlab-ci.yml | 22 +++++++++++----------- .gitlab-ci/container/arm_build.sh | 1 + .gitlab-ci/container/lava_build.sh | 7 +++++++ .gitlab-ci/container/x86_build-base.sh | 1 + .gitlab-ci/lava-deqp.yml.jinja2 | 3 +-- .gitlab-ci/lava-gitlab-ci.yml | 2 +- .gitlab-ci/lava-tracie.yml.jinja2 | 3 +-- .gitlab-ci/x86_64.config | 4 ++-- 8 files changed, 25 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4b9877cdcf3..21648504b53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -243,7 +243,7 @@ x86_build-base: - .fdo.container-build@debian - .container variables: - FDO_DISTRIBUTION_TAG: &x86_build-base "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &x86_build-base "2020-11-05-kmod" .use-x86_build-base: extends: @@ -261,7 +261,7 @@ x86_build: extends: - .use-x86_build-base variables: - FDO_DISTRIBUTION_TAG: &x86_build "2020-10-09-spvtools-1" + FDO_DISTRIBUTION_TAG: &x86_build "2020-11-05-kmod" .use-x86_build: variables: @@ -276,7 +276,7 @@ i386_build: extends: - .use-x86_build-base variables: - FDO_DISTRIBUTION_TAG: &i386_build "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &i386_build "2020-11-05-kmod" .use-i386_build: variables: @@ -291,7 +291,7 @@ ppc64el_build: extends: - .use-x86_build-base variables: - FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-11-05-kmod" .use-ppc64el_build: variables: @@ -306,7 +306,7 @@ s390x_build: extends: - .use-x86_build-base variables: - FDO_DISTRIBUTION_TAG: &s390x_build "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &s390x_build "2020-11-05-kmod" .use-s390x_build: variables: @@ -321,7 +321,7 @@ android_build: extends: - .use-x86_build-base variables: - FDO_DISTRIBUTION_TAG: &android_build "2020-10-05-shrink" + FDO_DISTRIBUTION_TAG: &android_build "2020-11-05-kmod" .use-android_build: variables: @@ -335,7 +335,7 @@ android_build: x86_test-base: extends: x86_build-base variables: - FDO_DISTRIBUTION_TAG: &x86_test-base "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &x86_test-base "2020-11-05-kmod" .use-x86_test-base: extends: @@ -352,19 +352,19 @@ x86_test-base: x86_test-gl: extends: .use-x86_test-base variables: - FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-10-30-python3-modules-1" + FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-11-05-kmod" # Debian 10 based x86 test image for VK x86_test-vk: extends: .use-x86_test-base variables: - FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-10-06-clang10-2" + FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-11-05-kmod" # Debian 9 based x86 build image (old LLVM) x86_build_old: extends: x86_build-base variables: - FDO_DISTRIBUTION_TAG: &x86_build_old "2020-08-13-gold" + FDO_DISTRIBUTION_TAG: &x86_build_old "2020-11-05-kmod" FDO_DISTRIBUTION_VERSION: stretch-slim .use-x86_build_old: @@ -381,7 +381,7 @@ arm_build: - .fdo.container-build@debian@arm64v8 - .container variables: - FDO_DISTRIBUTION_TAG: &arm_build "2020-09-10-libdrm" + FDO_DISTRIBUTION_TAG: &arm_build "2020-11-05-kmod" .use-arm_build: variables: diff --git a/.gitlab-ci/container/arm_build.sh b/.gitlab-ci/container/arm_build.sh index 29494b381d7..56b411fb909 100644 --- a/.gitlab-ci/container/arm_build.sh +++ b/.gitlab-ci/container/arm_build.sh @@ -21,6 +21,7 @@ apt-get -y install \ flex \ g++ \ git \ + kmod \ lavacli \ libdrm-dev \ libelf-dev \ diff --git a/.gitlab-ci/container/lava_build.sh b/.gitlab-ci/container/lava_build.sh index 400f092a5b4..2f3aa78e8da 100755 --- a/.gitlab-ci/container/lava_build.sh +++ b/.gitlab-ci/container/lava_build.sh @@ -141,16 +141,23 @@ for i in /usr/bin/*-ld /usr/bin/ld; do done export PATH=`pwd`/ld-links:$PATH +# Disable all modules in defconfig, so we only build the ones we want +sed -i 's/=m/=n/g' ${DEFCONFIG} + ./scripts/kconfig/merge_config.sh ${DEFCONFIG} ../.gitlab-ci/${KERNEL_ARCH}.config make ${KERNEL_IMAGE_NAME} for image in ${KERNEL_IMAGE_NAME}; do cp arch/${KERNEL_ARCH}/boot/${image} /lava-files/. done + if [[ -n ${DEVICE_TREES} ]]; then make dtbs cp ${DEVICE_TREES} /lava-files/. fi +make modules +INSTALL_MOD_PATH=/lava-files/rootfs-${DEBIAN_ARCH}/ make modules_install + if [[ ${DEBIAN_ARCH} = "arm64" ]] && which mkimage > /dev/null; then make Image.lzma mkimage \ diff --git a/.gitlab-ci/container/x86_build-base.sh b/.gitlab-ci/container/x86_build-base.sh index f2be201fc37..9363b76e115 100644 --- a/.gitlab-ci/container/x86_build-base.sh +++ b/.gitlab-ci/container/x86_build-base.sh @@ -34,6 +34,7 @@ apt-get install -y --no-remove \ g++-mingw-w64-x86-64 \ gcc \ git \ + kmod \ libclang-9-dev \ libclang-10-dev \ libclc-dev \ diff --git a/.gitlab-ci/lava-deqp.yml.jinja2 b/.gitlab-ci/lava-deqp.yml.jinja2 index e29d310c20d..7b2b91b4793 100644 --- a/.gitlab-ci/lava-deqp.yml.jinja2 +++ b/.gitlab-ci/lava-deqp.yml.jinja2 @@ -77,8 +77,7 @@ actions: - echo "nameserver 8.8.8.8" > /etc/resolv.conf - for i in 1 2 3; do sntp -sS pool.ntp.org && break || sleep 2; done - # amdgpu failed to find its firmware during boot, rebind - - echo 0000:00:01.0 > /sys/bus/pci/drivers/amdgpu/bind || true + - modprobe amdgpu || true - DEVFREQ_GOVERNOR=`find /sys/devices -name governor | grep gpu || true` - echo performance > $DEVFREQ_GOVERNOR || true diff --git a/.gitlab-ci/lava-gitlab-ci.yml b/.gitlab-ci/lava-gitlab-ci.yml index 486c2753d14..12c96861d64 100644 --- a/.gitlab-ci/lava-gitlab-ci.yml +++ b/.gitlab-ci/lava-gitlab-ci.yml @@ -1,5 +1,5 @@ variables: - DISTRIBUTION_TAG: "2020-11-05-new-kernel" + DISTRIBUTION_TAG: "2020-11-05-new-kernel-2" .kernel+rootfs: stage: container-2 diff --git a/.gitlab-ci/lava-tracie.yml.jinja2 b/.gitlab-ci/lava-tracie.yml.jinja2 index 660ecfd6535..3d546c24d4d 100644 --- a/.gitlab-ci/lava-tracie.yml.jinja2 +++ b/.gitlab-ci/lava-tracie.yml.jinja2 @@ -77,8 +77,7 @@ actions: - echo "nameserver 8.8.8.8" > /etc/resolv.conf - for i in 1 2 3; do sntp -sS pool.ntp.org && break || sleep 2; done - # amdgpu failed to find its firmware during boot, rebind - - echo 0000:00:01.0 > /sys/bus/pci/drivers/amdgpu/bind || true + - modprobe amdgpu || true {% if env_vars %} - export {{ env_vars }} diff --git a/.gitlab-ci/x86_64.config b/.gitlab-ci/x86_64.config index 46d0d970675..63b5e3ada33 100644 --- a/.gitlab-ci/x86_64.config +++ b/.gitlab-ci/x86_64.config @@ -52,8 +52,8 @@ CONFIG_ACPI_VIDEO=y CONFIG_X86_AMD_FREQ_SENSITIVITY=y CONFIG_PINCTRL=y CONFIG_PINCTRL_AMD=y -CONFIG_DRM_AMDGPU=y -CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=m CONFIG_DRM_AMD_ACP=n CONFIG_ACPI_WMI=y CONFIG_MXM_WMI=y