Home
last modified time | relevance | path

Searched refs:granule (Results 1 - 25 of 37) sorted by relevance

12

/kernel/linux/linux-5.10/include/linux/
H A Dio-pgtable.h41 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 Diova.h73 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 Ddma_map_benchmark.c32 /* 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 Diova.h33 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 Dio-pgtable.h43 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 Dmap_benchmark.h29 __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 Darm-smmu.c281 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 Dqcom_iommu.c160 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 Dmsm_iommu.c140 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 Dio-pgtable-arm.c680 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 Diova.c30 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 Dio-pgtable-arm-v7s.c857 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 Darm-smmu.c262 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 Dqcom_iommu.c158 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 Dpgtable.c69 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 Dmsm_iommu.c139 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 Dio-pgtable-arm.c716 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 Diova.c52 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 Dio-pgtable-arm-v7s.c904 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 Dvirtio-iommu.c389 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 Dpgtable.c87 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 Dmap_benchmark.c39 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 Dmsm_iommu.c220 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 Dmsm_iommu.c130 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 Dio_pgtable_v2.c341 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

Completed in 26 milliseconds

12