diff --git a/tools/ci/gitlab-ci/arm_native_compile.yml b/tools/ci/gitlab-ci/arm_native_compile.yml
index 649eeebad234e8cdbc73405f871d16d338e5ff88..e3964a0d50f72f4e16346389b41b39bb096e38c6 100644
--- a/tools/ci/gitlab-ci/arm_native_compile.yml
+++ b/tools/ci/gitlab-ci/arm_native_compile.yml
@@ -2,7 +2,7 @@
 #
 # Copyright (C) 2025 Collabora, Vignesh Raman <vignesh.raman@collabora.com>
 
-debian/arm64_build:
+.debian/arm64_build:
   extends:
     - .debian-arm64
     - .fdo.container-build@debian
diff --git a/tools/ci/gitlab-ci/build.yml b/tools/ci/gitlab-ci/build.yml
index ce47b8701a6d39b6ab0852f5913601027c285779..82a11fe4913c1510792cb17583599ef5da060b11 100644
--- a/tools/ci/gitlab-ci/build.yml
+++ b/tools/ci/gitlab-ci/build.yml
@@ -12,25 +12,25 @@
   script:
     - ./tools/ci/gitlab-ci/ci-scripts/build-kernel.sh
 
-build:x86_64:
+.build:x86_64:
   extends:
   - .use-debian/x86_64_build
   - .build-common
   - .x86_64-config
 
-build:arm64:
+.build:arm64:
   extends:
   - .use-debian/arm64_build
   - .build-common
   - .arm64-config
 
-build:arm32:
+.build:arm32:
   extends:
   - .use-debian/arm64_build
   - .build-common
   - .arm32-config
 
-build-docs:
+.build-docs:
   extends:
     - .build-doc
   parallel:
diff --git a/tools/ci/gitlab-ci/container.yml b/tools/ci/gitlab-ci/container.yml
index 2108a39d5a9c950c5c251ace66c81c4214002fcf..393e963c4e4f58c09dabcd8c9f2d53cae250814a 100644
--- a/tools/ci/gitlab-ci/container.yml
+++ b/tools/ci/gitlab-ci/container.yml
@@ -100,7 +100,7 @@ variables:
   variables:
     KCI_BUILD_ARCH: "arm64"
 
-debian/x86_64_build:
+.debian/x86_64_build:
   extends:
     - .debian-x86_64
     - .fdo.container-build@debian
diff --git a/tools/ci/gitlab-ci/gitlab-ci.yml b/tools/ci/gitlab-ci/gitlab-ci.yml
index d2679d9929de14dfeb81064ef1f3334a46581577..acafd3c631d821462e244bc8a23eaf7e4552aada 100644
--- a/tools/ci/gitlab-ci/gitlab-ci.yml
+++ b/tools/ci/gitlab-ci/gitlab-ci.yml
@@ -33,6 +33,7 @@ workflow:
     - if: $FORCE_CI == 'true'
 
 variables:
+  LAVA_URL: "https://lava.collabora.dev"
   SMATCH_DB_DIR: /smatch/smatch_data
   # exit code of bash script on `script` will be the exit code of the job
   FF_USE_NEW_BASH_EVAL_STRATEGY: "true"
@@ -50,14 +51,15 @@ include:
   - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/16bc29078de5e0a067ff84a1a199a3760d3b3811/templates/debian.yml'
 
   - tools/ci/gitlab-ci/container.yml
-  - tools/ci/gitlab-ci/cache.yml
+#  - tools/ci/gitlab-ci/cache.yml
   - tools/ci/gitlab-ci/build.yml
   - tools/ci/gitlab-ci/test.yml
-  - tools/ci/gitlab-ci/static-checks.yml
-  - tools/ci/gitlab-ci/scenarios.yml
+#  - tools/ci/gitlab-ci/static-checks.yml
+#  - tools/ci/gitlab-ci/scenarios.yml
+   - tools/ci/gitlab-ci/testjob.yml
 
-before_script:
-  - source tools/ci/gitlab-ci/ci-scripts/parse_commit_message.sh
+#before_script:
+#  - source tools/ci/gitlab-ci/ci-scripts/parse_commit_message.sh
 
 .use-debian/x86_64_build:
   allow_failure:
diff --git a/tools/ci/gitlab-ci/test.yml b/tools/ci/gitlab-ci/test.yml
index e64ea36c13214fc067e277d1d9ed9db7a6028ca6..a3c5be32876ae2e5fb2f7cb266a12841a0119c82 100644
--- a/tools/ci/gitlab-ci/test.yml
+++ b/tools/ci/gitlab-ci/test.yml
@@ -2,15 +2,28 @@
 #
 # Copyright (C) 2025 Collabora, Vignesh Raman <vignesh.raman@collabora.com>
 
-test-boot:
-  extends: build:x86_64
+#.test-boot:
+#  extends: build:x86_64
+#  stage: test
+#  timeout: "10m"
+#  tags:
+#    - kvm
+#  script:
+#    - mkdir -p /install
+#    - cp $CI_PROJECT_DIR/artifacts/kernel-install-${KCI_KERNEL_ARCH}/bzImage /install/
+#    - ./tools/ci/gitlab-ci/ci-scripts/run-virtme.sh /install/bzImage ./tools/ci/gitlab-ci/ci-scripts/test-boot.sh
+#  needs:
+#    - build:x86_64
+
+lava-test:
   stage: test
-  timeout: "10m"
   tags:
-    - kvm
+    - lava-runner
   script:
