[DRAFT] Prerequisite for proper device manager. #4509
Draft
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.
Reason
Currently Firecracker does not have a single
DeviceManger
but instead hasMMIODeviceManager
andPortIODeviceManager
(only for x86). This design works for now, but with an addition of ACPI devices in #4428 and #4487 it starts to show limitations. The biggest problem is a resource allocation sharing for interrupts and memory ranges.In order to fix this, this PR clears current device management (mainly MMIO) code in attempt to move all unnecessary code out of it. This will allow creation of a proper
DeviceManger
which will have all resource allocators (irqs, memory ranges) and will handle their allocation for MMIO and ACPI devices.This PR does not achieve this goal yet. Next steps would be to move all
attach_*_device
methods frombuilder.rs
intoDeviceManager
.Main idea can be visualized like this:
As an additional point, with single
DeviceManager
the storing of devices information in a snapshot will become more manageable, as we will need to store only 1 struct, instead of several.Changes
TBD
License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following Developer
Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md
.PR Checklist
PR.
CHANGELOG.md
.TODO
s link to an issue.contribution quality standards.
rust-vmm
.