Skip to content

Add support for running an arbitrary chipset device in another process, and do so with the TPM#2466

Merged
smalis-msft merged 10 commits intomicrosoft:mainfrom
smalis-msft:dev-work
Dec 19, 2025
Merged

Add support for running an arbitrary chipset device in another process, and do so with the TPM#2466
smalis-msft merged 10 commits intomicrosoft:mainfrom
smalis-msft:dev-work

Conversation

@smalis-msft
Copy link
Contributor

@smalis-msft smalis-msft commented Nov 20, 2025

Package the required resources into MeshPayloads, send them into a new process, and build the device there. Then proxy across any IOs and memory accesses.

@smalis-msft

This comment was marked as outdated.

@smalis-msft smalis-msft force-pushed the dev-work branch 7 times, most recently from 82d0205 to 35c2b25 Compare December 5, 2025 22:25
@smalis-msft smalis-msft changed the title Add support for running an arbitrary chipset device in another process, and do so with the TPM WIP: Add support for running an arbitrary chipset device in another process, and do so with the TPM Dec 8, 2025
@smalis-msft smalis-msft marked this pull request as ready for review December 8, 2025 17:38
@smalis-msft smalis-msft requested a review from a team as a code owner December 8, 2025 17:38
Copilot AI review requested due to automatic review settings December 8, 2025 17:38
@smalis-msft smalis-msft requested a review from a team as a code owner December 8, 2025 17:38
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This WIP PR introduces infrastructure to run chipset devices in isolated processes, with the TPM device as the initial use case. The implementation follows a worker/proxy pattern where a ChipsetDeviceProxy in the main process communicates with a RemoteChipsetDeviceWorker in a separate process via mesh channels. This provides process-level isolation for devices, enhancing security and fault tolerance.

Key changes:

  • New chipset_device_worker crate with proxy/worker/resolver pattern for remote device execution
  • Integration of TPM device to run in a separate process across OpenVMM, OpenHCL, and Petri test framework
  • Mesh-based communication infrastructure for device operations (MMIO, PIO, PCI config space)

Reviewed changes

Copilot reviewed 20 out of 21 changed files in this pull request and generated 19 comments.

Show a summary per file
File Description
workers/chipset_device_worker/src/lib.rs Core types for remote device communication (requests, responses, initialization)
workers/chipset_device_worker/src/worker.rs Worker implementation that runs devices in separate process
workers/chipset_device_worker/src/proxy.rs Client-side proxy forwarding device operations over channels
workers/chipset_device_worker/src/resolver.rs Resource resolver for launching remote device workers
workers/chipset_device_worker/src/worker/configure.rs Stub implementations for device configuration (all todo!())
workers/chipset_device_worker/Cargo.toml Dependencies for the new worker crate
petri/src/vm/openvmm/construct.rs Integrate remote TPM device in Petri tests
petri/src/vm/openvmm/mod.rs Add mesh host to Petri VM configuration
petri/src/vm/openvmm/start.rs Thread mesh initialization through start sequence
petri/Cargo.toml Add chipset_device_worker dependency
openvmm/openvmm_entry/src/lib.rs Wrap TPM device with remote worker in OpenVMM
openvmm/openvmm_entry/Cargo.toml Add chipset_device_worker dependency
openvmm/openvmm_resources/src/lib.rs Register remote chipset device resolver and worker
openvmm/openvmm_resources/Cargo.toml Add chipset_device_worker dependency
openhcl/underhill_core/src/worker.rs Wrap TPM device with remote worker in OpenHCL
openhcl/underhill_core/src/dispatch/mod.rs Add device_mesh to LoadedVm state
openhcl/underhill_core/Cargo.toml Add chipset_device_worker dependency
openhcl/openvmm_hcl_resources/src/lib.rs Register remote chipset device resolver and worker
openhcl/openvmm_hcl_resources/Cargo.toml Add chipset_device_worker dependency
Cargo.toml Add chipset_device_worker to workspace
Cargo.lock Lock file updates for new dependencies

@github-actions
Copy link

github-actions bot commented Dec 8, 2025

@github-actions github-actions bot added the unsafe Related to unsafe code label Dec 9, 2025
@github-actions
Copy link

github-actions bot commented Dec 9, 2025

⚠️ Unsafe Code Detected

This PR modifies files containing unsafe Rust code. Extra scrutiny is required during review.

For more on why we check whole files, instead of just diffs, check out the Rustonomicon

@smalis-msft smalis-msft added the release-ci-required Add to a PR to trigger PR gates in release mode label Dec 9, 2025
@github-actions
Copy link

github-actions bot commented Dec 9, 2025

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

@github-actions
Copy link

@github-actions
Copy link

@github-actions
Copy link

@smalis-msft smalis-msft enabled auto-merge (squash) December 19, 2025 19:11
@github-actions
Copy link

@smalis-msft smalis-msft disabled auto-merge December 19, 2025 20:12
@smalis-msft smalis-msft merged commit ed5ef6c into microsoft:main Dec 19, 2025
75 of 81 checks passed
@smalis-msft smalis-msft deleted the dev-work branch December 19, 2025 20:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-ci-required Add to a PR to trigger PR gates in release mode unsafe Related to unsafe code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants