-
Notifications
You must be signed in to change notification settings - Fork 161
vmm_core/vmotherboard: chipset bus resolution for pcie enumerators and downstream ports #2122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vmm_core/vmotherboard: chipset bus resolution for pcie enumerators and downstream ports #2122
Conversation
…d downstream ports
There was a problem hiding this 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 PR introduces PCIe topology component wiring support in OpenVMM's vmotherboard. It adds infrastructure for connecting PCIe enumerators (root complexes, switches) with downstream ports and endpoint devices through a bus resolution system.
Key changes:
- Introduces two new PCIe bus ID types for enumerators and downstream ports
- Adds PCIe bus resolver with error handling similar to existing PCI infrastructure
- Updates VM worker to register PCIe root complexes with the new resolution architecture
Reviewed Changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vmm_core/vmotherboard/src/lib.rs | Defines new bus ID types for PCIe enumerators and downstream ports |
| vmm_core/vmotherboard/src/chipset/mod.rs | Adds PCIe conflict error types and display formatting |
| vmm_core/vmotherboard/src/chipset/builder/mod.rs | Implements PCIe enumerator registration and device resolution logic |
| vmm_core/vmotherboard/src/chipset/builder/errors.rs | Adds PCIe conflict error to builder error enum |
| vmm_core/vmotherboard/src/chipset/backing/arc_mutex/services.rs | Adds PCIe device registration service |
| vmm_core/vmotherboard/src/chipset/backing/arc_mutex/pci.rs | Implements PCIe bus resolver and device registration traits |
| vmm_core/vmotherboard/src/chipset/backing/arc_mutex/device.rs | Adds PCIe port configuration to device builder |
| vmm_core/vmotherboard/src/base_chipset.rs | Implements PCIe root complex integration with device infrastructure |
| vmm_core/vmotherboard/Cargo.toml | Adds pcie dependency |
| openvmm/hvlite_core/src/worker/dispatch.rs | Registers PCIe root complexes with new bus resolution system |
smalis-msft
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we have a need to add a bunch more buses maybe we should invest in deduplicating some of this code with some macros or higher-level generic shenanigans, but I don't think it's likely we're going to need more than this any time soon right?
I don't think we'll need any more buses for PCIe stuff, and I agree adding these is pretty rare |
This change introduces
vmotherboardsupport in OpenVMM for wiring PCIe topology components together. This PR builds on previous changes to introduce root complex and root port emulators, and in subsequent PRs will be used to wire endpoint devices up to their parent devices. For a view of how this fits together, see #1976Specifially, this change:
vmotherboard::BusIdtypes. which are separate because they have distinct wiring requirements.