Define a prefetchable memory window and allocate virtio BARs from mmio32 instead of mmio64 - #6163
Open
ilstam wants to merge 3 commits into
Open
Define a prefetchable memory window and allocate virtio BARs from mmio32 instead of mmio64#6163ilstam wants to merge 3 commits into
ilstam wants to merge 3 commits into
Conversation
The virtio-pci capability BAR is a non-prefetchable BAR currently allocated from the [256 GiB, 512 GiB) range managed by the mmio64 allocator. Future patches will add PCIe root ports to the bus topology. Each root port defines its own prefetchable and non-prefetchable memory windows and all resources behind a root port must be within that window. The non-prefetchable memory registers of root ports can only describe memory below 4GiB (there is no restriction for prefetchable memory). Therefore non-prefetchable BARs must be allocated from the mmio32 allocator. Use the mmio32 allocator instead of the mmio64 allocator for virtio-pci non-prefetchable BARs. Signed-off-by: Ilias Stamatis <ilstam@amazon.com>
Firecracker advertises two host bridge memory windows: a 32-bit one below 4 GiB and a 64-bit one at 256 GiB. Both are currently advertised as non-prefetchable. In future commits we will add support for pass-through PCIe devices with prefetchable BARs. Mark the 64-bit MMIO window as prefetchable in preparation for that. Signed-off-by: Ilias Stamatis <ilstam@amazon.com>
PciRoot models the host bridge that sits at 00:00.0. Rename it to PciHostBridge so it is not confused with the PCIe root ports added in subsequent patches. While at it rename PciRootError to PciBusError too. Its variants are about allocating device slots on a bus, not about the host bridge, and "root" would be ambiguous once root ports exist. Signed-off-by: Ilias Stamatis <ilstam@amazon.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #6163 +/- ##
=======================================
Coverage 83.06% 83.06%
=======================================
Files 277 277
Lines 31019 31019
=======================================
Hits 25767 25767
Misses 5252 5252
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
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
tools/devtool checkbuild --allto verify that the PR passesbuild checks on all supported architectures.
tools/devtool checkstyleto verify that the PR passes theautomated style checks.
how they are solving the problem in a clear and encompassing way.
in the PR.
CHANGELOG.md.Runbook for Firecracker API changes.
integration tests.
TODO.rust-vmm.