SMMU/IOMMU translates the DMA addresses issued by peripherals into CPU physical addresses.
IOVA should be DMA'able address, it has context to specific device behind an IOMMU. The cpu is not aware of this.
You're system may be coherent but your device which required DMA'ble address is behind IOMMU/SMMU, it will need bus address which it is aware of it.
virt_to_phys gives PA thats bound to CPU physical address.
IOVA is virtual address which will be translated to BUS address by IOMMU.
If the address your looking is to do DMA then use the standard APIs which indirectly programs the IOMMU PTEs to make sure the smooth transactions.