-    - mkdir -p /install
-    - cp $CI_PROJECT_DIR/artifacts/kernel-install-${KCI_KERNEL_ARCH}/bzImage /install/
-    - ./tools/ci/gitlab-ci/ci-scripts/run-virtme.sh /install/bzImage ./tools/ci/gitlab-ci/ci-scripts/test-boot.sh
-  needs:
-    - build:x86_64
+    - submit ./tools/ci/gitlab-ci/testjob.yaml
+  artifacts:
+    when: always
+    paths:
+      - "*"
+    reports:
+      junit: "*_junit.xml"
diff --git a/tools/ci/gitlab-ci/testjob.yml b/tools/ci/gitlab-ci/testjob.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b403657627e96591eb916429bc128984e7f2fe66
--- /dev/null
+++ b/tools/ci/gitlab-ci/testjob.yml
@@ -0,0 +1,134 @@
+job_name: 'linux: meson:g12b 1/3: https://gitlab.freedesktop.org/vigneshraman/linux/-/pipelines/1391440 on wip/vignesh/uprev-mesa-s3cp 1/3'
+device_type: meson-g12b-a311d-khadas-vim3
+visibility:
+  group:
+  - Collabora+fdo
+priority: 75
+context:
+  extra_nfsroot_args: ' init=/init rootwait usbcore.quirks=0bda:8153:k'
+timeouts:
+  job:
+    minutes: 85
+  actions:
+    depthcharge-retry:
+      minutes: 6
+    depthcharge-action:
+      minutes: 5
+    uboot-action:
+      seconds: 200
+tags:
+- subset-1-gfx
+actions:
+- deploy:
+    timeout:
+      minutes: 10
+    to: tftp
+    os: oe
+    kernel:
+      url: https://s3.freedesktop.org/artifacts/vigneshraman/linux/1391440/arm64/Image
+      type: image
+    nfsrootfs:
+      url: https://s3.freedesktop.org/mesa-rootfs/vigneshraman/linux/20250328-mesa-uprev--v6.13-rc4-mesa-5e77--20250328-mesa-uprev--bca9635d--d5aa3941aa03c2f716595116354fb81eb8012acb/arm64/lava-rootfs.tar.zst
+      compression: zstd
+      format: tar
+      overlays:
+        kernel-build:
+          compression: zstd
+          format: tar
+          path: /builds/vigneshraman/linux
+          url: https://s3.freedesktop.org/artifacts/vigneshraman/linux/1391440/arm64/kernel-files.tar.zst
+        job-overlay:
+          compression: gz
+          format: tar
+          path: /
+          url: https://s3.freedesktop.org/artifacts/vigneshraman/linux/1391440/73511165/job-rootfs-overlay.tar.gz
+    dtb:
+      url: https://s3.freedesktop.org/artifacts/vigneshraman/linux/1391440/arm64/meson-g12b-a311d-khadas-vim3.dtb
+    namespace: dut
+    failure_retry: 2
+- boot:
+    failure_retry: 2
+    method: u-boot
+    prompts:
+    - 'lava-shell:'
+    commands: nfs
+    namespace: dut
+    auto_login:
+      login_commands:
+      - dropbear -R -B
+      - touch /dut_ready
+      login_prompt: 'ogin:'
+      username: ''
+- test:
+    namespace: dut
+    definitions:
+    - from: inline
+      name: setup-ssh-server
+      path: inline-setup-ssh-server
+      repository:
+        metadata:
+          format: Lava-Test Test Definition 1.0
+          name: dut-env-export
+        run:
+          steps:
+          - |-
+            set -ex
+            cd /
+            findmnt --mountpoint /proc || mount -t proc none /proc
+            findmnt --mountpoint /sys || mount -t sysfs none /sys
+            mount -t debugfs none /sys/kernel/debug
+            findmnt --mountpoint /dev || mount -t devtmpfs none /dev
+            mkdir -p /dev/pts
+            mount -t devpts devpts /dev/pts
+            mkdir /dev/shm
+            mount -t tmpfs -o noexec,nodev,nosuid tmpfs /dev/shm
+            mount -t tmpfs tmpfs /tmp
+            echo "nameserver 8.8.8.8" > /etc/resolv.conf
+            [ -z "$NFS_SERVER_IP" ] || echo "$NFS_SERVER_IP caching-proxy" >> /etc/hosts
+            for _ in 1 2 3; do sntp -sS pool.ntp.org && break || sleep 2; done || true
+            export CURRENT_SECTION=dut_boot
+          - export -p > /dut-env-vars.sh
+- test:
+    namespace: container
+    timeout:
+      minutes: 85
+    failure_retry: 3
+    definitions:
+    - name: docker_ssh_client
+      from: inline
+      path: inline/docker_ssh_client.yaml
+      repository:
+        metadata:
+          name: mesa
+          description: Mesa test plan
+          format: Lava-Test Test Definition 1.0
+        run:
+          steps:
+          - |-
+            set -ex
+            timeout 1m bash << EOF
+            while [ -z "$(lava-target-ip)" ]; do
+                echo Waiting for DUT to join LAN;
+                sleep 1;
+            done
+            EOF
+
+            ping -c 5 -w 60 $(lava-target-ip)
+
+            lava_ssh_test_case() {
+                set -ex
+                local test_case="${1}"
+                shift
+                lava-test-case "${test_case}" --shell \
+                    ssh ${SSH_PTY_ARGS:--T} \
+                    -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null \
+                    root@$(lava-target-ip) "${@}"
+            }
+          - lava_ssh_test_case 'wait_for_dut_login' << EOF
+          - while [ ! -e /dut_ready ]; do sleep 1; done;
+          - EOF
+          - export SSH_PTY_ARGS=-tt
+          - lava_ssh_test_case 'linux_meson:g12b' 'cd / && /init-stage2.sh'
+    docker:
+      image: registry.freedesktop.org/vigneshraman/linux/alpine/x86_64_lava_ssh_client:20250328-mesa-uprev--d5aa3941aa03c2f716595116354fb81eb8012acb
+