iova_domain
struct iova_domain domain;
struct iova_domain iova;
struct iova_domain *iovad = &domain->iova_cookie->iovad;
static inline size_t iova_unaligned(struct iova_domain *iovad, phys_addr_t phys,
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &domain->iova_cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad)
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain iovad;
struct iova_domain *iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &domain->iova_cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
struct iova_domain *iovad = &cookie->iovad;
static int __alloc_and_insert_iova_range(struct iova_domain *iovad,
static bool iova_rcache_insert(struct iova_domain *iovad,
static unsigned long iova_rcache_get(struct iova_domain *iovad,
alloc_iova(struct iova_domain *iovad, unsigned long size,
private_find_iova(struct iova_domain *iovad, unsigned long pfn)
static void free_iova_rcaches(struct iova_domain *iovad);
static void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad);
static void remove_iova(struct iova_domain *iovad, struct iova *iova)
static void free_global_cached_iovas(struct iova_domain *iovad);
struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn)
__free_iova(struct iova_domain *iovad, struct iova *iova)
free_iova(struct iova_domain *iovad, unsigned long pfn)
alloc_iova_fast(struct iova_domain *iovad, unsigned long size,
init_iova_domain(struct iova_domain *iovad, unsigned long granule,
free_iova_fast(struct iova_domain *iovad, unsigned long pfn, unsigned long size)
static void iova_domain_free_rcaches(struct iova_domain *iovad)
void put_iova_domain(struct iova_domain *iovad)
__insert_new_range(struct iova_domain *iovad,
reserve_iova(struct iova_domain *iovad,
struct iova_domain *iovad;
iova_magazine_free_pfns(struct iova_magazine *mag, struct iova_domain *iovad)
__get_cached_rbnode(struct iova_domain *iovad, unsigned long limit_pfn)
int iova_domain_init_rcaches(struct iova_domain *iovad)
__cached_rbnode_insert_update(struct iova_domain *iovad, struct iova *new)
static bool __iova_rcache_insert(struct iova_domain *iovad,
static bool iova_rcache_insert(struct iova_domain *iovad, unsigned long pfn,
__cached_rbnode_delete_update(struct iova_domain *iovad, struct iova *free)
static unsigned long iova_rcache_get(struct iova_domain *iovad,
static void free_iova_rcaches(struct iova_domain *iovad)
static void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad)
static void free_global_cached_iovas(struct iova_domain *iovad)
struct iova_domain *iovad;
iovad = hlist_entry_safe(node, struct iova_domain, cpuhp_dead);
static struct rb_node *iova_find_limit(struct iova_domain *iovad, unsigned long limit_pfn)
struct iova_domain iovad;
struct iova_domain iova;
iova = alloc_iova(&imgu->iova_domain, size >> shift,
iovaddr = iova_dma_addr(&imgu->iova_domain, iova);
map->daddr = iova_dma_addr(&imgu->iova_domain, iova);
imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova),
__free_iova(&imgu->iova_domain, iova);
iova = find_iova(&imgu->iova_domain,
iova_pfn(&imgu->iova_domain, map->daddr));
imgu_mmu_unmap(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova),
iova_size(iova) << iova_shift(&imgu->iova_domain));
__free_iova(&imgu->iova_domain, iova);
unsigned long shift = iova_shift(&imgu->iova_domain);
size = iova_align(&imgu->iova_domain, size);
iova = alloc_iova(&imgu->iova_domain, size >> shift,
if (imgu_mmu_map_sg(imgu->mmu, iova_dma_addr(&imgu->iova_domain, iova),
map->daddr = iova_dma_addr(&imgu->iova_domain, iova);
__free_iova(&imgu->iova_domain, iova);
init_iova_domain(&imgu->iova_domain, 1UL << order, base_pfn);
put_iova_domain(&imgu->iova_domain);
unsigned long shift = iova_shift(&imgu->iova_domain);
struct iova_domain iova_domain;
struct iova_domain iovad;
vduse_domain_alloc_iova(struct iova_domain *iovad,
static void vduse_domain_free_iova(struct iova_domain *iovad,
struct iova_domain *iovad = &domain->stream_iovad;
struct iova_domain *iovad = &domain->stream_iovad;
struct iova_domain *iovad = &domain->consistent_iovad;
struct iova_domain *iovad = &domain->consistent_iovad;
struct iova_domain stream_iovad;
struct iova_domain consistent_iovad;
void init_iova_domain(struct iova_domain *iovad, unsigned long granule,
int iova_domain_init_rcaches(struct iova_domain *iovad);
struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn);
void put_iova_domain(struct iova_domain *iovad);
static inline void free_iova(struct iova_domain *iovad, unsigned long pfn)
static inline void __free_iova(struct iova_domain *iovad, struct iova *iova)
static inline struct iova *alloc_iova(struct iova_domain *iovad,
static inline void free_iova_fast(struct iova_domain *iovad,
static inline unsigned long alloc_iova_fast(struct iova_domain *iovad,
static inline struct iova *reserve_iova(struct iova_domain *iovad,
static inline void init_iova_domain(struct iova_domain *iovad,
static inline struct iova *find_iova(struct iova_domain *iovad,
static inline void put_iova_domain(struct iova_domain *iovad)
static inline unsigned long iova_shift(struct iova_domain *iovad)
static inline unsigned long iova_mask(struct iova_domain *iovad)
static inline size_t iova_offset(struct iova_domain *iovad, dma_addr_t iova)
static inline size_t iova_align(struct iova_domain *iovad, size_t size)
static inline size_t iova_align_down(struct iova_domain *iovad, size_t size)
static inline dma_addr_t iova_dma_addr(struct iova_domain *iovad, struct iova *iova)
static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova)
void free_iova(struct iova_domain *iovad, unsigned long pfn);
void __free_iova(struct iova_domain *iovad, struct iova *iova);
struct iova *alloc_iova(struct iova_domain *iovad, unsigned long size,
void free_iova_fast(struct iova_domain *iovad, unsigned long pfn,
unsigned long alloc_iova_fast(struct iova_domain *iovad, unsigned long size,
struct iova *reserve_iova(struct iova_domain *iovad, unsigned long pfn_lo,