Messages in this thread | | | Date | Sat, 7 Mar 2020 15:21:44 +0100 | From | Christoph Hellwig <> | Subject | Re: [PATCH 3/6] iommu/vt-d: Don't force 32bit devices to uses DMA domain |
| |
On Sat, Mar 07, 2020 at 02:20:11PM +0800, Lu Baolu wrote: > Currently, if a 32bit device initially uses an identity domain, > Intel IOMMU driver will convert it forcibly to a DMA one if its > address capability is not enough for the whole system memory. > The motivation was to overcome the overhead caused by possible > bounced buffer. > > Unfortunately, this improvement has led to many problems. For > example, some 32bit devices are required to use an identity > domain, forcing them to use DMA domain will cause the device > not to work anymore. On the other hand, the VMD sub-devices > share a domain but each sub-device might have different address > capability. Forcing a VMD sub-device to use DMA domain blindly > will impact the operation of other sub-devices without any > notification. Further more, PCI aliased devices (PCI bridge > and all devices beneath it, VMD devices and various devices > quirked with pci_add_dma_alias()) must use the same domain. > Forcing one device to switch to DMA domain during runtime > will cause in-fligh DMAs for other devices to abort or target > to other memory which might cause undefind system behavior.
I still don't like the idea to enforce either a strict dynamic IOMMU mapping or an identify mapping mode.
Can we add a new AUTO domain which will allow using the identity mapping when available? That somewhat matches the existing x86 default, and also what powerpc does. I have a series to lift that bypass mode into the core dma-mapping code that I need to repost, which I think would be suitable for intel-iommu as well.
| |