This patch set is based on:
iommu.git / next branch and the following patch that Magnus-san sent:
[patch v6 00/07] iommu/ipmmu-vmsa: ipmmu multi-arch update v6
R-Car Gen3 IPMMU has an issue that will mistake an address translation
if IMCTR.FLUSH is set while some related devices that on the same domain
are running.
To avoid this, we have some choices but any ideas are not perfect...
1) IMUCTR.FLUSH of the connected device is set after the device stopped.
- For now, IPMMU driver cannot know the dev pointer in map/unmap timing.
So, we cannot implement such a code.
2) IMCTR.FLUSH is set after all devices are unmapped on the domain.
- In any cases, before DMA API's "unmap" calling, the device should be stopped.
However, some device drivers (e.g. USB EHCI) don't do so.
- If we have a special API to set the register and call the API on each
device drivers, maybe we can avoid the issue. But, I think it is not
acceptable in upstream...
Anyway, this patch set has the idea 2) above to avoid the issue.
But, I'm not sure, this is good or not. So, I marked this patch set as "RFC".
Magnus Damm (2):
iommu: dma: track mapped iova
iommu: dma: iommu iova domain reset
Yoshihiro Shimoda (2):
iommu: iova: use __alloc_percpu_gfp() with GFP_NOWAIT in
init_iova_rcaches()
iommu: ipmmu-vmsa: enable force_reset_when_empty
drivers/iommu/dma-iommu.c | 61 +++++++++++++++++++++++++++++++++++++++++-----
drivers/iommu/iova.c | 13 +++++++++-
drivers/iommu/ipmmu-vmsa.c | 16 ++++++++++--
include/linux/iommu.h | 4 +++
include/linux/iova.h | 1 +
5 files changed, 86 insertions(+), 9 deletions(-)
--
1.9.1
_______________________________________________
iommu mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/iommu