Lines Matching refs:dmar_domain
244 static struct dmar_domain *si_domain;
381 static inline int domain_type_is_si(struct dmar_domain *domain) in domain_type_is_si()
386 static inline int domain_pfn_supported(struct dmar_domain *domain, in domain_pfn_supported()
455 static void domain_update_iommu_coherency(struct dmar_domain *domain) in domain_update_iommu_coherency()
485 static int domain_update_iommu_superpage(struct dmar_domain *domain, in domain_update_iommu_superpage()
515 static int domain_update_device_node(struct dmar_domain *domain) in domain_update_device_node()
538 static void domain_update_iotlb(struct dmar_domain *domain);
541 static unsigned long domain_super_pgsize_bitmap(struct dmar_domain *domain) in domain_super_pgsize_bitmap()
558 static void domain_update_iommu_cap(struct dmar_domain *domain) in domain_update_iommu_cap()
771 static void domain_flush_cache(struct dmar_domain *domain, in domain_flush_cache()
910 static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain, in pfn_to_dma_pte()
969 static struct dma_pte *dma_pfn_level_pte(struct dmar_domain *domain, in dma_pfn_level_pte()
1001 static void dma_pte_clear_range(struct dmar_domain *domain, in dma_pte_clear_range()
1032 static void dma_pte_free_level(struct dmar_domain *domain, int level, in dma_pte_free_level()
1075 static void dma_pte_free_pagetable(struct dmar_domain *domain, in dma_pte_free_pagetable()
1099 static void dma_pte_list_pagetables(struct dmar_domain *domain, in dma_pte_list_pagetables()
1119 static void dma_pte_clear_level(struct dmar_domain *domain, int level, in dma_pte_clear_level()
1166 static void domain_unmap(struct dmar_domain *domain, unsigned long start_pfn, in domain_unmap()
1347 domain_lookup_dev_info(struct dmar_domain *domain, in domain_lookup_dev_info()
1366 static void domain_update_iotlb(struct dmar_domain *domain) in domain_update_iotlb()
1486 static void iommu_flush_dev_iotlb(struct dmar_domain *domain, in iommu_flush_dev_iotlb()
1502 struct dmar_domain *domain, in iommu_flush_iotlb_psi()
1563 struct dmar_domain *domain, in __mapping_notify_one()
1578 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_flush_iotlb_all() local
1582 xa_for_each(&dmar_domain->iommu_array, idx, info) { in intel_flush_iotlb_all()
1584 u16 did = domain_id_iommu(dmar_domain, iommu); in intel_flush_iotlb_all()
1586 if (dmar_domain->use_first_level) in intel_flush_iotlb_all()
1593 iommu_flush_dev_iotlb(dmar_domain, 0, MAX_AGAW_PFN_WIDTH); in intel_flush_iotlb_all()
1749 static struct dmar_domain *alloc_domain(unsigned int type) in alloc_domain()
1751 struct dmar_domain *domain; in alloc_domain()
1768 static int domain_attach_iommu(struct dmar_domain *domain, in domain_attach_iommu()
1818 static void domain_detach_iommu(struct dmar_domain *domain, in domain_detach_iommu()
1849 static void domain_exit(struct dmar_domain *domain) in domain_exit()
1913 static int domain_context_mapping_one(struct dmar_domain *domain, in domain_context_mapping_one()
2061 struct dmar_domain *domain;
2077 domain_context_mapping(struct dmar_domain *domain, struct device *dev) in domain_context_mapping()
2111 static inline int hardware_largepage_caps(struct dmar_domain *domain, in hardware_largepage_caps()
2143 static void switch_to_super_page(struct dmar_domain *domain, in switch_to_super_page()
2176 __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn, in __domain_mapping()
2322 struct dmar_domain *domain, in domain_setup_first_level()
2363 static int iommu_domain_identity_map(struct dmar_domain *domain, in iommu_domain_identity_map()
2378 static int md_domain_init(struct dmar_domain *domain, int guest_width);
2437 static int dmar_domain_attach_device(struct dmar_domain *domain, in dmar_domain_attach_device()
4080 struct dmar_domain *domain = info->domain; in dmar_remove_one_dev_info()
4132 static int md_domain_init(struct dmar_domain *domain, int guest_width) in md_domain_init()
4169 struct dmar_domain *dmar_domain; in intel_iommu_domain_alloc() local
4178 dmar_domain = alloc_domain(type); in intel_iommu_domain_alloc()
4179 if (!dmar_domain) { in intel_iommu_domain_alloc()
4183 if (md_domain_init(dmar_domain, DEFAULT_DOMAIN_ADDRESS_WIDTH)) { in intel_iommu_domain_alloc()
4185 domain_exit(dmar_domain); in intel_iommu_domain_alloc()
4189 domain = &dmar_domain->domain; in intel_iommu_domain_alloc()
4192 __DOMAIN_MAX_ADDR(dmar_domain->gaw); in intel_iommu_domain_alloc()
4216 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in prepare_domain_attach_device() local
4224 if (dmar_domain->force_snooping && !ecap_sc_support(iommu->ecap)) in prepare_domain_attach_device()
4232 if (dmar_domain->max_addr > (1LL << addr_width)) in prepare_domain_attach_device()
4234 dmar_domain->gaw = addr_width; in prepare_domain_attach_device()
4239 while (iommu->agaw < dmar_domain->agaw) { in prepare_domain_attach_device()
4242 pte = dmar_domain->pgd; in prepare_domain_attach_device()
4244 dmar_domain->pgd = phys_to_virt(dma_pte_addr(pte)); in prepare_domain_attach_device()
4247 dmar_domain->agaw--; in prepare_domain_attach_device()
4279 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_map() local
4287 if (dmar_domain->set_pte_snp) in intel_iommu_map()
4291 if (dmar_domain->max_addr < max_addr) { in intel_iommu_map()
4295 end = __DOMAIN_MAX_ADDR(dmar_domain->gaw) + 1; in intel_iommu_map()
4299 __func__, dmar_domain->gaw, max_addr); in intel_iommu_map()
4302 dmar_domain->max_addr = max_addr; in intel_iommu_map()
4307 return __domain_mapping(dmar_domain, iova >> VTD_PAGE_SHIFT, in intel_iommu_map()
4337 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_unmap() local
4343 BUG_ON(!pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level, in intel_iommu_unmap()
4352 domain_unmap(dmar_domain, start_pfn, last_pfn, &gather->freelist); in intel_iommu_unmap()
4354 if (dmar_domain->max_addr == iova + size) in intel_iommu_unmap()
4355 dmar_domain->max_addr = iova; in intel_iommu_unmap()
4381 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_tlb_sync() local
4392 xa_for_each(&dmar_domain->iommu_array, i, info) in intel_iommu_tlb_sync()
4393 iommu_flush_iotlb_psi(info->iommu, dmar_domain, in intel_iommu_tlb_sync()
4403 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_iova_to_phys() local
4408 pte = pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level, in intel_iommu_iova_to_phys()
4418 static bool domain_support_force_snooping(struct dmar_domain *domain) in domain_support_force_snooping()
4434 static void domain_set_force_snooping(struct dmar_domain *domain) in domain_set_force_snooping()
4455 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_enforce_cache_coherency() local
4458 if (dmar_domain->force_snooping) in intel_iommu_enforce_cache_coherency()
4461 spin_lock_irqsave(&dmar_domain->lock, flags); in intel_iommu_enforce_cache_coherency()
4462 if (!domain_support_force_snooping(dmar_domain)) { in intel_iommu_enforce_cache_coherency()
4463 spin_unlock_irqrestore(&dmar_domain->lock, flags); in intel_iommu_enforce_cache_coherency()
4467 domain_set_force_snooping(dmar_domain); in intel_iommu_enforce_cache_coherency()
4468 dmar_domain->force_snooping = true; in intel_iommu_enforce_cache_coherency()
4469 spin_unlock_irqrestore(&dmar_domain->lock, flags); in intel_iommu_enforce_cache_coherency()
4751 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_iotlb_sync_map() local
4757 xa_for_each(&dmar_domain->iommu_array, i, info) in intel_iommu_iotlb_sync_map()
4758 __mapping_notify_one(info->iommu, dmar_domain, pfn, pages); in intel_iommu_iotlb_sync_map()