Skip to content

kernel: add firecracker experiment recipe - #1

Open
aaqaishtyaq wants to merge 3 commits into
trunkfrom
codex/firecracker-kernel-experiments
Open

kernel: add firecracker experiment recipe#1
aaqaishtyaq wants to merge 3 commits into
trunkfrom
codex/firecracker-kernel-experiments

Conversation

@aaqaishtyaq

@aaqaishtyaq aaqaishtyaq commented Sep 8, 2026

Copy link
Copy Markdown
Member

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_DEVICES while retaining
ACPI 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

  • Deployed config SHA256: e9d4a0b613ba7c1393347f7d46d90b0bb60366ba895766bb123236efc11f7674
  • Deployed kernel: Linux 6.1.0-zeish+
  • Source: Linux commit 830b3c68c1fb1e9176028d02ef86f3cf76aa2476
  • Rebuilt baseline SHA256: 5e5133ee54f310e86aa62fcd37a352598ca88bc3c8da189972e212e1aec24a3d
  • ACPI candidate SHA256: e5d4a0ce099a798d1adf54e763e7a2edda4d498438028f82c7cbde74420d0c81
  • Toolchain: GCC 13.3.0 and binutils 2.42

The resolved rebuild config differs from the deployed config in compiler
identity and loses CONFIG_CC_CAN_LINK, CONFIG_CC_CAN_LINK_STATIC, and the
dependent 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.sh
  • git diff --check
  • v6.1 baseline built successfully
  • ACPI candidate built incrementally from the baseline source

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +28 to +30
sed -i.bak \
-e 's/^CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y$/# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set/' \
"$variant_config"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

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