/openbmc/linux/drivers/iommu/ |
H A D | io-pgtable-arm.c | 679 unsigned long iova) in arm_lpae_iova_to_phys() argument 1163 unsigned long iova; in arm_lpae_run_tests() local 1193 iova = 0; in arm_lpae_run_tests() 1197 if (ops->map_pages(ops, iova, iova, size, 1, in arm_lpae_run_tests() 1204 if (!ops->map_pages(ops, iova, iova + size, size, 1, in arm_lpae_run_tests() 1209 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests() 1212 iova += SZ_1G; in arm_lpae_run_tests() 1229 iova = 0; in arm_lpae_run_tests() 1240 if (ops->map_pages(ops, iova, iova, size, 1, in arm_lpae_run_tests() 1244 if (ops->iova_to_phys(ops, iova + 42) != (iova + 42)) in arm_lpae_run_tests() [all …]
|
H A D | tegra-smmu.c | 223 unsigned long iova) in smmu_flush_tlb_section() argument 238 unsigned long iova) in smmu_flush_tlb_group() argument 556 return pt + iova_pt_index(iova); in tegra_smmu_pte_offset() 580 unsigned int pde = iova_pd_index(iova); in as_get_pte() 624 unsigned int pde = iova_pd_index(iova); in tegra_smmu_pte_put_use() 636 tegra_smmu_set_pde(as, iova, 0); in tegra_smmu_pte_put_use() 660 unsigned long iova, gfp_t gfp, in as_get_pde_page() argument 663 unsigned int pde = iova_pd_index(iova); in as_get_pde_page() 719 tegra_smmu_pte_get_use(as, iova); in __tegra_smmu_map() 748 tegra_smmu_pte_put_use(as, iova); in __tegra_smmu_unmap() [all …]
|
H A D | s390-iommu.c | 241 unsigned long iova, size_t size) in s390_iommu_iotlb_sync_map() argument 251 iova, size); in s390_iommu_iotlb_sync_map() 315 unsigned long iova, phys_addr_t paddr, in s390_iommu_map_pages() argument 330 if (!IS_ALIGNED(iova | paddr, pgsize)) in s390_iommu_map_pages() 348 dma_addr_t iova) in s390_iommu_iova_to_phys() argument 356 if (iova < domain->geometry.aperture_start || in s390_iommu_iova_to_phys() 357 iova > domain->geometry.aperture_end) in s390_iommu_iova_to_phys() 360 rtx = calc_rtx(iova); in s390_iommu_iova_to_phys() 361 sx = calc_sx(iova); in s390_iommu_iova_to_phys() 362 px = calc_px(iova); in s390_iommu_iova_to_phys() [all …]
|
H A D | rockchip-iommu.c | 367 dma_addr_t iova; in rk_iommu_zap_lines() local 369 for (iova = iova_start; iova < iova_end; iova += SPAGE_SIZE) in rk_iommu_zap_lines() 547 dte_index = rk_iova_dte_index(iova); in log_iova() 548 pte_index = rk_iova_pte_index(iova); in log_iova() 585 dma_addr_t iova; in rk_iommu_irq() local 612 &iova, in rk_iommu_irq() 615 log_iova(iommu, i, iova); in rk_iommu_irq() 650 dma_addr_t iova) in rk_iommu_iova_to_phys() argument 707 dma_addr_t iova, size_t size) in rk_iommu_zap_iova_first_last() argument 716 dma_addr_t iova) in rk_dte_get_page_table() argument [all …]
|
H A D | virtio-iommu.c | 324 mapping->iova.start = iova; in viommu_add_mapping() 325 mapping->iova.last = end; in viommu_add_mapping() 345 u64 iova, u64 end) in viommu_del_mappings() argument 360 if (mapping->iova.start < iova) in viommu_del_mappings() 367 unmapped += mapping->iova.last - mapping->iova.start + 1; in viommu_del_mappings() 391 iova = ALIGN(iova, granule); in viommu_domain_map_identity() 412 iova = resv_end + 1; in viommu_domain_map_identity() 415 ret = viommu_add_mapping(vdomain, iova, limit, (phys_addr_t)iova, in viommu_domain_map_identity() 868 unmapped = viommu_del_mappings(vdomain, iova, iova + size - 1); in viommu_unmap_pages() 897 node = interval_tree_iter_first(&vdomain->mappings, iova, iova); in viommu_iova_to_phys() [all …]
|
H A D | sprd-iommu.c | 288 static int sprd_iommu_map(struct iommu_domain *domain, unsigned long iova, in sprd_iommu_map() argument 306 if (iova < start || (iova + size) > (end + 1)) { in sprd_iommu_map() 308 iova, size); in sprd_iommu_map() 312 pgt_base_iova = dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT); in sprd_iommu_map() 325 static size_t sprd_iommu_unmap(struct iommu_domain *domain, unsigned long iova, in sprd_iommu_unmap() argument 336 if (iova < start || (iova + size) > (end + 1)) in sprd_iommu_unmap() 339 pgt_base_iova = dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT); in sprd_iommu_unmap() 349 unsigned long iova, size_t size) in sprd_iommu_sync_map() argument 370 dma_addr_t iova) in sprd_iommu_iova_to_phys() argument 378 if (WARN_ON(iova < start || iova > end)) in sprd_iommu_iova_to_phys() [all …]
|
H A D | dma-iommu.c | 38 dma_addr_t iova; member 693 if (iova) in iommu_dma_alloc_iova() 752 dma_addr_t iova; in __iommu_dma_map() local 761 if (!iova) in __iommu_dma_map() 845 dma_addr_t iova; in __iommu_dma_alloc_noncontiguous() local 870 if (!iova) in __iommu_dma_alloc_noncontiguous() 1084 return iova; in iommu_dma_map_page() 1251 dma_addr_t iova; in iommu_dma_map_sg() local 1336 if (!iova) { in iommu_dma_map_sg() 1685 if (!iova) in iommu_dma_get_msi_page() [all …]
|
/openbmc/linux/include/linux/ |
H A D | io-pgtable.h | 43 void (*tlb_flush_walk)(unsigned long iova, size_t size, size_t granule, 46 unsigned long iova, size_t granule, void *cookie); 161 int (*map_pages)(struct io_pgtable_ops *ops, unsigned long iova, 164 size_t (*unmap_pages)(struct io_pgtable_ops *ops, unsigned long iova, 168 unsigned long iova); 224 io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, in io_pgtable_tlb_flush_walk() argument 228 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 233 struct iommu_iotlb_gather * gather, unsigned long iova, in io_pgtable_tlb_add_page() argument 237 iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); in io_pgtable_tlb_add_page()
|
H A D | iommu.h | 355 dma_addr_t iova); 483 unsigned long iova, size_t size, 542 unsigned long iova, int flags); 572 unsigned long iova, size_t size) in iommu_iotlb_gather_is_disjoint() argument 592 unsigned long iova, size_t size) in iommu_iotlb_gather_add_range() argument 594 unsigned long end = iova + size - 1; in iommu_iotlb_gather_add_range() 596 if (gather->start > iova) in iommu_iotlb_gather_add_range() 597 gather->start = iova; in iommu_iotlb_gather_add_range() 615 unsigned long iova, size_t size) in iommu_iotlb_gather_add_page() argument 784 unsigned long iova, size_t size) in iommu_unmap() argument [all …]
|
H A D | iommufd.h | 34 void (*unmap)(void *data, unsigned long iova, unsigned long length); 63 int iommufd_access_pin_pages(struct iommufd_access *access, unsigned long iova, 67 unsigned long iova, unsigned long length); 68 int iommufd_access_rw(struct iommufd_access *access, unsigned long iova, 84 unsigned long iova, in iommufd_access_pin_pages() argument 93 unsigned long iova, in iommufd_access_unpin_pages() argument 98 static inline int iommufd_access_rw(struct iommufd_access *access, unsigned long iova, in iommufd_access_rw() argument
|
/openbmc/linux/tools/testing/selftests/iommu/ |
H A D | iommufd_utils.h | 221 size_t length, __u64 *iova, unsigned int flags) in _test_ioctl_ioas_map() argument 233 cmd.iova = *iova; in _test_ioctl_ioas_map() 236 *iova = cmd.iova; in _test_ioctl_ioas_map() 260 __u64 __iova = iova; \ 271 __u64 __iova = iova; \ 281 static int _test_ioctl_ioas_unmap(int fd, unsigned int ioas_id, uint64_t iova, in _test_ioctl_ioas_unmap() argument 287 .iova = iova, in _test_ioctl_ioas_unmap() 297 #define test_ioctl_ioas_unmap(iova, length) \ argument 298 ASSERT_EQ(0, _test_ioctl_ioas_unmap(self->fd, self->ioas_id, iova, \ 302 ASSERT_EQ(0, _test_ioctl_ioas_unmap(self->fd, ioas_id, iova, length, \ [all …]
|
H A D | iommufd.c | 780 for (access_cmd.access_rw.iova = iova + PAGE_SIZE - 50; in check_access_rw() 781 access_cmd.access_rw.iova < iova + PAGE_SIZE + 50; in check_access_rw() 814 access_cmd.access_rw.iova = iova; in check_access_rw() 827 __u64 iova; in TEST_F() local 841 __u64 iova; in TEST_F() local 907 __u64 iova; in TEST_F() local 967 __u64 iova; in TEST_F() local 1168 __u64 iova; in TEST_F() local 1190 __u64 iova; in TEST_F() local 1239 __u64 iova; in TEST_F() local [all …]
|
/openbmc/linux/drivers/iommu/iommufd/ |
H A D | io_pagetable.h | 102 unsigned long iova) in iopt_area_start_byte() argument 105 WARN_ON(iova < iopt_area_iova(area) || in iopt_area_start_byte() 106 iova > iopt_area_last_iova(area)); in iopt_area_start_byte() 107 return (iova - iopt_area_iova(area)) + area->page_offset + in iopt_area_start_byte() 112 unsigned long iova) in iopt_area_iova_to_index() argument 114 return iopt_area_start_byte(area, iova) / PAGE_SIZE; in iopt_area_iova_to_index() 154 unsigned long iova, 168 #define iopt_for_each_contig_area(iter, area, iopt, iova, last_iova) \ argument 169 for (area = iopt_area_contig_init(iter, iopt, iova, last_iova); area; \
|
H A D | ioas.c | 203 unsigned long iova = cmd->iova; in iommufd_ioas_map() local 213 if (cmd->iova >= ULONG_MAX || cmd->length >= ULONG_MAX) in iommufd_ioas_map() 222 rc = iopt_map_user_pages(ucmd->ictx, &ioas->iopt, &iova, in iommufd_ioas_map() 228 cmd->iova = iova; in iommufd_ioas_map() 242 unsigned long iova; in iommufd_ioas_copy() local 273 iova = cmd->dst_iova; in iommufd_ioas_copy() 274 rc = iopt_map_pages(&dst_ioas->iopt, &pages_list, cmd->length, &iova, in iommufd_ioas_copy() 279 cmd->dst_iova = iova; in iommufd_ioas_copy() 299 if (cmd->iova == 0 && cmd->length == U64_MAX) { in iommufd_ioas_unmap() 304 if (cmd->iova >= ULONG_MAX || cmd->length >= ULONG_MAX) { in iommufd_ioas_unmap() [all …]
|
H A D | io_pagetable.c | 32 unsigned long iova, in iopt_area_contig_init() argument 37 iter->cur_iova = iova; in iopt_area_contig_init() 39 iter->area = iopt_area_iter_first(iopt, iova, iova); in iopt_area_contig_init() 156 *iova = used_span.start_hole; in iopt_alloc_iova() 170 if ((iova & (iopt->iova_alignment - 1))) in iopt_check_iova() 204 area->node.start = iova; in iopt_insert_area() 242 unsigned long iova; in iopt_alloc_area_pages() local 281 iova = *dst_iova; in iopt_alloc_area_pages() 287 iova += elm->length; in iopt_alloc_area_pages() 1001 unsigned long new_start = iova + 1; in iopt_area_split() [all …]
|
/openbmc/linux/drivers/media/platform/nvidia/tegra-vde/ |
H A D | vde.h | 84 struct iova *iova; member 116 struct iova_domain iova; member 117 struct iova *iova_resv_static_addresses; 118 struct iova *iova_resv_last_page; 162 struct iova *iova[VB2_MAX_PLANES]; member 191 struct iova **iovap, 193 void tegra_vde_iommu_unmap(struct tegra_vde *vde, struct iova *iova);
|
/openbmc/qemu/hw/virtio/ |
H A D | vhost-vdpa.c | 98 msg.iotlb.iova = iova; in vhost_vdpa_dma_map() 130 msg.iotlb.iova = iova; in vhost_vdpa_dma_unmap() 202 hwaddr iova = iotlb->iova + iommu->iommu_offset; in vhost_vdpa_iommu_map_notify() local 312 hwaddr iova; in vhost_vdpa_listener_region_add() local 338 if (int128_ge(int128_make64(iova), llend)) { in vhost_vdpa_listener_region_add() 367 iova = mem_region.iova; in vhost_vdpa_listener_region_add() 400 hwaddr iova; in vhost_vdpa_listener_region_del() local 449 iova = result->iova; in vhost_vdpa_listener_region_del() 466 iova += int128_get64(llsize); in vhost_vdpa_listener_region_del() 1158 addr->desc_user_addr = driver_region.iova; in vhost_vdpa_svq_map_rings() [all …]
|
/openbmc/linux/drivers/gpu/drm/msm/ |
H A D | msm_gem_vma.c | 51 aspace->mmu->funcs->unmap(aspace->mmu, vma->iova, size); in msm_gem_vma_purge() 64 if (GEM_WARN_ON(!vma->iova)) in msm_gem_vma_map() 84 ret = aspace->mmu->funcs->map(aspace->mmu, vma->iova, sgt, size, prot); in msm_gem_vma_map() 101 if (vma->iova) in msm_gem_vma_close() 105 vma->iova = 0; in msm_gem_vma_close() 133 if (GEM_WARN_ON(vma->iova)) in msm_gem_vma_init() 145 vma->iova = vma->node.start; in msm_gem_vma_init()
|
H A D | msm_rd.c | 311 uint64_t iova, uint32_t size, bool full) in snapshot_buf() argument 317 if (iova) { in snapshot_buf() 318 offset = iova - submit->bos[idx].iova; in snapshot_buf() 320 iova = submit->bos[idx].iova; in snapshot_buf() 329 (uint32_t[3]){ iova, size, iova >> 32 }, 12); in snapshot_buf() 395 submit->cmd[i].iova, szd * 4, true); in msm_rd_dump_submit() 400 uint64_t iova = submit->cmd[i].iova; in msm_rd_dump_submit() local 413 (uint32_t[3]){ iova, szd, iova >> 32 }, 12); in msm_rd_dump_submit()
|
/openbmc/linux/drivers/infiniband/sw/rdmavt/ |
H A D | trace_mr.h | 27 __field(u64, iova) 40 __entry->iova = mr->iova; 53 __entry->iova, 148 __field(u64, iova) 157 __entry->ibmr_iova = ibmr->iova; 158 __entry->iova = to_imr(ibmr)->mr.iova; 168 __entry->iova,
|
/openbmc/linux/drivers/soc/qcom/ |
H A D | qcom-geni-se.c | 701 dma_addr_t *iova) in geni_se_tx_dma_prep() argument 708 *iova = dma_map_single(wrapper->dev, buf, len, DMA_TO_DEVICE); in geni_se_tx_dma_prep() 709 if (dma_mapping_error(wrapper->dev, *iova)) in geni_se_tx_dma_prep() 712 geni_se_tx_init_dma(se, *iova, len); in geni_se_tx_dma_prep() 753 dma_addr_t *iova) in geni_se_rx_dma_prep() argument 761 if (dma_mapping_error(wrapper->dev, *iova)) in geni_se_rx_dma_prep() 764 geni_se_rx_init_dma(se, *iova, len); in geni_se_rx_dma_prep() 781 if (!dma_mapping_error(wrapper->dev, iova)) in geni_se_tx_dma_unprep() 782 dma_unmap_single(wrapper->dev, iova, len, DMA_TO_DEVICE); in geni_se_tx_dma_unprep() 798 if (!dma_mapping_error(wrapper->dev, iova)) in geni_se_rx_dma_unprep() [all …]
|
/openbmc/qemu/util/ |
H A D | vfio-helpers.c | 41 uint64_t iova; member 593 IOVAMapping m = {.host = host, .size = size, .iova = iova}; in qemu_vfio_add_mapping() 620 .iova = iova, in qemu_vfio_do_mapping() 624 trace_qemu_vfio_do_mapping(s, host, iova, size); in qemu_vfio_do_mapping() 643 .iova = mapping->iova, in qemu_vfio_undo_mapping() 696 *iova = s->low_water_mark; in qemu_vfio_find_fixed_iova() 720 *iova = s->high_water_mark - size; in qemu_vfio_find_temp_iova() 721 s->high_water_mark = *iova; in qemu_vfio_find_temp_iova() 794 if (iova) { in qemu_vfio_dma_map() 795 *iova = iova0; in qemu_vfio_dma_map() [all …]
|
/openbmc/linux/drivers/iommu/amd/ |
H A D | io_pgtable.c | 30 static void v1_tlb_flush_walk(unsigned long iova, size_t size, in v1_tlb_flush_walk() argument 36 unsigned long iova, size_t granule, in v1_tlb_add_page() argument 363 static int iommu_v1_map_pages(struct io_pgtable_ops *ops, unsigned long iova, in iommu_v1_map_pages() argument 373 BUG_ON(!IS_ALIGNED(iova, pgsize)); in iommu_v1_map_pages() 382 pte = alloc_pte(dom, iova, pgsize, NULL, gfp, &updated); in iommu_v1_map_pages() 408 iova += pgsize; in iommu_v1_map_pages() 439 unsigned long iova, in iommu_v1_unmap_pages() argument 454 pte = fetch_pte(pgtable, iova, &unmap_size); in iommu_v1_unmap_pages() 465 iova = (iova & ~(unmap_size - 1)) + unmap_size; in iommu_v1_unmap_pages() 478 pte = fetch_pte(pgtable, iova, &pte_pgsize); in iommu_v1_iova_to_phys() [all …]
|
/openbmc/linux/drivers/net/ethernet/marvell/octeontx2/af/ |
H A D | common.h | 40 dma_addr_t iova; member 63 qmem->base = dma_alloc_attrs(dev, qmem->alloc_sz, &qmem->iova, in qmem_alloc() 70 aligned_addr = ALIGN((u64)qmem->iova, OTX2_ALIGN); in qmem_alloc() 71 qmem->align = (aligned_addr - qmem->iova); in qmem_alloc() 73 qmem->iova += qmem->align; in qmem_alloc() 85 qmem->iova - qmem->align, in qmem_free()
|
/openbmc/linux/drivers/iommu/arm/arm-smmu/ |
H A D | qcom_iommu.c | 170 iova = (iova >> 12) << 12; in qcom_iommu_tlb_inv_range_nosync() 171 iova |= ctx->asid; in qcom_iommu_tlb_inv_range_nosync() 173 iommu_writel(ctx, reg, iova); in qcom_iommu_tlb_inv_range_nosync() 174 iova += granule; in qcom_iommu_tlb_inv_range_nosync() 187 unsigned long iova, size_t granule, in qcom_iommu_tlb_add_page() argument 203 u64 iova; in qcom_iommu_fault() local 211 iova = iommu_readq(ctx, ARM_SMMU_CB_FAR); in qcom_iommu_fault() 213 if (!report_iommu_fault(ctx->domain, ctx->dev, iova, 0)) { in qcom_iommu_fault() 217 fsr, iova, fsynr, ctx->asid); in qcom_iommu_fault() 467 dma_addr_t iova) in qcom_iommu_iova_to_phys() argument [all …]
|