Repository navigation
feat(qemu-acpi): model guest NUMA nodes without PXB expanders - #1458
Merged
Merged
Conversation
A QEMU wrapper can give a CVM guest NUMA nodes (SRAT and CPU _PXM) while leaving every device on the root bus. Such a layout depends only on the vCPU count and memory size, so the KMS can reproduce it, unlike the multi-PXB layout whose expander _CRS comes from firmware enumeration. NumaNodeConfig.pxb_bus becomes optional and is omitted when absent, so existing vm_configs deserialize and serialize unchanged and their MRs and verifier cache keys stay the same. Mixed layouts are still rejected. An older KMS fails to parse a node without pxb_bus and refuses the CVM. dstack-mr measure gains --numa-nodes, and both differential harnesses cover the new layout. Signed-off-by: Kevin Wang <wy721@qq.com>
kvinwang
force-pushed
the
feat/numa-without-pxb
branch
from
October 19, 2026 16:13
d1a7d14 to
4e60f32
Compare
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.
Summary
Lets
VmConfig.numa_nodesdescribe guest NUMA nodes withoutpxb-pcieexpanders: SRAT plus CPU_PXM, all devices on the root bus. A QEMU wrapper (like the one that already reportsextra_root_devices) can add such nodes and record them in.sys-config.json, and the KMS can verify the resulting RTMR0. The multi-PXB layout can't be modeled this way, because each expander's_CRScomes from firmware enumeration.NumaNodeConfig.pxb_busbecomesOption<u8>and is skipped whenNone.qemu-acpiaccepts nodes where every node has an expander or none does. Mixed layouts are still rejected.dstack-mr measure --numa-nodes N.Compatibility
vm_configs parse and serialize byte for byte as before. RTMR0 and verifier cache keys don't change:dstack-mr measureonnextand on this branch agrees for 8 legacy layouts (plain, GPUs, hugepages, 1/2/4 PXBs, extra root devices).pxb_busand refuses the CVM (fails closed).Testing
differential-random.pyagainst the CI reference image, seed0x1053, 200 random cases: 243/243 pass, 66 of them pxb-less.differential-qemu.shwith the pinned reference QEMU (dump-all-blobs patch), 10 compat versions × 6 topologies: 60/60 three-blob matches, including the newnuma2-plain.dstack-mr diagnosereports MRTD, RTMR0-2 and the RTMR0 event log as MATCH. Withoutnuma_nodes, RTMR0 mismatches.