GIPC: Introduce G-stage page table In Process Context (GIPC) capability #413
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.
The current G-stage page table resides within the device context, bound specifically to a PCI-e function. Consequently, this setup limits the function's capability to serve only a single virtual machine.
PCI-e introduces SR-IOV to address this issue, yet it comes with constraints: SR-IOV consumes PCI configuration address space and must be configured during the PCI device enumeration process. Its finite capacity and inflexibility make it ill-suited for fulfilling the needs of higher-density I/O environments.
The number of use cases for virtualizing DMA devices that do not have built-in SR_IOV capability is increasing. The Linux VFIO driver framework provides device-agnostic and unified APIs for direct device access. This framework is called as Virtual Function I/O (VFIO) Mediated devices.
The GIPC of riscv IOMMU could bind any mediated devices to any virtual machine without SR-IOV.
Here is the abstract of this approach:
TODO: