Lines Matching refs:cookie

52 static inline size_t cookie_msi_granule(struct iommu_dma_cookie *cookie)
54 if (cookie->type == IOMMU_DMA_IOVA_COOKIE)
55 return cookie->iovad.granule;
61 struct iommu_dma_cookie *cookie;
63 cookie = kzalloc(sizeof(*cookie), GFP_KERNEL);
64 if (cookie) {
65 INIT_LIST_HEAD(&cookie->msi_page_list);
66 cookie->type = type;
68 return cookie;
105 struct iommu_dma_cookie *cookie;
113 cookie = cookie_alloc(IOMMU_DMA_MSI_COOKIE);
114 if (!cookie)
117 cookie->msi_iova = base;
118 domain->iova_cookie = cookie;
132 struct iommu_dma_cookie *cookie = domain->iova_cookie;
135 if (!cookie)
138 if (cookie->type == IOMMU_DMA_IOVA_COOKIE && cookie->iovad.granule)
139 put_iova_domain(&cookie->iovad);
141 list_for_each_entry_safe(msi, tmp, &cookie->msi_page_list, list) {
145 kfree(cookie);
169 static int cookie_init_hw_msi_region(struct iommu_dma_cookie *cookie,
172 struct iova_domain *iovad = &cookie->iovad;
187 list_add(&msi_page->list, &cookie->msi_page_list);
242 struct iommu_dma_cookie *cookie = domain->iova_cookie;
243 struct iova_domain *iovad = &cookie->iovad;
267 ret = cookie_init_hw_msi_region(cookie, region->start,
279 struct iommu_dma_cookie *cookie;
282 cookie = container_of(iovad, struct iommu_dma_cookie, iovad);
283 domain = cookie->fq_domain;
306 struct iommu_dma_cookie *cookie = domain->iova_cookie;
311 if (!cookie || cookie->type != IOMMU_DMA_IOVA_COOKIE)
314 iovad = &cookie->iovad;
345 if (!cookie->fq_domain && !iommu_domain_get_attr(domain,
351 cookie->fq_domain = domain;
407 struct iommu_dma_cookie *cookie = domain->iova_cookie;
408 struct iova_domain *iovad = &cookie->iovad;
411 if (cookie->type == IOMMU_DMA_MSI_COOKIE) {
412 cookie->msi_iova += size;
413 return cookie->msi_iova - size;
444 static void iommu_dma_free_iova(struct iommu_dma_cookie *cookie,
447 struct iova_domain *iovad = &cookie->iovad;
450 if (cookie->type == IOMMU_DMA_MSI_COOKIE)
451 cookie->msi_iova -= size;
452 else if (cookie->fq_domain) /* non-strict mode */
464 struct iommu_dma_cookie *cookie = domain->iova_cookie;
465 struct iova_domain *iovad = &cookie->iovad;
477 if (!cookie->fq_domain)
479 iommu_dma_free_iova(cookie, dma_addr, size);
486 struct iommu_dma_cookie *cookie = domain->iova_cookie;
487 struct iova_domain *iovad = &cookie->iovad;
501 iommu_dma_free_iova(cookie, iova, size);
589 struct iommu_dma_cookie *cookie = domain->iova_cookie;
590 struct iova_domain *iovad = &cookie->iovad;
654 iommu_dma_free_iova(cookie, iova, size);
837 struct iommu_dma_cookie *cookie = domain->iova_cookie;
838 struct iova_domain *iovad = &cookie->iovad;
905 iommu_dma_free_iova(cookie, iova, iova_len);
1204 struct iommu_dma_cookie *cookie = domain->iova_cookie;
1208 size_t size = cookie_msi_granule(cookie);
1211 list_for_each_entry(msi_page, &cookie->msi_page_list, list)
1229 list_add(&msi_page->list, &cookie->msi_page_list);
1233 iommu_dma_free_iova(cookie, iova, size);