Repository navigation
fix(docs): q35 does boot a bare ELF through -kernel, given a PVH note - #24
Merged
Merged
Conversation
CLAUDE.md, the README, the x86_64 module docs, xtask's refusal and a CI comment all said q35 has no bare-ELF equivalent of -kernel. QEMU's x86 loader takes a 64-bit ELF when it carries a Xen PVH note (XEN_ELFNOTE_PHYS32_ENTRY; hw/i386/x86-common.c) and refuses this image only because it has none, which QEMU 11.0.3 reproduces. The corrected text states the fact without choosing between PVH and a UEFI stub; that is the x86_64 boot RFC's decision. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D1gBBT3tN99wzeJjf3tLWW
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Summary
Five places told contributors that
q35has "no bare-ELF equivalent of-kernel":CLAUDE.md§ Architectures, the README's Status, the x86_64 module docs,xtask'srequire_bootablerefusal and a comment inci_pr.yml. That claim is false. QEMU's x86 loader does take a 64-bit ELF through-kernel, provided it carries a Xen PVH note. This PR corrects all five without choosing a boot path.Explanation for the maintainer
What QEMU actually does, read in the pinned 11.0.3 source (
hw/i386/x86-common.c, shared bypcandq35):load_elfbootloads an ELF withload_elf, asking for theXEN_ELFNOTE_PHYS32_ENTRYnote.Error loading uncompressed kernel without PVH ELF Note.hw/i386/multiboot.c).-kernelonly with a PVH note.Reproduced: today's x86_64 image, run on the pinned QEMU 11.0.3 with
-machine q35 -kernel …, fails with exactly that error.Why the wording is neutral: the x86_64 boot research (#22's hand-off) recommends PVH now and a UEFI stub later. That's a design decision for the future x86_64 boot RFC, so the corrected text only states the fact: the image has neither the PVH note nor a UEFI stub. Real hardware still needs UEFI, as the constitution's bring-up order says.
Code change: one.
xtask's refusal message is reworded; behaviour is unchanged (x86_64 is still refused before QEMU runs).Which pillar does this serve?
Toil: the documents must describe the tree truthfully (Constitution §5.2 and §5.4).
If this changes a document or the constitution
docs/CHANGELOG.mdrecords it (not an amendment)Borrow Ledger
unsaferegisterunsafeblocks: Noneunsafeblock carries a// SAFETY:commentunsafeblock is inside a module CLAUDE.md designates for itChecklist
All run locally and passing, mirroring
ci_pr.yml:cargo fmt --all --checkandmarkdownlint-cli2-D warningsand debug/release builds ofsetonix-kernel(--all-features) for both Tier-1 targetssetonix-capabilityclippy for both targets; host clippy and tests (39 + doctests)xtaskclippy and tests (8)Kaya!andBRK instructioncargo xtask boot-test --arch x86_64prints the new refusal message🤖 Generated with Claude Code
https://claude.ai/code/session_01D1gBBT3tN99wzeJjf3tLWW
Generated by Claude Code