Add jobs to run dt_binding_check and dtbs_check. If warnings are seen,
exit with a non-zero error code while configuring them as warning in
the GitLab CI pipeline.
Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
---
drivers/gpu/drm/ci/check-devicetrees.yml | 38 ++++++++++++++++++++++
drivers/gpu/drm/ci/dt-binding-check.sh | 18 +++++++++++
drivers/gpu/drm/ci/dtbs-check.sh | 41 ++++++++++++++++++++++++
drivers/gpu/drm/ci/gitlab-ci.yml | 1 +
4 files changed, 98 insertions(+)
create mode 100644 drivers/gpu/drm/ci/check-devicetrees.yml
create mode 100755 drivers/gpu/drm/ci/dt-binding-check.sh
create mode 100755 drivers/gpu/drm/ci/dtbs-check.sh
diff --git a/drivers/gpu/drm/ci/check-devicetrees.yml b/drivers/gpu/drm/ci/check-devicetrees.yml
new file mode 100644
index 000000000000..5f0c477f7578
--- /dev/null
+++ b/drivers/gpu/drm/ci/check-devicetrees.yml
@@ -0,0 +1,38 @@
+.dt-check-base:
+ timeout: "1h"
+ variables:
+ FF_USE_NEW_BASH_EVAL_STRATEGY: 'true'
+ script:
+ - drivers/gpu/drm/ci/${SCRIPT_NAME}
+ artifacts:
+ when: on_failure
+ paths:
+ - ${ARTIFACT_FILE}
+ allow_failure:
+ exit_codes:
+ - 102
+
+dtbs-check:arm32:
+ extends:
+ - .build:arm32
+ - .dt-check-base
+ variables:
+ SCRIPT_NAME: "dtbs-check.sh"
+ ARTIFACT_FILE: "dtbs-check.log"
+
+dtbs-check:arm64:
+ extends:
+ - .build:arm64
+ - .dt-check-base
+ variables:
+ SCRIPT_NAME: "dtbs-check.sh"
+ ARTIFACT_FILE: "dtbs-check.log"
+
+dt-binding-check:
+ extends:
+ - .build
+ - .use-debian/x86_64_build
+ - .dt-check-base
+ variables:
+ SCRIPT_NAME: "dt-binding-check.sh"
+ ARTIFACT_FILE: "dt-binding-check.log"
diff --git a/drivers/gpu/drm/ci/dt-binding-check.sh b/drivers/gpu/drm/ci/dt-binding-check.sh
new file mode 100755
index 000000000000..2a72bb89c013
--- /dev/null
+++ b/drivers/gpu/drm/ci/dt-binding-check.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -euxo pipefail
+
+apt-get update -qq
+apt install -y --no-install-recommends yamllint
+pip3 install dtschema
+
+if ! make -j${FDO_CI_CONCURRENT:-4} dt_binding_check >/dev/null 2>dt-binding-check.log; then
+ echo "ERROR: 'make dt_binding_check' failed. Please check dt-binding-check.log for details."
+ exit 1
+fi
+
+if [[ -s dt-binding-check.log ]]; then
+ echo "WARNING: dt_binding_check reported warnings. Please check dt-binding-check.log for details."
+ exit 102
+fi
diff --git a/drivers/gpu/drm/ci/dtbs-check.sh b/drivers/gpu/drm/ci/dtbs-check.sh
new file mode 100755
index 000000000000..a0129d5a53b0
--- /dev/null
+++ b/drivers/gpu/drm/ci/dtbs-check.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+# SPDX-License-Identifier: MIT
+
+set -euxo pipefail
+
+. drivers/gpu/drm/ci/override-ld-with-bfd.sh
+
+apt-get update -qq
+pip3 install dtschema
+
+case "${KERNEL_ARCH}" in
+ "arm")
+ GCC_ARCH="arm-linux-gnueabihf"
+ ;;
+ "arm64")
+ GCC_ARCH="aarch64-linux-gnu"
+ ;;
+ "x86_64")
+ GCC_ARCH="x86_64-linux-gnu"
+ ;;
+ *)
+ echo "Unsupported architecture: ${KERNEL_ARCH}"
+ exit 1
+ ;;
+esac
+
+export ARCH="${KERNEL_ARCH}"
+export CROSS_COMPILE="${GCC_ARCH}-"
+
+make `basename ${DEFCONFIG}`
+make -j${FDO_CI_CONCURRENT:-4} dtbs
+
+if ! make -j${FDO_CI_CONCURRENT:-4} dtbs_check >/dev/null 2>dtbs-check.log; then
+ echo "ERROR: 'make dtbs_check' failed. Please check dtbs-check.log for details."
+ exit 1
+fi
+
+if [[ -s dtbs-check.log ]]; then
+ echo "WARNING: dtbs_check reported warnings. Please check dtbs-check.log for details."
+ exit 102
+fi
diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
index 65adcd97e06b..9e61b49e9960 100644
--- a/drivers/gpu/drm/ci/gitlab-ci.yml
+++ b/drivers/gpu/drm/ci/gitlab-ci.yml
@@ -108,6 +108,7 @@ include:
- drivers/gpu/drm/ci/static-checks.yml
- drivers/gpu/drm/ci/build.yml
- drivers/gpu/drm/ci/test.yml
+ - drivers/gpu/drm/ci/check-devicetrees.yml
- 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
--
2.47.2
On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote:
> Add jobs to run dt_binding_check and dtbs_check. If warnings are seen,
> exit with a non-zero error code while configuring them as warning in
> the GitLab CI pipeline.
Can it really succeed or is it going to be an always-failing job? The
dt_binding_check generally succeed, dtbs_check generates tons of
warnings. We are trying to make progress there, but it's still very far
from being achevable.
>
> Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
> ---
> drivers/gpu/drm/ci/check-devicetrees.yml | 38 ++++++++++++++++++++++
> drivers/gpu/drm/ci/dt-binding-check.sh | 18 +++++++++++
> drivers/gpu/drm/ci/dtbs-check.sh | 41 ++++++++++++++++++++++++
> drivers/gpu/drm/ci/gitlab-ci.yml | 1 +
> 4 files changed, 98 insertions(+)
> create mode 100644 drivers/gpu/drm/ci/check-devicetrees.yml
> create mode 100755 drivers/gpu/drm/ci/dt-binding-check.sh
> create mode 100755 drivers/gpu/drm/ci/dtbs-check.sh
>
> diff --git a/drivers/gpu/drm/ci/check-devicetrees.yml b/drivers/gpu/drm/ci/check-devicetrees.yml
> new file mode 100644
> index 000000000000..5f0c477f7578
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/check-devicetrees.yml
> @@ -0,0 +1,38 @@
> +.dt-check-base:
> + timeout: "1h"
> + variables:
> + FF_USE_NEW_BASH_EVAL_STRATEGY: 'true'
> + script:
> + - drivers/gpu/drm/ci/${SCRIPT_NAME}
> + artifacts:
> + when: on_failure
> + paths:
> + - ${ARTIFACT_FILE}
> + allow_failure:
> + exit_codes:
> + - 102
> +
> +dtbs-check:arm32:
> + extends:
> + - .build:arm32
> + - .dt-check-base
> + variables:
> + SCRIPT_NAME: "dtbs-check.sh"
> + ARTIFACT_FILE: "dtbs-check.log"
> +
> +dtbs-check:arm64:
> + extends:
> + - .build:arm64
> + - .dt-check-base
> + variables:
> + SCRIPT_NAME: "dtbs-check.sh"
> + ARTIFACT_FILE: "dtbs-check.log"
> +
> +dt-binding-check:
> + extends:
> + - .build
> + - .use-debian/x86_64_build
> + - .dt-check-base
> + variables:
> + SCRIPT_NAME: "dt-binding-check.sh"
> + ARTIFACT_FILE: "dt-binding-check.log"
> diff --git a/drivers/gpu/drm/ci/dt-binding-check.sh b/drivers/gpu/drm/ci/dt-binding-check.sh
> new file mode 100755
> index 000000000000..2a72bb89c013
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/dt-binding-check.sh
> @@ -0,0 +1,18 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: MIT
> +
> +set -euxo pipefail
> +
> +apt-get update -qq
> +apt install -y --no-install-recommends yamllint
> +pip3 install dtschema
> +
> +if ! make -j${FDO_CI_CONCURRENT:-4} dt_binding_check >/dev/null 2>dt-binding-check.log; then
I'd rather see errors in job output too.
> + echo "ERROR: 'make dt_binding_check' failed. Please check dt-binding-check.log for details."
> + exit 1
> +fi
> +
> +if [[ -s dt-binding-check.log ]]; then
> + echo "WARNING: dt_binding_check reported warnings. Please check dt-binding-check.log for details."
> + exit 102
> +fi
> diff --git a/drivers/gpu/drm/ci/dtbs-check.sh b/drivers/gpu/drm/ci/dtbs-check.sh
> new file mode 100755
> index 000000000000..a0129d5a53b0
> --- /dev/null
> +++ b/drivers/gpu/drm/ci/dtbs-check.sh
> @@ -0,0 +1,41 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: MIT
> +
> +set -euxo pipefail
> +
> +. drivers/gpu/drm/ci/override-ld-with-bfd.sh
> +
> +apt-get update -qq
> +pip3 install dtschema
> +
> +case "${KERNEL_ARCH}" in
> + "arm")
> + GCC_ARCH="arm-linux-gnueabihf"
> + ;;
> + "arm64")
> + GCC_ARCH="aarch64-linux-gnu"
> + ;;
> + "x86_64")
> + GCC_ARCH="x86_64-linux-gnu"
> + ;;
> + *)
> + echo "Unsupported architecture: ${KERNEL_ARCH}"
> + exit 1
> + ;;
> +esac
> +
> +export ARCH="${KERNEL_ARCH}"
> +export CROSS_COMPILE="${GCC_ARCH}-"
> +
> +make `basename ${DEFCONFIG}`
> +make -j${FDO_CI_CONCURRENT:-4} dtbs
You don't need to build dtbs separately, dtbs_check includes dtbs.
> +
> +if ! make -j${FDO_CI_CONCURRENT:-4} dtbs_check >/dev/null 2>dtbs-check.log; then
I'd rather see errors in job output too.
> + echo "ERROR: 'make dtbs_check' failed. Please check dtbs-check.log for details."
> + exit 1
> +fi
> +
> +if [[ -s dtbs-check.log ]]; then
> + echo "WARNING: dtbs_check reported warnings. Please check dtbs-check.log for details."
> + exit 102
> +fi
> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
> index 65adcd97e06b..9e61b49e9960 100644
> --- a/drivers/gpu/drm/ci/gitlab-ci.yml
> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
> @@ -108,6 +108,7 @@ include:
> - drivers/gpu/drm/ci/static-checks.yml
> - drivers/gpu/drm/ci/build.yml
> - drivers/gpu/drm/ci/test.yml
> + - drivers/gpu/drm/ci/check-devicetrees.yml
> - 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
>
>
> --
> 2.47.2
>
--
With best wishes
Dmitry
Hi Dmitry,
On 30/03/25 22:36, Dmitry Baryshkov wrote:
> On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote:
>> Add jobs to run dt_binding_check and dtbs_check. If warnings are seen,
>> exit with a non-zero error code while configuring them as warning in
>> the GitLab CI pipeline.
>
> Can it really succeed or is it going to be an always-failing job? The
> dt_binding_check generally succeed, dtbs_check generates tons of
> warnings. We are trying to make progress there, but it's still very far
> from being achevable.
Even though it fails, it will be shown as a warning in the pipeline.
https://gitlab.freedesktop.org/vigneshraman/linux/-/pipelines/1390797
>
>>
>> Signed-off-by: Vignesh Raman <vignesh.raman@collabora.com>
>> ---
>> drivers/gpu/drm/ci/check-devicetrees.yml | 38 ++++++++++++++++++++++
>> drivers/gpu/drm/ci/dt-binding-check.sh | 18 +++++++++++
>> drivers/gpu/drm/ci/dtbs-check.sh | 41 ++++++++++++++++++++++++
>> drivers/gpu/drm/ci/gitlab-ci.yml | 1 +
>> 4 files changed, 98 insertions(+)
>> create mode 100644 drivers/gpu/drm/ci/check-devicetrees.yml
>> create mode 100755 drivers/gpu/drm/ci/dt-binding-check.sh
>> create mode 100755 drivers/gpu/drm/ci/dtbs-check.sh
>>
>> diff --git a/drivers/gpu/drm/ci/check-devicetrees.yml b/drivers/gpu/drm/ci/check-devicetrees.yml
>> new file mode 100644
>> index 000000000000..5f0c477f7578
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/check-devicetrees.yml
>> @@ -0,0 +1,38 @@
>> +.dt-check-base:
>> + timeout: "1h"
>> + variables:
>> + FF_USE_NEW_BASH_EVAL_STRATEGY: 'true'
>> + script:
>> + - drivers/gpu/drm/ci/${SCRIPT_NAME}
>> + artifacts:
>> + when: on_failure
>> + paths:
>> + - ${ARTIFACT_FILE}
>> + allow_failure:
>> + exit_codes:
>> + - 102
>> +
>> +dtbs-check:arm32:
>> + extends:
>> + - .build:arm32
>> + - .dt-check-base
>> + variables:
>> + SCRIPT_NAME: "dtbs-check.sh"
>> + ARTIFACT_FILE: "dtbs-check.log"
>> +
>> +dtbs-check:arm64:
>> + extends:
>> + - .build:arm64
>> + - .dt-check-base
>> + variables:
>> + SCRIPT_NAME: "dtbs-check.sh"
>> + ARTIFACT_FILE: "dtbs-check.log"
>> +
>> +dt-binding-check:
>> + extends:
>> + - .build
>> + - .use-debian/x86_64_build
>> + - .dt-check-base
>> + variables:
>> + SCRIPT_NAME: "dt-binding-check.sh"
>> + ARTIFACT_FILE: "dt-binding-check.log"
>> diff --git a/drivers/gpu/drm/ci/dt-binding-check.sh b/drivers/gpu/drm/ci/dt-binding-check.sh
>> new file mode 100755
>> index 000000000000..2a72bb89c013
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/dt-binding-check.sh
>> @@ -0,0 +1,18 @@
>> +#!/bin/bash
>> +# SPDX-License-Identifier: MIT
>> +
>> +set -euxo pipefail
>> +
>> +apt-get update -qq
>> +apt install -y --no-install-recommends yamllint
>> +pip3 install dtschema
>> +
>> +if ! make -j${FDO_CI_CONCURRENT:-4} dt_binding_check >/dev/null 2>dt-binding-check.log; then
>
> I'd rather see errors in job output too.
Will update it.
>
>> + echo "ERROR: 'make dt_binding_check' failed. Please check dt-binding-check.log for details."
>> + exit 1
>> +fi
>> +
>> +if [[ -s dt-binding-check.log ]]; then
>> + echo "WARNING: dt_binding_check reported warnings. Please check dt-binding-check.log for details."
>> + exit 102
>> +fi
>> diff --git a/drivers/gpu/drm/ci/dtbs-check.sh b/drivers/gpu/drm/ci/dtbs-check.sh
>> new file mode 100755
>> index 000000000000..a0129d5a53b0
>> --- /dev/null
>> +++ b/drivers/gpu/drm/ci/dtbs-check.sh
>> @@ -0,0 +1,41 @@
>> +#!/bin/bash
>> +# SPDX-License-Identifier: MIT
>> +
>> +set -euxo pipefail
>> +
>> +. drivers/gpu/drm/ci/override-ld-with-bfd.sh
>> +
>> +apt-get update -qq
>> +pip3 install dtschema
>> +
>> +case "${KERNEL_ARCH}" in
>> + "arm")
>> + GCC_ARCH="arm-linux-gnueabihf"
>> + ;;
>> + "arm64")
>> + GCC_ARCH="aarch64-linux-gnu"
>> + ;;
>> + "x86_64")
>> + GCC_ARCH="x86_64-linux-gnu"
>> + ;;
>> + *)
>> + echo "Unsupported architecture: ${KERNEL_ARCH}"
>> + exit 1
>> + ;;
>> +esac
>> +
>> +export ARCH="${KERNEL_ARCH}"
>> +export CROSS_COMPILE="${GCC_ARCH}-"
>> +
>> +make `basename ${DEFCONFIG}`
>> +make -j${FDO_CI_CONCURRENT:-4} dtbs
>
> You don't need to build dtbs separately, dtbs_check includes dtbs.
Ack. Will remove this.
>
>> +
>> +if ! make -j${FDO_CI_CONCURRENT:-4} dtbs_check >/dev/null 2>dtbs-check.log; then
>
> I'd rather see errors in job output too.
Will update it.
Regards,
Vignesh
>
>> + echo "ERROR: 'make dtbs_check' failed. Please check dtbs-check.log for details."
>> + exit 1
>> +fi
>> +
>> +if [[ -s dtbs-check.log ]]; then
>> + echo "WARNING: dtbs_check reported warnings. Please check dtbs-check.log for details."
>> + exit 102
>> +fi
>> diff --git a/drivers/gpu/drm/ci/gitlab-ci.yml b/drivers/gpu/drm/ci/gitlab-ci.yml
>> index 65adcd97e06b..9e61b49e9960 100644
>> --- a/drivers/gpu/drm/ci/gitlab-ci.yml
>> +++ b/drivers/gpu/drm/ci/gitlab-ci.yml
>> @@ -108,6 +108,7 @@ include:
>> - drivers/gpu/drm/ci/static-checks.yml
>> - drivers/gpu/drm/ci/build.yml
>> - drivers/gpu/drm/ci/test.yml
>> + - drivers/gpu/drm/ci/check-devicetrees.yml
>> - 'https://gitlab.freedesktop.org/gfx-ci/lab-status/-/raw/main/lab-status.yml'
>>
>>
>> --
>> 2.47.2
>>
>
On Tue, Apr 01, 2025 at 07:26:44AM +0530, Vignesh Raman wrote: > Hi Dmitry, > > On 30/03/25 22:36, Dmitry Baryshkov wrote: > > On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote: > > > Add jobs to run dt_binding_check and dtbs_check. If warnings are seen, > > > exit with a non-zero error code while configuring them as warning in > > > the GitLab CI pipeline. > > > > Can it really succeed or is it going to be an always-failing job? The > > dt_binding_check generally succeed, dtbs_check generates tons of > > warnings. We are trying to make progress there, but it's still very far > > from being achevable. > > Even though it fails, it will be shown as a warning in the pipeline. > https://gitlab.freedesktop.org/vigneshraman/linux/-/pipelines/1390797 I think what Dmitry was pointing out is that a warning that is always warning is going to be completely ignored, and thus doesn't add any value. Maxime
On Sun, Mar 30, 2025 at 08:06:45PM +0300, Dmitry Baryshkov wrote: > On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote: > > Add jobs to run dt_binding_check and dtbs_check. If warnings are seen, > > exit with a non-zero error code while configuring them as warning in > > the GitLab CI pipeline. > > Can it really succeed or is it going to be an always-failing job? The > dt_binding_check generally succeed, dtbs_check generates tons of > warnings. We are trying to make progress there, but it's still very far > from being achevable. It depends on the platforms I guess. Some are 100% covered and any warning should be treated as a failure, and some have not started the effort. I guess we could solve it with some kind of expectation list, but I do wonder if it's something *we* should be focusing on :) Maxime
On Mon, 31 Mar 2025 at 10:53, Maxime Ripard <mripard@kernel.org> wrote: > > On Sun, Mar 30, 2025 at 08:06:45PM +0300, Dmitry Baryshkov wrote: > > On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote: > > > Add jobs to run dt_binding_check and dtbs_check. If warnings are seen, > > > exit with a non-zero error code while configuring them as warning in > > > the GitLab CI pipeline. > > > > Can it really succeed or is it going to be an always-failing job? The > > dt_binding_check generally succeed, dtbs_check generates tons of > > warnings. We are trying to make progress there, but it's still very far > > from being achevable. > > It depends on the platforms I guess. Some are 100% covered and any > warning should be treated as a failure, and some have not started the > effort. > > I guess we could solve it with some kind of expectation list, but I do > wonder if it's something *we* should be focusing on :) I think that we might want to limit this to `make dt_bindings_check DT_SCHEMA_FILES=display`, checking all GPU / display schema files. -- With best wishes Dmitry
Hi Dmitry, On 31/03/25 13:25, Dmitry Baryshkov wrote: > On Mon, 31 Mar 2025 at 10:53, Maxime Ripard <mripard@kernel.org> wrote: >> >> On Sun, Mar 30, 2025 at 08:06:45PM +0300, Dmitry Baryshkov wrote: >>> On Thu, Mar 27, 2025 at 09:31:11PM +0530, Vignesh Raman wrote: >>>> Add jobs to run dt_binding_check and dtbs_check. If warnings are seen, >>>> exit with a non-zero error code while configuring them as warning in >>>> the GitLab CI pipeline. >>> >>> Can it really succeed or is it going to be an always-failing job? The >>> dt_binding_check generally succeed, dtbs_check generates tons of >>> warnings. We are trying to make progress there, but it's still very far >>> from being achevable. >> >> It depends on the platforms I guess. Some are 100% covered and any >> warning should be treated as a failure, and some have not started the >> effort. >> >> I guess we could solve it with some kind of expectation list, but I do >> wonder if it's something *we* should be focusing on :) > > I think that we might want to limit this to `make dt_bindings_check > DT_SCHEMA_FILES=display`, checking all GPU / display schema files. > Yes, will test the changes and send v2. Regards, Vignesh
© 2016 - 2025 Red Hat, Inc.