Cca planes#3443
Open
Azurithenkel wants to merge 9 commits into
Open
Conversation
Failure observed: testing on tp-desktop showed the original source-build flow could not run as a public Learning Path because the CCA-dev-platform source URL was not publicly cloneable from a clean host and the documented Shrinkwrap build failed immediately when planes.yaml was absent. Fix: add a draft Learning Path that gates the build on a published planes overlay, adds a Shrinkwrap --dry-run validation step, records the required public source inputs, and keeps the path draft:true until those inputs are available. Additional context: tp-desktop is Ubuntu 24.04 x86_64 with Docker and aarch64-linux-gnu-gcc available but no passwordless sudo. setup.source_me succeeded after creating a venv and installing Python packages from the package index. A temporary planes.yaml based on the prototype notes passed shrinkwrap build --dry-run after escaping shell substitution as $$(...).
Failure observed: testing on tp-desktop showed that using --overlay cca-lp.yaml --overlay planes.yaml with kvmtool revision cca/planes/rfc-v1 fails while applying config/lkvm.patch to net/uip/tcp.c. Adding a later kvmtool.prebuild list in planes.yaml does not remove the inherited patch because Shrinkwrap appends list values during overlay merge. Fix: update the draft Learning Path to require a planes-specific cca-planes-lp.yaml overlay and change the documented dry-run and build commands to use it. The overlay carries the base Learning Path filesystem and tooling changes while excluding the kvmtool.yaml layer that applies the incompatible patch. Additional context: a temporary cca-planes-lp.yaml on tp-desktop passed shrinkwrap build --dry-run and a real build progressed beyond the earlier kvmtool patch failure. The publication checklist now requires publishing that overlay or changing CCA-dev-platform so the lkvm.patch prebuild step is skipped for the planes branch.
Use the CCA-dev-platform README and the Fenimore OpenHCL prototype notes to make the draft path runnable against the current planes prototype inputs. The build page now creates cca-planes-lp.yaml locally so the base Learning Path filesystem and tooling changes are kept without inheriting kvmtool.yaml and config/lkvm.patch. It also creates planes.yaml with the prototype TF-RMM, linux-cca, kvmtool-cca, TF-A, and FVP Permission Indirection and Overlay settings. Record tp-desktop validation on Ubuntu 24.04.4: HTTPS clone of the GitHub repo still prompts for credentials, SSH reached CCA-dev-platform planes commit a7c5ec548bbf148ace0bea889cba92ef33c33f76, the dry run selected cca/planes/rfc-v1 and omitted lkvm.patch, and the full Shrinkwrap build completed buildroot and guest-disk artifacts. Also replace placeholder OpenHCL Linux and OpenVMM source commands with the internal prototype branches currently used by the Fenimore notes, while keeping publication blockers explicit until public branches are available.
Update the CCA planes OpenHCL Learning Path now that CCA-dev-platform provides config/cca-planes-lp.yaml and config/planes.yaml on the planes branch. The build page now verifies the overlay files in the checkout instead of asking learners to create large YAML files inline. It keeps the warning about using cca-planes-lp.yaml because the base cca-lp.yaml still inherits the kvmtool patch layer that breaks the planes kvmtool branch. The publication readiness page now points at CCA-dev-platform commit 401dfd13882e994df38fa741266b14ccda2d407c as the commit that adds the overlays, while keeping the public clone and internal OpenHCL source blockers explicit. Validation: confirmed the overlay files exist in /Users/tompil01/src/CCA-dev-platform, git diff --check passed, code fences are balanced, and the repo maintenance script remains blocked by the local missing PyYAML dependency.
Test the CCA planes OpenHCL kernel, OpenVMM, and root filesystem update steps on tp-desktop against the existing Shrinkwrap package output. The plane 0 OpenHCL Linux branch built successfully with the documented AArch64 GCC flow and produced arch/arm64/boot/Image. The OpenVMM branch required Rust 1.85.0, rust-src, and the two AArch64 targets; current stable Rust 1.96.0 failed on the JSON target spec. Replace the sudo mount copy flow with debugfs writes using the Buildroot host e2fsprogs. This matches the tested host, where passwordless sudo was unavailable, and the modified rootfs.ext2 passed e2fsck after copying guest-disk.img, KVMTOOL_EFI.fd, Image, lkvm, Image_ohcl, simple_tmk, and tmk_vmm into /cca. Validation: git diff --check passed, code fences are balanced, and tools/maintenance.py remains blocked by the local missing PyYAML dependency.
Update the planes OpenHCL run page so shrinkwrap run uses the same cca-planes-lp.yaml and planes.yaml overlays as the build. This is required for the MEC FVP parameters and planes model parameters used by the tested stack. Record the FVP boot validation on tp-desktop. The host did not have FVP_Base_RevC-2xAEMvA in PATH, so the test used FVP_Base_RevC_AEMvA_11.31_28 from the existing CCA simulation Docker image. The initial boot stopped in BL31 with 'feat_mec not supported by the PE'; CCA-dev-platform commit 70c5e946294e81da8fbe4d9a4bc079526e31925e adds the matching MEC FVP run parameters. After regenerating the run script with both overlays, the FVP boot reached the Linux login prompt using the resized rootfs.ext2 containing the plane 0 files. Validation: git diff --check passed, staged diff check passed, code fences are balanced, and tools/maintenance.py remains blocked by the local missing PyYAML dependency.
Testing on tp-desktop showed that the OpenHCL Realm launch must pass /cca/guest-disk.img to kvmtool. Without --disk, plane 0 Linux used the 9P share as root and panicked when /virt/init returned ENOEXEC. Document the tested RMM_V1_COMPAT overlay fix and the successful Realm boot to the plane 0 login prompt.
The tp-desktop FVP run logged in to plane 0 as root, mounted cca_mount over 9P at /root/mount, mounted hugetlbfs at /root/huge with 32 MB pages, and confirmed simple_tmk and tmk_vmm were visible through the share.
The tp-desktop run executed tmk_vmm with the CCA backend from plane 0, reached the simple_tmk hello-world path, printed tmk_vmm::run: test complete, and returned exit code 0. Record the remaining WIP branch caveat: an unnamed thread panics after completion because the CCA registers accessor still contains todo!().
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.
Before submitting a pull request for a new Learning Path, please review Create a Learning Path
Please do not include any confidential information in your contribution. This includes confidential microarchitecture details and unannounced product information.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the Creative Commons Attribution 4.0 International License.