Lines Matching defs:iova

305  * rk3288 iova (IOMMU Virtual Address) format
321 static u32 rk_iova_dte_index(dma_addr_t iova)
323 return (u32)(iova & RK_IOVA_DTE_MASK) >> RK_IOVA_DTE_SHIFT;
326 static u32 rk_iova_pte_index(dma_addr_t iova)
328 return (u32)(iova & RK_IOVA_PTE_MASK) >> RK_IOVA_PTE_SHIFT;
331 static u32 rk_iova_page_offset(dma_addr_t iova)
333 return (u32)(iova & RK_IOVA_PAGE_MASK) >> RK_IOVA_PAGE_SHIFT;
368 dma_addr_t iova;
370 for (iova = iova_start; iova < iova_end; iova += SPAGE_SIZE)
371 rk_iommu_write(iommu->bases[i], RK_MMU_ZAP_ONE_LINE, iova);
534 static void log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova)
548 dte_index = rk_iova_dte_index(iova);
549 pte_index = rk_iova_pte_index(iova);
550 page_offset = rk_iova_page_offset(iova);
573 dev_err(iommu->dev, "iova = %pad: dte_index: %#03x pte_index: %#03x page_offset: %#03x\n",
574 &iova, dte_index, pte_index, page_offset);
586 dma_addr_t iova;
603 iova = rk_iommu_read(iommu->bases[i], RK_MMU_PAGE_FAULT_ADDR);
613 &iova,
616 log_iova(iommu, i, iova);
624 report_iommu_fault(iommu->domain, iommu->dev, iova,
634 dev_err(iommu->dev, "BUS_ERROR occurred at %pad\n", &iova);
651 dma_addr_t iova)
661 dte = rk_domain->dt[rk_iova_dte_index(iova)];
667 pte = page_table[rk_iova_pte_index(iova)];
671 phys = rk_ops->pt_address(pte) + rk_iova_page_offset(iova);
679 dma_addr_t iova, size_t size)
684 /* shootdown these iova from all iommus using this domain */
699 rk_iommu_zap_lines(iommu, iova, size);
708 dma_addr_t iova, size_t size)
710 rk_iommu_zap_iova(rk_domain, iova, SPAGE_SIZE);
712 rk_iommu_zap_iova(rk_domain, iova + size - SPAGE_SIZE,
717 dma_addr_t iova)
726 dte_index = rk_iova_dte_index(iova);
776 dma_addr_t pte_dma, dma_addr_t iova,
799 * Zap the first and last iova to evict from iotlb any previously
801 * We only zap the first and last iova, since only they could have
804 rk_iommu_zap_iova_first_last(rk_domain, iova, size);
812 iova += pte_count * SPAGE_SIZE;
814 pr_err("iova: %pad already mapped to %pa cannot remap to phys: %pa prot: %#x\n",
815 &iova, &page_phys, &paddr, prot);
826 dma_addr_t pte_dma, iova = (dma_addr_t)_iova;
834 * pgsize_bitmap specifies iova sizes that fit in one page table
837 * Since iommu_map() guarantees that both iova and size will be
840 page_table = rk_dte_get_page_table(rk_domain, iova);
846 dte_index = rk_domain->dt[rk_iova_dte_index(iova)];
847 pte_index = rk_iova_pte_index(iova);
851 ret = rk_iommu_map_iova(rk_domain, pte_addr, pte_dma, iova,
866 dma_addr_t pte_dma, iova = (dma_addr_t)_iova;
875 * pgsize_bitmap specifies iova sizes that fit in one page table
878 * Since iommu_unmap() guarantees that both iova and size will be
881 dte = rk_domain->dt[rk_iova_dte_index(iova)];
882 /* Just return 0 if iova is unmapped */
889 pte_addr = (u32 *)phys_to_virt(pt_phys) + rk_iova_pte_index(iova);
890 pte_dma = pt_phys + rk_iova_pte_index(iova) * sizeof(u32);
895 /* Shootdown iotlb entries for iova range that was just unmapped */
896 rk_iommu_zap_iova(rk_domain, iova, unmap_size);