Skip to content

Instantly share code, notes, and snippets.

View bjackman's full-sized avatar

Brendan Jackman bjackman

View GitHub Profile
This file has been truncated, but you can view the full file.
H4sIAAAAAAAAA+xae3PayLLPv9an6OOqew6OEeiNRELKGHBCApgY7CTe2lKNpBHICInoge2cPfez
3x4JMBDba+fhvXtvVI4tzaOnH7/unplOGkdlP7SJXx6F4cin5XE4peULYk+mJLDK/mTql5995yPg
UxGEZ5ImiaqmPRMktaJKcta+eJ6JSgXbJE1RsV0S8ecZqN+78EOeNE5IBPBsKfJd42aRNyXR9SgK
09lT8PVET/oA+6++vnGNB9pf0yRFlTQV+3HAL/s/yfMo+yfT2bdg4BH+Lwsys78sa8Iv+z/F8yj7
B/TyZ9tfFKXM/or6y/5P8TzK/nYa/Vz7y4KIjp/ZX/tl/6d4Hm1/WTQEw7LQgrJo6YpMZINqLpUl
okuGIji6qGtEMtyqVBws1mAG1u60vyjLuNnL8n9FrciY+AVZFBTlGQhPo4D/1/Y/oUkaBXyfJOMq
vPS9IL3iJzQKqM+HlwGNDvKPUhiNXnEf+cGMTPnGmNrYzJ/RKPbCoAqstR7HJI69AOSSUhKgIAmi
wgsSL1T2IAy4HXIZ82nMX9I44SV+gvR4Bi5eLF1Sq2SHDiVpFEaErcSdUJt6c+pUwY3CKUyJ55du
GIHCdsNvoqGXREUtSUbJMH7f43asa4inyazkhxHdmNoP48T1rvbg0kvG0Bp0h33wHFDlI0VoKIjF
I27HDaNNXRyQyB4jQ9EaqVcvoBsGRQAFju0EJDyygChXFakqVGCfIRsKp8PG3rYw89EGGShsN/wm
This file has been truncated, but you can view the full file.
{"timestamp":"2025-04-04T17:07:10.252673Z","level":"INFO","fields":{"message":"logging initialised"},"target":"watchexec_cli::args::logging"}
{"timestamp":"2025-04-04T17:07:10.252762Z","level":"INFO","fields":{"message":"effective working directory","path":"\"/usr/local/google/home/jackmanb/src/linux/icbr\""},"target":"watchexec_cli::args::command"}
{"timestamp":"2025-04-04T17:07:10.252846Z","level":"DEBUG","fields":{"message":"home directory","homedir":"Some(\"/usr/local/google/home/jackmanb\")"},"target":"watchexec_cli::dirs"}
{"timestamp":"2025-04-04T17:07:10.252863Z","level":"DEBUG","fields":{"message":"resolved whether the homedir is explicitly requested","homedir_requested":"false"},"target":"watchexec_cli::dirs"}
{"timestamp":"2025-04-04T17:07:10.252869Z","level":"DEBUG","fields":{"message":"no origins, using current directory"},"target":"watchexec_cli::dirs"}
{"timestamp":"2025-04-04T17:07:10.252875Z","level":"DEBUG","fields":{"message":"resolved all project origins","origins":"{\"/usr/local/google/ho
TAP version 13
# -----------------------------
# running ./map_fixed_noreplace
# -----------------------------
# TAP version 13
# 1..9
# # mmap() @ 0x7fb9aa857000-0x7fb9aa85c000 p=0x7fb9aa857000 result=Success
# ok 1 mmap() 5*PAGE_SIZE at base
# # mmap() @ 0x7fb9aa858000-0x7fb9aa85b000 p=0x7fb9aa858000 result=Success
# ok 2 mmap() 3*PAGE_SIZE at base+PAGE_SIZE
+ mkdir -p image
+ tar -C image --zstd -xf image.tar.zst
+ mkdir -p kernel-build
+ tar -C kernel-build -zxf kernel.tgz
++ dirname .github/scripts/test.sh
+ cp .github/scripts/test.guest.sh kernel-build/kselftests
+ unshare -r vng --verbose --root image --user root --run kernel-build/vmlinuz --rwdir=/mnt=kernel-build/kselftests --cpus 4 -- 'cd /mnt; ./test.guest.sh'
+ tee guest.log
warning: failed to retrieve kernel version from: kernel-build/vmlinuz (modules may not work)
No EFI environment detected.

QEMU Wrappers

QEMU is a pain to use, lots of people have built wrappers for it that can be used for kernel testing.

  • At Google we wrote an internal one called go/vm-cli. It is slightly coupled with Debian, it generates an image via Debootstrap.
  • At Isovalent they wrote https://github.com/cilium/little-vm-helper which is similar but has a JSON config language and also knows how to build kernels and manage Kconfigs.

Trying to run some mm selftests on QEMU using virtme-ng

Build kselftests:

make -j100 CC='ccache gcc' -C tools/testing/selftests  TARGETS=mm EXTRA_CFLAGS=-static install

Rootfs is a Debian system built like this:

TAP version 13
# ---------------------
# running ./gup_test -u
# ---------------------
# TAP version 13
# 1..1
# # GUP_FAST_BENCHMARK: Time: get:1777 put:239 us#
# ok 1 ioctl status 0
# # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
# [PASS]
TAP version 13
# ---------------------
# running ./gup_test -u
# ---------------------
# TAP version 13
# 1..1
# # GUP_FAST_BENCHMARK: Time: get:1777 put:239 us#
# ok 1 ioctl status 0
# # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
# [PASS]
Traceback (most recent call last):
File "/usr/local/google/home/jackmanb/.local/bin/b4", line 8, in <module>
sys.exit(cmd())
^^^^^
File "/usr/local/google/home/jackmanb/.local/share/pipx/venvs/b4/lib/python3.11/site-packages/b4/command.py", line 417, in cmd
cmdargs.func(cmdargs)
File "/usr/local/google/home/jackmanb/.local/share/pipx/venvs/b4/lib/python3.11/site-packages/b4/command.py", line 93, in cmd_send
b4.ez.cmd_send(cmdargs)
File "/usr/local/google/home/jackmanb/.local/share/pipx/venvs/b4/lib/python3.11/site-packages/b4/ez.py", line 2133, in cmd_send
reroll(mybranch, tag_msg, cl_msgid)
[System Info]
git version:
git version 2.47.0.296.gc08e6fccd8
cpu: x86_64
built from commit: c08e6fccd86136592273e319042f44cc8eadbb2a
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
OpenSSL: OpenSSL 3.0.13 30 Jan 2024
zlib: 1.3