Lines Matching refs:dmar_domain
296 static struct dmar_domain *si_domain;
329 static void domain_exit(struct dmar_domain *domain);
330 static void domain_remove_dev_info(struct dmar_domain *domain);
479 static struct dmar_domain* get_iommu_domain(struct intel_iommu *iommu, u16 did)
481 struct dmar_domain **domains;
492 struct dmar_domain *domain)
494 struct dmar_domain **domains;
498 size_t size = 256 * sizeof(struct dmar_domain *);
545 static inline int domain_type_is_si(struct dmar_domain *domain)
550 static inline bool domain_use_first_level(struct dmar_domain *domain)
555 static inline int domain_pfn_supported(struct dmar_domain *domain,
619 struct intel_iommu *domain_get_iommu(struct dmar_domain *domain)
642 static void domain_update_iommu_coherency(struct dmar_domain *domain)
699 static int domain_update_iommu_superpage(struct dmar_domain *domain,
730 static int domain_update_device_node(struct dmar_domain *domain)
759 static void domain_update_iommu_cap(struct dmar_domain *domain)
968 static void domain_flush_cache(struct dmar_domain *domain,
1018 static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain,
1078 static struct dma_pte *dma_pfn_level_pte(struct dmar_domain *domain,
1110 static void dma_pte_clear_range(struct dmar_domain *domain,
1141 static void dma_pte_free_level(struct dmar_domain *domain, int level,
1184 static void dma_pte_free_pagetable(struct dmar_domain *domain,
1212 static struct page *dma_pte_list_pagetables(struct dmar_domain *domain,
1236 static struct page *dma_pte_clear_level(struct dmar_domain *domain, int level,
1288 static struct page *domain_unmap(struct dmar_domain *domain,
1490 iommu_support_dev_iotlb (struct dmar_domain *domain, struct intel_iommu *iommu,
1511 static void domain_update_iotlb(struct dmar_domain *domain)
1609 static void iommu_flush_dev_iotlb(struct dmar_domain *domain,
1633 struct dmar_domain *domain,
1647 struct dmar_domain *domain,
1708 struct dmar_domain *domain,
1723 struct dmar_domain *domain;
1726 domain = container_of(iovad, struct dmar_domain, iovad);
1819 size = (ALIGN(ndomains, 256) >> 8) * sizeof(struct dmar_domain **);
1823 size = 256 * sizeof(struct dmar_domain *);
1939 static struct dmar_domain *alloc_domain(int flags)
1941 struct dmar_domain *domain;
1959 static int domain_attach_iommu(struct dmar_domain *domain,
1993 static int domain_detach_iommu(struct dmar_domain *domain,
2071 static void domain_exit(struct dmar_domain *domain)
2140 static int domain_context_mapping_one(struct dmar_domain *domain,
2290 struct dmar_domain *domain;
2306 domain_context_mapping(struct dmar_domain *domain, struct device *dev)
2364 static inline int hardware_largepage_caps(struct dmar_domain *domain,
2391 static int __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn,
2517 static int domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn,
2537 static inline int domain_sg_mapping(struct dmar_domain *domain, unsigned long iov_pfn,
2544 static inline int domain_pfn_mapping(struct dmar_domain *domain, unsigned long iov_pfn,
2595 static void domain_remove_dev_info(struct dmar_domain *domain)
2606 struct dmar_domain *find_domain(struct device *dev)
2648 struct dmar_domain *domain,
2689 static struct dmar_domain *dmar_insert_one_dev_info(struct intel_iommu *iommu,
2692 struct dmar_domain *domain)
2694 struct dmar_domain *found = NULL;
2820 static int iommu_domain_identity_map(struct dmar_domain *domain,
2835 static int md_domain_init(struct dmar_domain *domain, int guest_width);
2894 static int domain_add_dev_info(struct dmar_domain *domain, struct device *dev)
2896 struct dmar_domain *ndomain;
3522 struct dmar_domain *domain,
3570 struct dmar_domain *domain;
3647 struct dmar_domain *domain;
3775 struct dmar_domain *domain;
3858 struct dmar_domain *domain;
3876 struct dmar_domain *domain;
3965 struct dmar_domain *domain;
4113 sizeof(struct dmar_domain),
4755 struct dmar_domain *domain;
5132 struct dmar_domain *domain;
5176 static int md_domain_init(struct dmar_domain *domain, int guest_width)
5198 static void intel_init_iova_domain(struct dmar_domain *dmar_domain)
5200 init_iova_domain(&dmar_domain->iovad, VTD_PAGE_SIZE, IOVA_START_PFN);
5201 copy_reserved_iova(&reserved_iova_list, &dmar_domain->iovad);
5204 init_iova_flush_queue(&dmar_domain->iovad,
5211 struct dmar_domain *dmar_domain;
5217 dmar_domain = alloc_domain(0);
5218 if (!dmar_domain) {
5219 pr_err("Can't allocate dmar_domain\n");
5222 if (md_domain_init(dmar_domain, DEFAULT_DOMAIN_ADDRESS_WIDTH)) {
5224 domain_exit(dmar_domain);
5229 intel_init_iova_domain(dmar_domain);
5231 domain = &dmar_domain->domain;
5234 __DOMAIN_MAX_ADDR(dmar_domain->gaw);
5266 static void auxiliary_link_device(struct dmar_domain *domain,
5279 static void auxiliary_unlink_device(struct dmar_domain *domain,
5295 static int aux_domain_add_dev(struct dmar_domain *domain,
5358 static void aux_domain_remove_dev(struct dmar_domain *domain,
5385 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5398 if (dmar_domain->max_addr > (1LL << addr_width)) {
5401 __func__, addr_width, dmar_domain->max_addr);
5404 dmar_domain->gaw = addr_width;
5409 while (iommu->agaw < dmar_domain->agaw) {
5412 pte = dmar_domain->pgd;
5414 dmar_domain->pgd = (struct dma_pte *)
5418 dmar_domain->agaw--;
5440 struct dmar_domain *old_domain;
5532 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5542 if (!inv_info || !dmar_domain)
5552 if (!(dmar_domain->flags & DOMAIN_FLAG_NESTING_MODE))
5562 did = dmar_domain->iommu_did[iommu->seq_id];
5664 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5673 if ((iommu_prot & IOMMU_CACHE) && dmar_domain->iommu_snooping)
5677 if (dmar_domain->max_addr < max_addr) {
5681 end = __DOMAIN_MAX_ADDR(dmar_domain->gaw) + 1;
5685 __func__, dmar_domain->gaw, max_addr);
5688 dmar_domain->max_addr = max_addr;
5693 ret = domain_pfn_mapping(dmar_domain, iova >> VTD_PAGE_SHIFT,
5702 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5710 BUG_ON(!pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level));
5718 freelist = domain_unmap(dmar_domain, start_pfn, last_pfn);
5722 for_each_domain_iommu(iommu_id, dmar_domain)
5723 iommu_flush_iotlb_psi(g_iommus[iommu_id], dmar_domain,
5728 if (dmar_domain->max_addr == iova + size)
5729 dmar_domain->max_addr = iova;
5737 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5742 pte = pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level);
5916 struct dmar_domain *domain;
5967 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
5973 WARN_ON_ONCE(!reserve_iova(&dmar_domain->iovad, start, end));
6121 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
6123 return dmar_domain->default_pasid > 0 ?
6124 dmar_domain->default_pasid : -EINVAL;
6137 struct dmar_domain *dmar_domain = to_dmar_domain(domain);
6148 list_empty(&dmar_domain->devices)) {
6149 dmar_domain->flags |= DOMAIN_FLAG_NESTING_MODE;
6150 dmar_domain->flags &= ~DOMAIN_FLAG_USE_FIRST_LEVEL;