feat(vmm): support tdx acpi table requirement#762
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a new compose-level requirement (requirements.tdx_measure_acpi_tables: Option<bool>) that lets an application explicitly force TDX “legacy” vs “lite” attestation behavior, and adds guest-side enforcement so a TDX guest fails closed when the generated vm_config does not satisfy that requirement.
Changes:
- Extend
Requirementsacross Rust types, SDK compose-hash implementations (Python/JS/Go), and the VMM UI typing to includetdx_measure_acpi_tables. - Update VMM sys-config/vm-config generation so
tdx_measure_acpi_tables(when present) overrides the configured/auto TDX attestation variant. - Add guest-side policy validation (plus unit tests) to ensure TDX guests reject mismatched
vm_configattestation mode.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| vmm/ui/src/composables/useVmManager.ts | Adds the new requirement field to UI-side Requirements typing. |
| vmm/src/one_shot.rs | Passes compose requirements into sys-config generation. |
| vmm/src/app.rs | Threads requirements into make_sys_config/make_vm_config and resolves TDX variant from the new requirement; adds unit tests. |
| sdk/python/src/dstack_sdk/get_compose_hash.py | Includes tdx_measure_acpi_tables in Python compose-hash requirements serialization. |
| sdk/js/src/get-compose-hash.ts | Adds tdx_measure_acpi_tables to JS SDK compose-hash Requirements interface. |
| sdk/go/dstack/compose_hash.go | Adds TdxMeasureAcpiTables to Go SDK requirements struct for compose hashing. |
| dstack-util/src/system_setup.rs | Adds guest-side enforcement of tdx_measure_acpi_tables against sys_config.vm_config, with tests. |
| dstack-types/src/lib.rs | Extends the canonical Rust Requirements type and tests; updates Requirements::is_empty(). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
kvinwang
force-pushed
the
feat/tdx-measure-acpi-requirement
branch
from
July 8, 2026 15:59
2c7b7ea to
d3624ec
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.
Problem
tdx_attestation_variantis currently selected only from VMM config/auto policy. An app compose requirement cannot force whether TDX ACPI tables are measured, so deployments that require measured ACPI tables can still be launched with TDX lite attestation. Relying parties also cannot tell from verifier output whether ACPI table contents were verified.Fix
requirements.tdx_measure_acpi_tables: Option<bool>to dstack types and SDK compose-hash types.true=> legacy TDX attestation, no lite mode.false=> TDX lite attestation.vm_configdoes not satisfy the compose requirement.details.acpi_tables_verifiedand CLIACPI tables verified: ...line.Verification
cargo fmt --check --allcargo clippy -- -D warnings -D clippy::expect_used -D clippy::unwrap_used --allow unused_variablescargo test -p dstack-verifier./run-tests.shcd sdk && ./run-tests.shcd vmm/ui && npm ci && npm run buildprek run --from-ref origin/master --to-ref HEAD --show-diff-on-failure