Lines Matching refs:dmar_domain
305 static struct dmar_domain *si_domain;
316 struct dmar_domain { struct
354 struct dmar_domain *domain; /* pointer to domain */ argument
388 struct dmar_domain *domain[HIGH_WATER_MARK];
403 static void domain_exit(struct dmar_domain *domain);
404 static void domain_remove_dev_info(struct dmar_domain *domain);
405 static void domain_remove_one_dev_info(struct dmar_domain *domain,
409 static int domain_detach_iommu(struct dmar_domain *domain,
444 static struct dmar_domain *to_dmar_domain(struct iommu_domain *dom) in to_dmar_domain()
446 return container_of(dom, struct dmar_domain, domain); in to_dmar_domain()
529 static inline int domain_type_is_vm(struct dmar_domain *domain) in domain_type_is_vm()
534 static inline int domain_type_is_vm_or_si(struct dmar_domain *domain) in domain_type_is_vm_or_si()
540 static inline int domain_pfn_supported(struct dmar_domain *domain, in domain_pfn_supported()
582 static struct intel_iommu *domain_get_iommu(struct dmar_domain *domain) in domain_get_iommu()
595 static void domain_update_iommu_coherency(struct dmar_domain *domain) in domain_update_iommu_coherency()
670 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()
835 static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain, in pfn_to_dma_pte()
891 static struct dma_pte *dma_pfn_level_pte(struct dmar_domain *domain, in dma_pfn_level_pte()
923 static void dma_pte_clear_range(struct dmar_domain *domain, in dma_pte_clear_range()
954 static void dma_pte_free_level(struct dmar_domain *domain, int level, in dma_pte_free_level()
988 static void dma_pte_free_pagetable(struct dmar_domain *domain, in dma_pte_free_pagetable()
1015 static struct page *dma_pte_list_pagetables(struct dmar_domain *domain, in dma_pte_list_pagetables()
1039 static struct page *dma_pte_clear_level(struct dmar_domain *domain, int level, in dma_pte_clear_level()
1091 struct page *domain_unmap(struct dmar_domain *domain, in domain_unmap()
1281 iommu_support_dev_iotlb (struct dmar_domain *domain, struct intel_iommu *iommu, in iommu_support_dev_iotlb()
1335 static void iommu_flush_dev_iotlb(struct dmar_domain *domain, in iommu_flush_dev_iotlb()
1461 iommu->domains = kcalloc(ndomains, sizeof(struct dmar_domain *), in iommu_init_domains()
1482 struct dmar_domain *domain; in disable_dmar_iommu()
1521 static struct dmar_domain *alloc_domain(int flags) in alloc_domain()
1525 struct dmar_domain *domain; in alloc_domain()
1542 static int __iommu_attach_domain(struct dmar_domain *domain, in __iommu_attach_domain()
1560 static int iommu_attach_domain(struct dmar_domain *domain, in iommu_attach_domain()
1575 static int iommu_attach_vm_domain(struct dmar_domain *domain, in iommu_attach_vm_domain()
1589 static void iommu_detach_domain(struct dmar_domain *domain, in iommu_detach_domain()
1612 static void domain_attach_iommu(struct dmar_domain *domain, in domain_attach_iommu()
1627 static int domain_detach_iommu(struct dmar_domain *domain, in domain_detach_iommu()
1686 static void domain_reserve_special_ranges(struct dmar_domain *domain) in domain_reserve_special_ranges()
1705 static int domain_init(struct dmar_domain *domain, int guest_width) in domain_init()
1757 static void domain_exit(struct dmar_domain *domain) in domain_exit()
1792 static int domain_context_mapping_one(struct dmar_domain *domain, in domain_context_mapping_one()
1896 struct dmar_domain *domain;
1912 domain_context_mapping(struct dmar_domain *domain, struct device *dev, in domain_context_mapping()
1968 static inline int hardware_largepage_caps(struct dmar_domain *domain, in hardware_largepage_caps()
1995 static int __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn, in __domain_mapping()
2105 static inline int domain_sg_mapping(struct dmar_domain *domain, unsigned long iov_pfn, in domain_sg_mapping()
2112 static inline int domain_pfn_mapping(struct dmar_domain *domain, unsigned long iov_pfn, in domain_pfn_mapping()
2139 static void domain_remove_dev_info(struct dmar_domain *domain) in domain_remove_dev_info()
2167 static struct dmar_domain *find_domain(struct device *dev) in find_domain()
2191 static struct dmar_domain *dmar_insert_dev_info(struct intel_iommu *iommu, in dmar_insert_dev_info()
2194 struct dmar_domain *domain) in dmar_insert_dev_info()
2196 struct dmar_domain *found = NULL; in dmar_insert_dev_info()
2242 static struct dmar_domain *get_domain_for_dev(struct device *dev, int gaw) in get_domain_for_dev()
2244 struct dmar_domain *domain, *tmp; in get_domain_for_dev()
2324 static int iommu_domain_identity_map(struct dmar_domain *domain, in iommu_domain_identity_map()
2354 struct dmar_domain *domain; in iommu_prepare_identity_map()
2447 static int md_domain_init(struct dmar_domain *domain, int guest_width);
2515 static int domain_add_dev_info(struct dmar_domain *domain, in domain_add_dev_info()
2518 struct dmar_domain *ndomain; in domain_add_dev_info()
2933 struct dmar_domain *domain, in intel_alloc_iova()
2962 static struct dmar_domain *__get_valid_domain_for_dev(struct device *dev) in __get_valid_domain_for_dev()
2964 struct dmar_domain *domain; in __get_valid_domain_for_dev()
2987 static inline struct dmar_domain *get_valid_domain_for_dev(struct device *dev) in get_valid_domain_for_dev()
3049 struct dmar_domain *domain; in __intel_map_single()
3142 struct dmar_domain *domain = deferred_flush[i].domain[j]; in flush_unmaps()
3173 static void add_unmap(struct dmar_domain *dom, struct iova *iova, struct page *freelist) in add_unmap()
3202 struct dmar_domain *domain; in intel_unmap()
3337 struct dmar_domain *domain; in intel_map_sg()
3415 sizeof(struct dmar_domain), in iommu_domain_cache_init()
4024 struct dmar_domain *domain; in device_notifier()
4291 static void domain_remove_one_dev_info(struct dmar_domain *domain, in domain_remove_one_dev_info()
4341 static int md_domain_init(struct dmar_domain *domain, int guest_width) in md_domain_init()
4369 struct dmar_domain *dmar_domain; in intel_iommu_domain_alloc() local
4375 dmar_domain = alloc_domain(DOMAIN_FLAG_VIRTUAL_MACHINE); in intel_iommu_domain_alloc()
4376 if (!dmar_domain) { in intel_iommu_domain_alloc()
4381 if (md_domain_init(dmar_domain, DEFAULT_DOMAIN_ADDRESS_WIDTH)) { in intel_iommu_domain_alloc()
4384 domain_exit(dmar_domain); in intel_iommu_domain_alloc()
4387 domain_update_iommu_cap(dmar_domain); in intel_iommu_domain_alloc()
4389 domain = &dmar_domain->domain; in intel_iommu_domain_alloc()
4391 domain->geometry.aperture_end = __DOMAIN_MAX_ADDR(dmar_domain->gaw); in intel_iommu_domain_alloc()
4405 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_attach_device() local
4417 struct dmar_domain *old_domain; in intel_iommu_attach_device()
4421 if (domain_type_is_vm_or_si(dmar_domain)) in intel_iommu_attach_device()
4441 if (dmar_domain->max_addr > (1LL << addr_width)) { in intel_iommu_attach_device()
4444 __func__, addr_width, dmar_domain->max_addr); in intel_iommu_attach_device()
4447 dmar_domain->gaw = addr_width; in intel_iommu_attach_device()
4452 while (iommu->agaw < dmar_domain->agaw) { in intel_iommu_attach_device()
4455 pte = dmar_domain->pgd; in intel_iommu_attach_device()
4457 dmar_domain->pgd = (struct dma_pte *) in intel_iommu_attach_device()
4461 dmar_domain->agaw--; in intel_iommu_attach_device()
4464 return domain_add_dev_info(dmar_domain, dev, CONTEXT_TT_MULTI_LEVEL); in intel_iommu_attach_device()
4477 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_map() local
4486 if ((iommu_prot & IOMMU_CACHE) && dmar_domain->iommu_snooping) in intel_iommu_map()
4490 if (dmar_domain->max_addr < max_addr) { in intel_iommu_map()
4494 end = __DOMAIN_MAX_ADDR(dmar_domain->gaw) + 1; in intel_iommu_map()
4498 __func__, dmar_domain->gaw, max_addr); in intel_iommu_map()
4501 dmar_domain->max_addr = max_addr; in intel_iommu_map()
4506 ret = domain_pfn_mapping(dmar_domain, iova >> VTD_PAGE_SHIFT, in intel_iommu_map()
4514 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_unmap() local
4523 if (!pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level)) in intel_iommu_unmap()
4532 freelist = domain_unmap(dmar_domain, start_pfn, last_pfn); in intel_iommu_unmap()
4536 for_each_set_bit(iommu_id, dmar_domain->iommu_bmp, g_num_of_iommus) { in intel_iommu_unmap()
4544 if (iommu->domains[num] == dmar_domain) in intel_iommu_unmap()
4553 if (dmar_domain->max_addr == iova + size) in intel_iommu_unmap()
4554 dmar_domain->max_addr = iova; in intel_iommu_unmap()
4562 struct dmar_domain *dmar_domain = to_dmar_domain(domain); in intel_iommu_iova_to_phys() local
4567 pte = pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level); in intel_iommu_iova_to_phys()