Add generic IO-APIC support to chipset resources#3333
Open
moor-coding wants to merge 2 commits intomicrosoft:mainfrom
Open
Add generic IO-APIC support to chipset resources#3333moor-coding wants to merge 2 commits intomicrosoft:mainfrom
moor-coding wants to merge 2 commits intomicrosoft:mainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors generic IO-APIC support to be resource/resolver-driven by moving IO-APIC routing into chipset_resources and wiring platform-specific routing via platform resolvers, eliminating the old GenericIoApicDeps plumbing in the base chipset builder.
Changes:
- Introduces
chipset_resources::ioapic(routing trait + handle kinds +GenericIoApicDeviceHandle) and achipset::ioapic::resolver::GenericIoApicResolver. - Updates manifest building to attach a generic IO-APIC device handle (and sets
capabilities.with_ioapic) instead of using legacywith_generic_ioapic/deps wiring. - Registers the new chipset resolver and adds a platform resolver (
IoApicRoutingResolver) in both OpenVMM and Underhill workers.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vmm_core/vmotherboard/src/base_chipset.rs | Removes legacy GenericIoApicDeps device construction path from base chipset options/builder. |
| vmm_core/vm_manifest_builder/src/lib.rs | Attaches GenericIoApicDeviceHandle via resources and updates IO-APIC capability tracking. |
| vmm_core/src/platform_resolvers.rs | Adds platform resolver to provide IoApicRouting for resource resolution. |
| vmm_core/src/emuplat/ioapic.rs | Updates wrapper to implement the moved chipset_resources::ioapic::IoApicRouting trait. |
| vmm_core/Cargo.toml | Adds chipset_resources dependency needed for the moved IO-APIC routing types. |
| vm/devices/chipset_resources/src/lib.rs | Adds ioapic resource module (routing trait, handle kind, device handle, constant). |
| vm/devices/chipset/src/ioapic/resolver.rs | New async resolver that wires IRQ line targets and instantiates IoApicDevice. |
| vm/devices/chipset/src/ioapic/mod.rs | Exposes resolver module and re-exports IoApicRouting from chipset_resources. |
| openvmm/openvmm_resources/src/lib.rs | Registers the new GenericIoApicResolver for x86_64 guests. |
| openvmm/openvmm_core/src/worker/dispatch.rs | Adds platform IO-APIC routing resolver registration and switches ACPI with_ioapic source to capabilities. |
| openhcl/underhill_core/src/worker.rs | Adds platform IO-APIC routing resolver registration and switches ACPI with_ioapic source to capabilities. |
| openhcl/openvmm_hcl_resources/src/lib.rs | Registers the new GenericIoApicResolver for x86_64 guests (OpenHCL side). |
| Cargo.lock | Records the new chipset_resources dependency edge in the lockfile. |
smalis-msft
reviewed
Apr 20, 2026
bc92eee to
8861f2c
Compare
- Move IoApicRouting trait to chipset_resources crate with re-export - Add IoApicRoutingHandleKind resource kind and GenericIoApicDeviceHandle - Add async resolver that registers line interrupt targets - Add IoApicRoutingResolver platform resolver in vmm_core - Make num_entries constant (IOAPIC_NUM_ENTRIES = 24) - Remove GenericIoApicDeps from base_chipset macro and workers - Wire up resolver registration in both dispatch.rs and worker.rs
8861f2c to
7f3e97f
Compare
ioapic_routing() is only available on x86_64 (gated on HvlitePartition trait and X86Partition trait). The resolver registration was missing the cfg gate, breaking all aarch64 CI targets.
284c357 to
1d78df3
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 12 out of 13 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
vm/devices/chipset/src/ioapic/mod.rs:29
use std::fmt::Debug;appears to be unused now that the localIoApicRoutingtrait (and itsDebugimpl) was removed in favor ofchipset_resources::ioapic::IoApicRouting. With warnings denied in CI, this unused import will fail the build; please remove it (or reference it explicitly if still needed).
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.
Uh oh!
There was an error while loading. Please reload this page.