/kernel/linux/linux-5.10/include/linux/ |
H A D | io-pgtable.h | 41 void (*tlb_flush_walk)(unsigned long iova, size_t size, size_t granule, 43 void (*tlb_flush_leaf)(unsigned long iova, size_t size, size_t granule, 46 unsigned long iova, size_t granule, void *cookie); 218 size_t size, size_t granule) in io_pgtable_tlb_flush_walk() 220 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 225 size_t size, size_t granule) in io_pgtable_tlb_flush_leaf() 227 iop->cfg.tlb->tlb_flush_leaf(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_leaf() 233 size_t granule) in io_pgtable_tlb_add_page() 236 iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); in io_pgtable_tlb_add_page() 217 io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, size_t size, size_t granule) io_pgtable_tlb_flush_walk() argument 224 io_pgtable_tlb_flush_leaf(struct io_pgtable *iop, unsigned long iova, size_t size, size_t granule) io_pgtable_tlb_flush_leaf() argument 231 io_pgtable_tlb_add_page(struct io_pgtable *iop, struct iommu_iotlb_gather * gather, unsigned long iova, size_t granule) io_pgtable_tlb_add_page() argument
|
H A D | iova.h | 73 unsigned long granule; /* pfn granularity for this domain */ member 107 return __ffs(iovad->granule); in iova_shift() 112 return iovad->granule - 1; in iova_mask() 122 return ALIGN(size, iovad->granule); in iova_align() 156 void init_iova_domain(struct iova_domain *iovad, unsigned long granule, 234 unsigned long granule, in init_iova_domain() 233 init_iova_domain(struct iova_domain *iovad, unsigned long granule, unsigned long start_pfn) init_iova_domain() argument
|
/kernel/linux/linux-6.6/tools/testing/selftests/dma/ |
H A D | dma_map_benchmark.c | 32 /* default granule 1 PAGESIZE */ in main() 33 int granule = 1; in main() local 59 granule = atoi(optarg); in main() 96 if (granule < 1 || granule > 1024) { in main() 97 fprintf(stderr, "invalid granule size\n"); in main() 114 map.granule = granule; in main() 121 printf("dma mapping benchmark: threads:%d seconds:%d node:%d dir:%s granule: %d\n", in main() 122 threads, seconds, node, dir[directions], granule); in main() [all...] |
/kernel/linux/linux-6.6/include/linux/ |
H A D | iova.h | 33 unsigned long granule; /* pfn granularity for this domain */ member 50 return __ffs(iovad->granule); in iova_shift() 55 return iovad->granule - 1; in iova_mask() 65 return ALIGN(size, iovad->granule); in iova_align() 95 void init_iova_domain(struct iova_domain *iovad, unsigned long granule, 148 unsigned long granule, in init_iova_domain() 147 init_iova_domain(struct iova_domain *iovad, unsigned long granule, unsigned long start_pfn) init_iova_domain() argument
|
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); 225 size_t size, size_t granule) in io_pgtable_tlb_flush_walk() 228 iop->cfg.tlb->tlb_flush_walk(iova, size, granule, iop->cookie); in io_pgtable_tlb_flush_walk() 234 size_t granule) in io_pgtable_tlb_add_page() 237 iop->cfg.tlb->tlb_add_page(gather, iova, granule, iop->cookie); in io_pgtable_tlb_add_page() 224 io_pgtable_tlb_flush_walk(struct io_pgtable *iop, unsigned long iova, size_t size, size_t granule) io_pgtable_tlb_flush_walk() argument 232 io_pgtable_tlb_add_page(struct io_pgtable *iop, struct iommu_iotlb_gather * gather, unsigned long iova, size_t granule) io_pgtable_tlb_add_page() argument
|
H A D | map_benchmark.h | 29 __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */ member
|
/kernel/linux/linux-5.10/drivers/iommu/arm/arm-smmu/ |
H A D | arm-smmu.c | 281 size_t granule, void *cookie, int reg) in arm_smmu_tlb_inv_range_s1() 296 iova += granule; in arm_smmu_tlb_inv_range_s1() 297 } while (size -= granule); in arm_smmu_tlb_inv_range_s1() 303 iova += granule >> 12; in arm_smmu_tlb_inv_range_s1() 304 } while (size -= granule); in arm_smmu_tlb_inv_range_s1() 309 size_t granule, void *cookie, int reg) in arm_smmu_tlb_inv_range_s2() 324 iova += granule >> 12; in arm_smmu_tlb_inv_range_s2() 325 } while (size -= granule); in arm_smmu_tlb_inv_range_s2() 329 size_t granule, void *cookie) in arm_smmu_tlb_inv_walk_s1() 331 arm_smmu_tlb_inv_range_s1(iova, size, granule, cooki in arm_smmu_tlb_inv_walk_s1() 280 arm_smmu_tlb_inv_range_s1(unsigned long iova, size_t size, size_t granule, void *cookie, int reg) arm_smmu_tlb_inv_range_s1() argument 308 arm_smmu_tlb_inv_range_s2(unsigned long iova, size_t size, size_t granule, void *cookie, int reg) arm_smmu_tlb_inv_range_s2() argument 328 arm_smmu_tlb_inv_walk_s1(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_walk_s1() argument 336 arm_smmu_tlb_inv_leaf_s1(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_leaf_s1() argument 344 arm_smmu_tlb_add_page_s1(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s1() argument 352 arm_smmu_tlb_inv_walk_s2(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_walk_s2() argument 360 arm_smmu_tlb_inv_leaf_s2(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_leaf_s2() argument 368 arm_smmu_tlb_add_page_s2(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s2() argument 376 arm_smmu_tlb_inv_any_s2_v1(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_any_s2_v1() argument 388 arm_smmu_tlb_add_page_s2_v1(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s2_v1() argument [all...] |
H A D | qcom_iommu.c | 160 size_t granule, bool leaf, void *cookie) in qcom_iommu_tlb_inv_range_nosync() 176 iova += granule; in qcom_iommu_tlb_inv_range_nosync() 177 } while (s -= granule); in qcom_iommu_tlb_inv_range_nosync() 182 size_t granule, void *cookie) in qcom_iommu_tlb_flush_walk() 184 qcom_iommu_tlb_inv_range_nosync(iova, size, granule, false, cookie); in qcom_iommu_tlb_flush_walk() 189 size_t granule, void *cookie) in qcom_iommu_tlb_flush_leaf() 191 qcom_iommu_tlb_inv_range_nosync(iova, size, granule, true, cookie); in qcom_iommu_tlb_flush_leaf() 196 unsigned long iova, size_t granule, in qcom_iommu_tlb_add_page() 199 qcom_iommu_tlb_inv_range_nosync(iova, granule, granule, tru in qcom_iommu_tlb_add_page() 159 qcom_iommu_tlb_inv_range_nosync(unsigned long iova, size_t size, size_t granule, bool leaf, void *cookie) qcom_iommu_tlb_inv_range_nosync() argument 181 qcom_iommu_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) qcom_iommu_tlb_flush_walk() argument 188 qcom_iommu_tlb_flush_leaf(unsigned long iova, size_t size, size_t granule, void *cookie) qcom_iommu_tlb_flush_leaf() argument 195 qcom_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) qcom_iommu_tlb_add_page() argument [all...] |
/kernel/linux/linux-5.10/drivers/iommu/ |
H A D | msm_iommu.c | 140 size_t granule, bool leaf, void *cookie) in __flush_iotlb_range() 160 iova += granule; in __flush_iotlb_range() 161 } while (temp_size -= granule); in __flush_iotlb_range() 172 size_t granule, void *cookie) in __flush_iotlb_walk() 174 __flush_iotlb_range(iova, size, granule, false, cookie); in __flush_iotlb_walk() 178 size_t granule, void *cookie) in __flush_iotlb_leaf() 180 __flush_iotlb_range(iova, size, granule, true, cookie); in __flush_iotlb_leaf() 184 unsigned long iova, size_t granule, void *cookie) in __flush_iotlb_page() 186 __flush_iotlb_range(iova, granule, granule, tru in __flush_iotlb_page() 139 __flush_iotlb_range(unsigned long iova, size_t size, size_t granule, bool leaf, void *cookie) __flush_iotlb_range() argument 171 __flush_iotlb_walk(unsigned long iova, size_t size, size_t granule, void *cookie) __flush_iotlb_walk() argument 177 __flush_iotlb_leaf(unsigned long iova, size_t size, size_t granule, void *cookie) __flush_iotlb_leaf() argument 183 __flush_iotlb_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) __flush_iotlb_page() argument [all...] |
H A D | io-pgtable-arm.c | 680 unsigned long granule, page_sizes; in arm_lpae_restrict_pgsizes() local 685 * translation regime for a particular granule. Aim to match in arm_lpae_restrict_pgsizes() 688 * chosen granule. in arm_lpae_restrict_pgsizes() 691 granule = PAGE_SIZE; in arm_lpae_restrict_pgsizes() 693 granule = 1UL << __fls(cfg->pgsize_bitmap & ~PAGE_MASK); in arm_lpae_restrict_pgsizes() 695 granule = 1UL << __ffs(cfg->pgsize_bitmap & PAGE_MASK); in arm_lpae_restrict_pgsizes() 697 granule = 0; in arm_lpae_restrict_pgsizes() 699 switch (granule) { in arm_lpae_restrict_pgsizes() 905 sl++; /* SL0 format is different for 4K granule size */ in arm_64_lpae_alloc_pgtable_s2() 1076 size_t granule, voi in dummy_tlb_flush() 1075 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 1082 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument [all...] |
H A D | iova.c | 30 init_iova_domain(struct iova_domain *iovad, unsigned long granule, in init_iova_domain() argument 38 BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule)); in init_iova_domain() 44 iovad->granule = granule; in init_iova_domain()
|
H A D | io-pgtable-arm-v7s.c | 857 size_t granule, void *cookie) in dummy_tlb_flush() 864 unsigned long iova, size_t granule, in dummy_tlb_add_page() 867 dummy_tlb_flush(iova, granule, granule, cookie); in dummy_tlb_add_page() 921 * Distinct mappings of different granule sizes. in arm_v7s_do_selftests() 856 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 863 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument
|
/kernel/linux/linux-6.6/drivers/iommu/arm/arm-smmu/ |
H A D | arm-smmu.c | 262 size_t granule, void *cookie, int reg) in arm_smmu_tlb_inv_range_s1() 277 iova += granule; in arm_smmu_tlb_inv_range_s1() 278 } while (size -= granule); in arm_smmu_tlb_inv_range_s1() 284 iova += granule >> 12; in arm_smmu_tlb_inv_range_s1() 285 } while (size -= granule); in arm_smmu_tlb_inv_range_s1() 290 size_t granule, void *cookie, int reg) in arm_smmu_tlb_inv_range_s2() 305 iova += granule >> 12; in arm_smmu_tlb_inv_range_s2() 306 } while (size -= granule); in arm_smmu_tlb_inv_range_s2() 310 size_t granule, void *cookie) in arm_smmu_tlb_inv_walk_s1() 318 arm_smmu_tlb_inv_range_s1(iova, size, granule, cooki in arm_smmu_tlb_inv_walk_s1() 261 arm_smmu_tlb_inv_range_s1(unsigned long iova, size_t size, size_t granule, void *cookie, int reg) arm_smmu_tlb_inv_range_s1() argument 289 arm_smmu_tlb_inv_range_s2(unsigned long iova, size_t size, size_t granule, void *cookie, int reg) arm_smmu_tlb_inv_range_s2() argument 309 arm_smmu_tlb_inv_walk_s1(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_walk_s1() argument 324 arm_smmu_tlb_add_page_s1(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s1() argument 332 arm_smmu_tlb_inv_walk_s2(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_walk_s2() argument 340 arm_smmu_tlb_add_page_s2(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s2() argument 348 arm_smmu_tlb_inv_walk_s2_v1(unsigned long iova, size_t size, size_t granule, void *cookie) arm_smmu_tlb_inv_walk_s2_v1() argument 360 arm_smmu_tlb_add_page_s2_v1(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) arm_smmu_tlb_add_page_s2_v1() argument [all...] |
H A D | qcom_iommu.c | 158 size_t granule, bool leaf, void *cookie) in qcom_iommu_tlb_inv_range_nosync() 174 iova += granule; in qcom_iommu_tlb_inv_range_nosync() 175 } while (s -= granule); in qcom_iommu_tlb_inv_range_nosync() 180 size_t granule, void *cookie) in qcom_iommu_tlb_flush_walk() 182 qcom_iommu_tlb_inv_range_nosync(iova, size, granule, false, cookie); in qcom_iommu_tlb_flush_walk() 187 unsigned long iova, size_t granule, in qcom_iommu_tlb_add_page() 190 qcom_iommu_tlb_inv_range_nosync(iova, granule, granule, true, cookie); in qcom_iommu_tlb_add_page() 157 qcom_iommu_tlb_inv_range_nosync(unsigned long iova, size_t size, size_t granule, bool leaf, void *cookie) qcom_iommu_tlb_inv_range_nosync() argument 179 qcom_iommu_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) qcom_iommu_tlb_flush_walk() argument 186 qcom_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) qcom_iommu_tlb_add_page() argument
|
/kernel/linux/linux-5.10/arch/arm64/kvm/hyp/ |
H A D | pgtable.c | 69 u64 granule = kvm_granule_size(level); in kvm_block_mapping_supported() local 78 if (granule > (end - addr)) in kvm_block_mapping_supported() 81 return IS_ALIGNED(addr, granule) && IS_ALIGNED(phys, granule); in kvm_block_mapping_supported() 345 u64 granule = kvm_granule_size(level), phys = data->phys; in hyp_map_walker_try_leaf() local 351 data->phys += granule; in hyp_map_walker_try_leaf() 469 u64 granule = kvm_granule_size(level), phys = data->phys; in stage2_map_walker_try_leaf() local 491 data->phys += granule; in stage2_map_walker_try_leaf()
|
/kernel/linux/linux-6.6/drivers/iommu/ |
H A D | msm_iommu.c | 139 size_t granule, bool leaf, void *cookie) in __flush_iotlb_range() 159 iova += granule; in __flush_iotlb_range() 160 } while (temp_size -= granule); in __flush_iotlb_range() 171 size_t granule, void *cookie) in __flush_iotlb_walk() 173 __flush_iotlb_range(iova, size, granule, false, cookie); in __flush_iotlb_walk() 177 unsigned long iova, size_t granule, void *cookie) in __flush_iotlb_page() 179 __flush_iotlb_range(iova, granule, granule, true, cookie); in __flush_iotlb_page() 138 __flush_iotlb_range(unsigned long iova, size_t size, size_t granule, bool leaf, void *cookie) __flush_iotlb_range() argument 170 __flush_iotlb_walk(unsigned long iova, size_t size, size_t granule, void *cookie) __flush_iotlb_walk() argument 176 __flush_iotlb_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) __flush_iotlb_page() argument
|
H A D | io-pgtable-arm.c | 716 unsigned long granule, page_sizes; in arm_lpae_restrict_pgsizes() local 721 * translation regime for a particular granule. Aim to match in arm_lpae_restrict_pgsizes() 724 * chosen granule. in arm_lpae_restrict_pgsizes() 727 granule = PAGE_SIZE; in arm_lpae_restrict_pgsizes() 729 granule = 1UL << __fls(cfg->pgsize_bitmap & ~PAGE_MASK); in arm_lpae_restrict_pgsizes() 731 granule = 1UL << __ffs(cfg->pgsize_bitmap & PAGE_MASK); in arm_lpae_restrict_pgsizes() 733 granule = 0; in arm_lpae_restrict_pgsizes() 735 switch (granule) { in arm_lpae_restrict_pgsizes() 946 sl++; /* SL0 format is different for 4K granule size */ in arm_64_lpae_alloc_pgtable_s2() 1117 size_t granule, voi in dummy_tlb_flush() 1116 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 1123 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument [all...] |
H A D | iova.c | 52 init_iova_domain(struct iova_domain *iovad, unsigned long granule, in init_iova_domain() argument 60 BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule)); in init_iova_domain() 66 iovad->granule = granule; in init_iova_domain()
|
H A D | io-pgtable-arm-v7s.c | 904 size_t granule, void *cookie) in dummy_tlb_flush() 911 unsigned long iova, size_t granule, in dummy_tlb_add_page() 914 dummy_tlb_flush(iova, granule, granule, cookie); in dummy_tlb_add_page() 968 * Distinct mappings of different granule sizes. in arm_v7s_do_selftests() 903 dummy_tlb_flush(unsigned long iova, size_t size, size_t granule, void *cookie) dummy_tlb_flush() argument 910 dummy_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) dummy_tlb_add_page() argument
|
H A D | virtio-iommu.c | 389 unsigned long granule = 1UL << __ffs(vdomain->domain.pgsize_bitmap); in viommu_domain_map_identity() local 391 iova = ALIGN(iova, granule); in viommu_domain_map_identity() 392 limit = ALIGN_DOWN(limit + 1, granule) - 1; in viommu_domain_map_identity() 395 u64 resv_start = ALIGN_DOWN(resv->start, granule); in viommu_domain_map_identity() 396 u64 resv_end = ALIGN(resv->start + resv->length, granule) - 1; in viommu_domain_map_identity() 671 "granule 0x%lx larger than system page size 0x%lx\n", in viommu_domain_finalise()
|
/kernel/linux/linux-6.6/arch/arm64/kvm/hyp/ |
H A D | pgtable.c | 87 u64 granule = kvm_granule_size(ctx->level); in kvm_block_mapping_supported() local 92 if (granule > (ctx->end - ctx->addr)) in kvm_block_mapping_supported() 95 if (kvm_phys_is_valid(phys) && !IS_ALIGNED(phys, granule)) in kvm_block_mapping_supported() 98 return IS_ALIGNED(ctx->addr, granule); in kvm_block_mapping_supported() 511 u64 granule = kvm_granule_size(ctx->level); in hyp_unmap_walker() local 528 if (ctx->end - ctx->addr < granule) in hyp_unmap_walker() 534 *unmapped += granule; in hyp_unmap_walker() 916 u64 granule = kvm_granule_size(ctx->level); in stage2_map_walker_try_leaf() local 944 granule); in stage2_map_walker_try_leaf() 948 mm_ops->icache_inval_pou(kvm_pte_follow(new, mm_ops), granule); in stage2_map_walker_try_leaf() local [all...] |
/kernel/linux/linux-6.6/kernel/dma/ |
H A D | map_benchmark.c | 39 int npages = map->bparam.granule; in map_benchmark_thread() 216 if (map->bparam.granule < 1 || map->bparam.granule > 1024) { in map_benchmark_ioctl() 217 pr_err("invalid granule size\n"); in map_benchmark_ioctl()
|
/kernel/linux/linux-6.6/drivers/gpu/drm/msm/ |
H A D | msm_iommu.c | 220 size_t granule, void *cookie) in msm_iommu_tlb_flush_walk() 230 pagetable->tlb->tlb_flush_walk(iova, size, granule, (void *)adreno_smmu->cookie); in msm_iommu_tlb_flush_walk() 236 unsigned long iova, size_t granule, void *cookie) in msm_iommu_tlb_add_page() 219 msm_iommu_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) msm_iommu_tlb_flush_walk() argument 235 msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) msm_iommu_tlb_add_page() argument
|
/kernel/linux/linux-5.10/drivers/gpu/drm/msm/ |
H A D | msm_iommu.c | 130 size_t granule, void *cookie) in msm_iommu_tlb_flush_walk() 135 unsigned long iova, size_t granule, void *cookie) in msm_iommu_tlb_add_page() 129 msm_iommu_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) msm_iommu_tlb_flush_walk() argument 134 msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) msm_iommu_tlb_add_page() argument
|
/kernel/linux/linux-6.6/drivers/iommu/amd/ |
H A D | io_pgtable_v2.c | 341 size_t granule, void *cookie) in v2_tlb_flush_walk() 346 unsigned long iova, size_t granule, in v2_tlb_add_page() 340 v2_tlb_flush_walk(unsigned long iova, size_t size, size_t granule, void *cookie) v2_tlb_flush_walk() argument 345 v2_tlb_add_page(struct iommu_iotlb_gather *gather, unsigned long iova, size_t granule, void *cookie) v2_tlb_add_page() argument
|