Skip to content

ci(nightly): add modinfo/depmod, sparse, and qemu-insmod jobs#54

Merged
EmbeddedAndroid merged 1 commit into
masterfrom
runtime-and-static-ci
May 14, 2026
Merged

ci(nightly): add modinfo/depmod, sparse, and qemu-insmod jobs#54
EmbeddedAndroid merged 1 commit into
masterfrom
runtime-and-static-ci

Conversation

@EmbeddedAndroid
Copy link
Copy Markdown
Owner

Extends the nightly compile matrix with runtime + static validation on top of the existing kernel API compile check.

  • compile job: runs modinfo + depmod -n on every .ko after the build. Validates module metadata (license, version, USB id table, vermagic, parameters) and that dependency wiring resolves cleanly.

  • static-analysis job (8 cells, one per driver): runs sparse over the driver source with kernel 6.12 LTS headers. Cheap signal on common C bugs the kernel build doesn't fail on. Warnings don't currently fail the job; tightening to come once the baseline is established.

  • qemu-insmod job (8 cells, one per driver): builds a tinyconfig + WiFi-enabled bzImage (kernel 6.12.30), a busybox initramfs carrying the .ko, and boots it under QEMU. The init script insmod-s the module and prints DRIVER_INSMOD_RESULT=0 on success. Catches NULL derefs in module_init paths, EXPORT_SYMBOL mismatches that modpost-with-empty-Module.symvers can't see, etc. Single kernel target (per-kernel bzImage builds would be hours each); revisit when we have a faster path.

summary job now requires all three (compile, static-analysis, qemu-insmod) green to call the run successful.

Temporary pull_request trigger on this workflow so this PR exercises the new jobs end-to-end; that trigger will be reverted before merge.

Extends the nightly compile matrix with runtime + static validation
on top of the existing kernel API compile check.

- compile job: runs modinfo + depmod -n on every .ko after the
  build. Validates module metadata (license, version, USB id table,
  vermagic, parameters) and confirms dependency wiring is sane.

- static-analysis job (8 cells, one per driver): runs sparse over
  the driver source with kernel 6.12 LTS headers. Cheap signal on
  common C bugs the kernel build doesn't fail on. Warnings don't
  currently fail the job; tightening to come once the baseline is
  established.

- qemu-insmod job (8 cells, one per driver): builds a tinyconfig
  bzImage (kernel 6.12.30) with wireless + INET/ACPI/PCI/USB,
  packages a busybox initramfs with the .ko, and boots it under
  QEMU. The init script insmod-s the module and prints
  DRIVER_INSMOD_RESULT=0 on success, then 'reboot -f' triggers
  qemu's -no-reboot to exit cleanly. Catches NULL derefs in
  module_init, EXPORT_SYMBOL mismatches that modpost-with-empty-
  Module.symvers can't see, etc. Single kernel target (per-kernel
  bzImage builds would be hours each); revisit when we have a
  faster path.

summary job now requires all three (compile, static-analysis,
qemu-insmod) green to call the run successful.
@EmbeddedAndroid EmbeddedAndroid force-pushed the runtime-and-static-ci branch from 48c349e to 01d82ed Compare May 14, 2026 13:14
@EmbeddedAndroid EmbeddedAndroid merged commit 0b4d3c4 into master May 14, 2026
@EmbeddedAndroid EmbeddedAndroid deleted the runtime-and-static-ci branch May 14, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant