On Thu, Apr 30, 2020 at 11:15 PM Max Gurtovoy <maxg@xxxxxxxxxxxx> wrote: > > Define the map_resource/unmap_resource callbacks for the dma_iommu_ops > used by several powerpc platforms. The map_resource callback is called > when trying to map a mmio resource through the dma_map_resource() > driver API. > > For now, the callback returns an invalid address for devices using > translations, but will "direct" map the resource when in bypass > mode. Previous behavior for dma_map_resource() was to always return an > invalid address. > > We also call an optional platform-specific controller op in > case some setup is needed for the platform. Hey Max, Sorry for not getting to this sooner. Fred has been dutifully nagging me to look at it, but people are constantly throwing stuff at me so it's slipped through the cracks. Anyway, the changes here are fine IMO. The only real suggestion I have is that we might want to move the direct / bypass mode check out of the arch/powerpc/kernel/dma-iommu.c and into the PHB specific function in pci_controller_ops. I don't see any real reason p2p support should be limited to devices using bypass mode since the data path is the same for translated and untranslated DMAs. We do need to impose that restriction for OPAL / PowerNV IODA PHBs due to the implementation of the opal_pci_set_p2p() has the side effect of forcing the TVE into no-translate mode. However, that's a platform issue so the restriction should be imposed in platform code. I'd like to fix that, but I'd prefer to do it as a follow up change since I need to have a think about how to fix the firmware bits. Reviewed-by: Oliver O'Halloran <oohall@xxxxxxxxx>