kernel: add firecracker experiment recipe - #1
Conversation
Record exact deployed-config v6.1 baseline and ACPI-only build results, including source and toolchain identity, resolved config caveats, artifact hashes, and the direct boot comparison. Add a repeatable variant builder that keeps generated configs and outputs outside the source tree. Relates-to: zeishdev/compute#141 Signed-off-by: Aaqa Ishtyaq <aaqaishtyaq@gmail.com>
State that the v6.1 source only matches the deployed version string, not verified source provenance. Describe the unresolved cross-build capability checks that unset CC_CAN_LINK and CC_CAN_LINK_STATIC and consequently remove BPFILTER_UMH without asserting an unverified toolchain cause. Signed-off-by: Aaqa Ishtyaq <aaqaishtyaq@gmail.com>
Add the final interleaved v6.1 deployed, rebuilt, and ACPI listener results. Describe the small bounded listener delta and its production readiness limits, with a link to the companion compute investigation. Signed-off-by: Aaqa Ishtyaq <aaqaishtyaq@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7504906320
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "$repo_dir/build.sh" | ||
| } | ||
|
|
||
| build_variant baseline "$base_config" |
There was a problem hiding this comment.
Resolve the baseline config before changing directories
When BASE_CONFIG is a relative path, the existence check succeeds in the caller's directory, but build.sh later changes into the cloned Linux tree before copying KERNEL_CONFIG_PATH (build.sh:223-229). Consequently, a normal invocation such as BASE_CONFIG=microvm-kernel-x86_64.config ... aborts during the baseline build; canonicalize the path before forwarding it.
Useful? React with 👍 / 👎.
| sed -i.bak \ | ||
| -e 's/^CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y$/# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set/' \ | ||
| "$variant_config" |
There was a problem hiding this comment.
Reject configs that do not produce the requested variant
If the supplied config lacks the exact CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y line—for example because it is already disabled—sed still exits successfully, so the script can build identical baseline and “acpi” artifacts without warning. Because BASE_CONFIG is validated only for existence, require the replacement to occur and verify the resolved candidate setting before labeling the result.
Useful? React with 👍 / 👎.
Summary
This adds an experimental Firecracker kernel experiment recipe and report.
It records a rebuild from the exact deployed config and a controlled ACPI-only
candidate that disables
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICESwhile retainingACPI and PCI.
The change does not alter the default kernel config, release workflow, or
production artifact. It links the compute investigation in zeishdev/compute#141.
Evidence
e9d4a0b613ba7c1393347f7d46d90b0bb60366ba895766bb123236efc11f7674Linux 6.1.0-zeish+830b3c68c1fb1e9176028d02ef86f3cf76aa24765e5133ee54f310e86aa62fcd37a352598ca88bc3c8da189972e212e1aec24a3de5d4a0ce099a798d1adf54e763e7a2edda4d498438028f82c7cbde74420d0c81The resolved rebuild config differs from the deployed config in compiler
identity and loses
CONFIG_CC_CAN_LINK,CONFIG_CC_CAN_LINK_STATIC, and thedependent
CONFIG_BPFILTER_UMH; the report calls out this limitation.Ten interleaved direct Firecracker runs measured the deployed Linux 6.1
kernel at 1132 ms median. The exploratory Linux 6.12 ACPI candidate measured
1221.5 ms, so the result does not justify a kernel rollout.
Validation
bash -n experiments/build-firecracker-variants.shgit diff --checkNeed help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.