ci/nouveau: Add a manual run for the Jetson Nano (GM20B).

The test suite is full of flakes around transform feedback, atomics, and
tess.  But, I hope it can be useful for regression testing core Mesa
reworks.

This required updating the kernel to 5.16.12 to get a more stable boot
process.  That kernel rebuild caused an update of the container with
piglit which that was missed in a previous MR, so we got new xfails in x86
swrast.

Acked-by: Ilia Mirkin <imirkin@alum.mit.edu> (nouveau)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15201>
This commit is contained in:
Emma Anholt 2021-12-02 16:14:30 -08:00 committed by Marge Bot
parent 1b374f8c91
commit 5497d60639
10 changed files with 3395 additions and 1 deletions

View File

@ -58,6 +58,7 @@ include:
- local: 'src/gallium/drivers/iris/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/lima/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/nouveau/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/radeonsi/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/softpipe/ci/gitlab-ci.yml'
- local: 'src/gallium/drivers/virgl/ci/gitlab-ci.yml'
@ -75,6 +76,7 @@ stages:
- build-misc
- amd
- intel
- nouveau
- arm
- broadcom
- freedreno

View File

@ -0,0 +1,21 @@
#!/bin/bash
if [ -z "$BM_POE_INTERFACE" ]; then
echo "Must supply the PoE Interface to power up"
exit 1
fi
if [ -z "$BM_POE_ADDRESS" ]; then
echo "Must supply the PoE Switch host"
exit 1
fi
set -ex
SNMP_KEY="1.3.6.1.4.1.9.9.402.1.2.1.1.1.$BM_POE_INTERFACE"
SNMP_ON="i 1"
SNMP_OFF="i 4"
snmpset -v2c -r 3 -t 10 -cmesaci $BM_POE_ADDRESS $SNMP_KEY $SNMP_OFF
sleep 3s
snmpset -v2c -r 3 -t 10 -cmesaci $BM_POE_ADDRESS $SNMP_KEY $SNMP_ON

View File

@ -66,6 +66,10 @@ class PoERun:
self.print_error("Memory overflow in the binner; GPU hang")
return 1
if re.search("nouveau 57000000.gpu: bus: MMIO read of 00000000 FAULT at 137000", line):
self.print_error("nouveau jetson boot bug, retrying.")
return 2
result = re.search("hwci: mesa: (\S*)", line)
if result:
if result.group(1) == "pass":

View File

@ -179,7 +179,7 @@ else
--flakes $INSTALL/$GPU_VERSION-flakes.txt \
--testlog-to-xml /deqp/executor/testlog-to-xml \
--fraction-start $CI_NODE_INDEX \
--fraction $CI_NODE_TOTAL \
--fraction `expr $CI_NODE_TOTAL \* ${DEQP_FRACTION:-1}` \
--jobs ${FDO_CI_CONCURRENT:-4} \
$DEQP_RUNNER_OPTIONS
fi

View File

@ -227,6 +227,24 @@
when: manual
- when: never
.nouveau-rules:
stage: nouveau
rules:
- *ignore_scheduled_pipelines
- changes:
*mesa_core_file_list
when: on_success
- changes:
*gallium_core_file_list
when: on_success
- changes:
- src/nouveau/**/*
- src/gallium/drivers/nouveau/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/nouveau/**/*
when: on_success
- when: never
.panfrost-midgard-rules:
stage: arm
rules:

View File

@ -0,0 +1,53 @@
[[deqp]]
deqp = "/deqp/modules/gles2/deqp-gles2"
caselists = ["/deqp/mustpass/gles2-master.txt"]
skips = ["install/all-skips.txt", "install/nouveau-gm20b-skips.txt"]
deqp_args = [
"--deqp-surface-width=256",
"--deqp-surface-height=256",
"--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden"
]
renderer_check = "NV12B"
version_check = "GL ES 3.2"
[[deqp]]
deqp = "/deqp/modules/gles3/deqp-gles3"
caselists = ["/deqp/mustpass/gles3-master.txt"]
skips = ["install/all-skips.txt", "install/nouveau-gm20b-skips.txt"]
deqp_args = [
"--deqp-surface-width=256",
"--deqp-surface-height=256",
"--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden"
]
[[deqp]]
deqp = "/deqp/modules/gles31/deqp-gles31"
caselists = ["/deqp/mustpass/gles31-master.txt"]
skips = ["install/all-skips.txt", "install/nouveau-gm20b-skips.txt"]
deqp_args = [
"--deqp-surface-width=256",
"--deqp-surface-height=256",
"--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden"
]
[[deqp]]
deqp = "/deqp/external/openglcts/modules/glcts"
caselists = [
"/deqp/mustpass/gles2-khr-master.txt",
"/deqp/mustpass/gles3-khr-master.txt",
"/deqp/mustpass/gles31-khr-master.txt"
]
skips = ["install/all-skips.txt", "install/nouveau-gm20b-skips.txt"]
deqp_args = [
"--deqp-surface-width=256",
"--deqp-surface-height=256",
"--deqp-surface-type=pbuffer",
"--deqp-gl-config-name=rgba8888d24s8ms0",
"--deqp-visibility=hidden"
]

View File

@ -0,0 +1,42 @@
.gm20b-test:
extends:
- .baremetal-test-arm64
- .use-debian/arm_test
- .nouveau-rules
variables:
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
BM_BOOTFS: /baremetal-files/jetson-nano/
BM_POE_TIMEOUT: 300
BM_CMDLINE: "console=ttyS0,115200n8 rw nfsrootdebug init=/init"
FLAKES_CHANNEL: "#nouveau-ci"
GPU_VERSION: nouveau-gm20b
# We package these as modules so that we can load them after the firmware is
# available on NFS.
HWCI_KERNEL_MODULES: tegra-drm,nouveau
script:
- ./install/bare-metal/poe-powered.sh
needs:
- debian/arm_test
- job: debian-arm64
artifacts: false
tags:
- google-nouveau-jetson-nano
# Single Jetson Nano board at anholt's house.
gm20b-gles-full:
extends:
- .gm20b-test
- .test-manual-mr
timeout: 2h
variables:
DEQP_SUITE: nouveau-gm20b
# 4 CPUs, but spawn a couple extra threads to make sure they stay busy while
# some are waiting for the GPU.
FDO_CI_CONCURRENT: 6
gm20b-gles:
extends:
- gm20b-gles-full
timeout: 60m
variables:
DEQP_FRACTION: 10

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
dEQP-GLES3.functional.occlusion_query.*conservative.*
dEQP-GLES3.functional.transform_feedback.*
dEQP-GLES31.functional.atomic_counter.*
dEQP-GLES31.functional.compute.shared_var.*
dEQP-GLES31.functional.image_load_store.buffer.*
# I expect that these are due to instability in SSBO stores.
dEQP-GLES31.functional.shaders.builtin_functions.*compute
dEQP-GLES31.functional.shaders.builtin_functions.*tess_control
dEQP-GLES31.functional.shaders.builtin_functions.*tess_eval
dEQP-GLES31.functional.shaders.opaque_type_indexing.*.compute.*
dEQP-GLES31.functional.shaders.opaque_type_indexing.*.tessellation_control.*
dEQP-GLES31.functional.shaders.opaque_type_indexing.*.tessellation_evaluation.*
dEQP-GLES31.functional.tessellation.invariance.*
dEQP-GLES31.functional.tessellation.tesscoord.*
dEQP-GLES31.functional.tessellation_geometry_interaction.feedback.*
dEQP-GLES31.functional.tessellation.user_defined_io.per_vertex.vertex_io_array_size_shader_builtin.triangles_explicit_tcs_out_size
dEQP-GLES31.functional.ssbo.*
dEQP-GLES31.functional.synchronization.*
KHR-GLES31.core.compute_shader.*
KHR-GLES31.core.shader_atomic_counters.*
KHR-GLES31.core.shader_bitfield_operation.*
KHR-GLES31.core.shader_image.*
KHR-GLES31.core.shader_storage_buffer_object.*
KHR-GLES31.core.tessellation_shader.*

View File

@ -0,0 +1,2 @@
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawelements.*1000x1000_drawcount_5000
dEQP-GLES31.functional.draw_indirect.compute_interop.large.drawarrays.*_500x500_drawcount_2500