-
Type: Bug
-
Status: Resolved
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: virtio 1.0 cs04
-
Fix Version/s: virtio 1.1 cs01
-
Labels:None
-
Environment:
Reported-by: Will Deacon <will.deacon@arm.com>
-
Proposal:
On most virtio systems, physical addresses are provided from the driver
to the device and subsequently used to access memory directly. However,
some systems feature an IOMMU that complicates things slightly:
- The IOMMU might require configuration for DMA to work at all. Once
configured, the driver must pass bus addresses to the device, which
are then translated by the IOMMU into physical addresses in memory.
- The IOMMU might be bypassed by virtio DMA. In this case, physical
addresses must still be provided to the device by the driver, even
though an IOMMU appears to be present.
This has been solved by the addition of a new reserved feature bit,
VIRTIO_F_IOMMU_PLATFORM, to describe the two cases above. Legacy systems
will not negotiate the feature, and therefore continue to operate
directly on physical addresses.