flowey: split openvmm-deps into separate archives and use Linux 6.18 test kernel#3530
flowey: split openvmm-deps into separate archives and use Linux 6.18 test kernel#3530moor-coding wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Updates Flowey’s openvmm-deps resolver to support the new split release artifacts introduced in openvmm-deps 0.3.0-33, and switches the test Linux kernel selection to 6.18.
Changes:
- Route each
OpenvmmDepFileto the correct source archive (SDK tools vs test initrd vs test kernel). - Add configurable
test_kernel_versionand bump pinnedOPENVMM_DEPSto0.3.0-33(defaulting test kernel to 6.18).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| flowey/flowey_lib_hvlite/src/resolve_openvmm_deps.rs | Adds archive selection logic and downloads/extracts multiple per-arch artifacts instead of a single bundle. |
| flowey/flowey_lib_hvlite/src/_jobs/cfg_versions.rs | Updates pinned openvmm-deps version and introduces a constant for selecting the 6.18 test kernel. |
…kernel
Update resolve_openvmm_deps to download separate archives per dep type:
- openvmm-deps.{arch}.{ver}.tar.gz (SDK: dbgrd, shell, sysroot, petritools)
- openvmm-test-initrd.{arch}.{ver}.tar.gz (shared test initrd)
- openvmm-test-linux-{kernel_ver}.{arch}.{ver}.tar.gz (test kernel)
This matches the new openvmm-deps release structure (0.3.0-29+).
Archive format changed from .tar.bz2 to .tar.gz.
Add test_kernel_version field to Config and OPENVMM_TEST_LINUX_KERNEL
constant ("6.18") to cfg_versions.rs.
The Request::Get API is unchanged — consumers are unaffected.
Version set to TODO-PLACEHOLDER-PENDING-RELEASE until the openvmm-deps
release with 6.18 kernel artifacts is cut.
b6e164b to
ef10d04
Compare
- Add Linux6_18 variant to LinuxTestKernelVersion enum - Update DEFAULT_LINUX_TEST_KERNEL_VERSION to Linux6_18 - Remove unused OPENVMM_TEST_LINUX_KERNEL constant from cfg_versions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| /// follow-ups, both upstream and as new variants of this enum. | ||
| #[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] | ||
| pub enum LinuxTestKernelVersion { | ||
| Linux6_1, |
There was a problem hiding this comment.
I guess this is more a maintainer question than a question for this PR, but do we still want to use 6.1 for anything or can we just delete it?
There was a problem hiding this comment.
It looks like we have one test that is not working with the 6.18 kernel. Looking at the lift to have that one test using the prior kernel version
Root cause: The Linux 6.18 MANA/GDMA driver crashes with a NULL pointer dereference in mana_gd_probe() when probing the
second GDMA device. The 6.18 driver sends an SMC request (0x0) that the OpenVMM GDMA emulator doesn't support, and the
driver doesn't handle the failure gracefully — it dereferences a NULL pointer at offset 0x28.
There was a problem hiding this comment.
I personally would be ok with deleting 6.1 entirely and marking that one test as unstable to get this in, but let's check with some mana folks first to see if they think it would be an easy fix. Either way I think 6.1 should go away.
CI Failure Analysis:
|
|
Interesting. We should confirm this with some MANA folks. |
The rewrite incorrectly used extract_tar_bz2_if_new which unnecessarily installs the bzip2 package. Switch to extract_tar_gz_if_new consistent with the sibling test kernel and initrd resolver modules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Inline the archive filename logic directly since there is only one archive type (openvmm-deps). The kernel and initrd archives are handled by their own dedicated resolver modules. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| //! Download various pre-built `openvmm-deps` dependencies, or use a local path if specified. | ||
| //! | ||
| //! The openvmm-deps release publishes separate archives: | ||
| //! - `openvmm-deps.{arch}.{ver}.tar.gz` — SDK tools (dbgrd, shell, sysroot, petritools) | ||
| //! - `openvmm-test-initrd.{arch}.{ver}.tar.gz` — shared test initrd | ||
| //! - `openvmm-test-linux-{kernel_ver}.{arch}.{ver}.tar.gz` — test kernel |
| /// which kernel they're using should pass this. | ||
| pub const DEFAULT_LINUX_TEST_KERNEL_VERSION: LinuxTestKernelVersion = | ||
| LinuxTestKernelVersion::Linux6_1; | ||
| LinuxTestKernelVersion::Linux6_18; |
Summary
Update the flowey openvmm-deps resolver to handle the new split artifact structure from openvmm-deps
0.3.0-33, and switch the test kernel from 6.1 to 6.18.Changes
resolve_openvmm_deps.rs: AddSourceArchiveenum to routeOpenvmmDepFilevariants to the correct source archive. Generalize download/extract from hardcoded single-archive to multi-archive pattern.resolve_openvmm_test_linux_kernel.rs: AddLinux6_18variant and set as default kernel version.cfg_versions.rs: BumpOPENVMM_DEPSfrom0.1.0-20260427.3to0.3.0-33. Remove unusedOPENVMM_TEST_LINUX_KERNELconstant (kernel version is now managed inresolve_openvmm_test_linux_kernel.rs).Context
0.3.0-33contains all three archive types for both architecturesKnown Issue
The
openvmm_linux_x64_pcie_devicestest fails on all runners with a NULL pointer dereference in the MANA/GDMA driver (mana_gd_probe) in the 6.18 kernel. The 6.18 MANA driver sends an SMC request (0x0) that the OpenVMM GDMA emulator does not handle. This is a pre-existing emulator gap exposed by the newer kernel, not a regression in this PR.