I'm totally not following this argument. This has nothing to do with IOMMU or not. If you have an IOMMU, the dma code will know where the pages are anyway, so it can always map them into user space. The dma code might have an easier way to do it other than follwoing the page tables.
Ah. Sorry for that. I mixed dma_alloc_* up with dma_map_*. I identified the reason why mmap_* in dma_map_ops is required. You mean that nothing but DMA API knows what pages will be mapped to user space. Thanks anyway.
KyongHo.