Handling device identity mappings in the IOMMU API

This proposal has been accepted as a session.


One Line Summary

Some devices request identity mapping of ranges via firmware interfaces, which seems contrary to device use via the IOMMU API. Can we support these conflicting requirements?


Platforms have the ability to request that the IOMMU provide identity mappings for various memory ranges per device. On Intel VT-d this is done via the RMRR entry in the DMAR table. Some vendors abuse this interface to create back channels where devices can share sensor data outside of the scope of the running operating system. In other cases, the RMRRs are intended only to provide continuity of memory access for the device across boot, and in some cases the mapping is irrelevant to the device after boot.

In this discussion we’ll talk about how whether such requirements should preclude a device from participating in the IOMMU API or how we might modify the API to allow for it.

Slides: http://awilliam.github.io/presentations/LPC-IOMMU-VFIO-uconf-RMRR-2014/#/

Presentation Materials