From b1c44bae2e642c6fda763599094403d04499ffd6 Mon Sep 17 00:00:00 2001 From: Matthew Grossman Date: Thu, 30 Jul 2026 14:58:59 -0700 Subject: [PATCH 1/2] fix(ci): preserve KVM access across udev restarts Signed-off-by: Matthew Grossman --- .github/workflows/e2e-test.yml | 38 ++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index a9270c3786..c6578a94d5 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -305,21 +305,6 @@ jobs: with: artifact-name: ${{ inputs.vm-driver-artifact-name }} - - name: Enable KVM access - run: | - set -euo pipefail - if [[ ! -c /dev/kvm ]]; then - echo "::error::The GitHub-hosted runner did not expose /dev/kvm" - lscpu - grep -m1 -E '^(flags|Features)' /proc/cpuinfo || true - ls -la /dev - exit 1 - fi - sudo chmod 0666 /dev/kvm - ls -l /dev/kvm - test -r /dev/kvm - test -w /dev/kvm - - name: Install system dependencies run: | sudo apt-get update @@ -335,6 +320,29 @@ jobs: socat \ zstd + - name: Enable KVM access + run: | + set -euo pipefail + if [[ ! -c /dev/kvm ]]; then + echo "::error::The GitHub-hosted runner did not expose /dev/kvm" + lscpu + grep -m1 -E '^(flags|Features)' /proc/cpuinfo || true + ls -la /dev + exit 1 + fi + + # Package installation can restart systemd-udevd, which reapplies + # the default root:kvm 0660 mode. Install a persistent rule after + # dependencies so later udev events preserve runner access. + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \ + | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + ls -l /dev/kvm + exec 3<>/dev/kvm + exec 3>&- + - name: Validate VM host tools run: | command -v mke2fs From 4697b36a044d7cd3402e259364f0003075fe9223 Mon Sep 17 00:00:00 2001 From: Matthew Grossman Date: Thu, 30 Jul 2026 15:05:11 -0700 Subject: [PATCH 2/2] fix(ci): wait for KVM udev event Signed-off-by: Matthew Grossman --- .github/workflows/e2e-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml index c6578a94d5..d671149999 100644 --- a/.github/workflows/e2e-test.yml +++ b/.github/workflows/e2e-test.yml @@ -337,7 +337,7 @@ jobs: echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \ | sudo tee /etc/udev/rules.d/99-kvm4all.rules sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm + sudo udevadm trigger --settle --name-match=kvm ls -l /dev/kvm exec 3<>/dev/kvm