Lines Matching refs:s390_domain
19 struct s390_domain {
27 static struct s390_domain *to_s390_domain(struct iommu_domain *dom)
29 return container_of(dom, struct s390_domain, domain);
44 struct s390_domain *s390_domain;
49 s390_domain = kzalloc(sizeof(*s390_domain), GFP_KERNEL);
50 if (!s390_domain)
53 s390_domain->dma_table = dma_alloc_cpu_table(GFP_KERNEL);
54 if (!s390_domain->dma_table) {
55 kfree(s390_domain);
58 s390_domain->domain.geometry.force_aperture = true;
59 s390_domain->domain.geometry.aperture_start = 0;
60 s390_domain->domain.geometry.aperture_end = ZPCI_TABLE_SIZE_RT - 1;
62 spin_lock_init(&s390_domain->list_lock);
63 INIT_LIST_HEAD_RCU(&s390_domain->devices);
65 return &s390_domain->domain;
70 struct s390_domain *s390_domain = container_of(head, struct s390_domain, rcu);
72 dma_cleanup_tables(s390_domain->dma_table);
73 kfree(s390_domain);
78 struct s390_domain *s390_domain = to_s390_domain(domain);
81 WARN_ON(!list_empty(&s390_domain->devices));
84 call_rcu(&s390_domain->rcu, s390_iommu_rcu_free_domain);
89 struct s390_domain *s390_domain = zdev->s390_domain;
92 if (!s390_domain)
95 spin_lock_irqsave(&s390_domain->list_lock, flags);
97 spin_unlock_irqrestore(&s390_domain->list_lock, flags);
100 zdev->s390_domain = NULL;
107 struct s390_domain *s390_domain = to_s390_domain(domain);
120 if (zdev->s390_domain)
126 virt_to_phys(s390_domain->dma_table), &status);
133 zdev->dma_table = s390_domain->dma_table;
135 zdev->dma_table = s390_domain->dma_table;
136 zdev->s390_domain = s390_domain;
138 spin_lock_irqsave(&s390_domain->list_lock, flags);
139 list_add_rcu(&zdev->iommu_list, &s390_domain->devices);
140 spin_unlock_irqrestore(&s390_domain->list_lock, flags);
210 struct s390_domain *s390_domain = to_s390_domain(domain);
214 list_for_each_entry_rcu(zdev, &s390_domain->devices, iommu_list) {
224 struct s390_domain *s390_domain = to_s390_domain(domain);
233 list_for_each_entry_rcu(zdev, &s390_domain->devices, iommu_list) {
243 struct s390_domain *s390_domain = to_s390_domain(domain);
247 list_for_each_entry_rcu(zdev, &s390_domain->devices, iommu_list) {
256 static int s390_iommu_validate_trans(struct s390_domain *s390_domain,
267 entry = dma_walk_cpu_trans(s390_domain->dma_table, dma_addr,
283 entry = dma_walk_cpu_trans(s390_domain->dma_table,
293 static int s390_iommu_invalidate_trans(struct s390_domain *s390_domain,
301 entry = dma_walk_cpu_trans(s390_domain->dma_table, dma_addr,
319 struct s390_domain *s390_domain = to_s390_domain(domain);
326 if (iova < s390_domain->domain.geometry.aperture_start ||
327 (iova + size - 1) > s390_domain->domain.geometry.aperture_end)
339 rc = s390_iommu_validate_trans(s390_domain, paddr, iova,
350 struct s390_domain *s390_domain = to_s390_domain(domain);
363 rto = s390_domain->dma_table;
385 struct s390_domain *s390_domain = to_s390_domain(domain);
389 if (WARN_ON(iova < s390_domain->domain.geometry.aperture_start ||
390 (iova + size - 1) > s390_domain->domain.geometry.aperture_end))
393 rc = s390_iommu_invalidate_trans(s390_domain, iova, pgcount);