arch/x86/kernel/apic/msi.c
345
static struct irq_domain *dmar_domain;
arch/x86/kernel/apic/msi.c
350
if (dmar_domain)
arch/x86/kernel/apic/msi.c
355
dmar_domain = msi_create_irq_domain(fn, &dmar_msi_domain_info,
arch/x86/kernel/apic/msi.c
357
if (!dmar_domain)
arch/x86/kernel/apic/msi.c
362
return dmar_domain;
drivers/iommu/intel/cache.c
117
static int domain_qi_batch_alloc(struct dmar_domain *domain)
drivers/iommu/intel/cache.c
135
static int __cache_tag_assign_domain(struct dmar_domain *domain, u16 did,
drivers/iommu/intel/cache.c
156
static void __cache_tag_unassign_domain(struct dmar_domain *domain, u16 did,
drivers/iommu/intel/cache.c
167
static int __cache_tag_assign_parent_domain(struct dmar_domain *domain, u16 did,
drivers/iommu/intel/cache.c
188
static void __cache_tag_unassign_parent_domain(struct dmar_domain *domain, u16 did,
drivers/iommu/intel/cache.c
199
static u16 domain_get_id_for_dev(struct dmar_domain *domain, struct device *dev)
drivers/iommu/intel/cache.c
222
int cache_tag_assign_domain(struct dmar_domain *domain,
drivers/iommu/intel/cache.c
246
void cache_tag_unassign_domain(struct dmar_domain *domain,
drivers/iommu/intel/cache.c
366
static bool intel_domain_use_piotlb(struct dmar_domain *domain)
drivers/iommu/intel/cache.c
373
static void cache_tag_flush_iotlb(struct dmar_domain *domain, struct cache_tag *tag,
drivers/iommu/intel/cache.c
405
static void cache_tag_flush_devtlb_psi(struct dmar_domain *domain, struct cache_tag *tag,
drivers/iommu/intel/cache.c
43
int cache_tag_assign(struct dmar_domain *domain, u16 did, struct device *dev,
drivers/iommu/intel/cache.c
436
void cache_tag_flush_range(struct dmar_domain *domain, unsigned long start,
drivers/iommu/intel/cache.c
489
void cache_tag_flush_all(struct dmar_domain *domain)
drivers/iommu/intel/cache.c
505
void cache_tag_flush_range_np(struct dmar_domain *domain, unsigned long start,
drivers/iommu/intel/cache.c
93
static void cache_tag_unassign(struct dmar_domain *domain, u16 did,
drivers/iommu/intel/iommu.c
1025
int domain_attach_iommu(struct dmar_domain *domain, struct intel_iommu *iommu)
drivers/iommu/intel/iommu.c
1071
void domain_detach_iommu(struct dmar_domain *domain, struct intel_iommu *iommu)
drivers/iommu/intel/iommu.c
1142
static int domain_context_mapping_one(struct dmar_domain *domain,
drivers/iommu/intel/iommu.c
1202
struct dmar_domain *domain = opaque;
drivers/iommu/intel/iommu.c
1209
domain_context_mapping(struct dmar_domain *domain, struct device *dev)
drivers/iommu/intel/iommu.c
1262
struct dmar_domain *domain,
drivers/iommu/intel/iommu.c
1283
struct dmar_domain *domain,
drivers/iommu/intel/iommu.c
1309
static int dmar_domain_attach_device(struct dmar_domain *domain,
drivers/iommu/intel/iommu.c
2778
static struct dmar_domain *paging_domain_alloc(void)
drivers/iommu/intel/iommu.c
2780
struct dmar_domain *domain;
drivers/iommu/intel/iommu.c
2825
struct dmar_domain *dmar_domain;
drivers/iommu/intel/iommu.c
2835
dmar_domain = paging_domain_alloc();
drivers/iommu/intel/iommu.c
2836
if (IS_ERR(dmar_domain))
drivers/iommu/intel/iommu.c
2837
return ERR_CAST(dmar_domain);
drivers/iommu/intel/iommu.c
2847
dmar_domain->iommu.iommu_device = dev;
drivers/iommu/intel/iommu.c
2848
dmar_domain->iommu.nid = dev_to_node(dev);
drivers/iommu/intel/iommu.c
2849
dmar_domain->domain.ops = &intel_fs_paging_domain_ops;
drivers/iommu/intel/iommu.c
2856
dmar_domain->iotlb_sync_map = true;
drivers/iommu/intel/iommu.c
2858
ret = pt_iommu_x86_64_init(&dmar_domain->fspt, &cfg, GFP_KERNEL);
drivers/iommu/intel/iommu.c
2860
kfree(dmar_domain);
drivers/iommu/intel/iommu.c
2865
dmar_domain->domain.pgsize_bitmap &= ~(u64)SZ_1G;
drivers/iommu/intel/iommu.c
2867
dmar_domain->domain.pgsize_bitmap = SZ_4K;
drivers/iommu/intel/iommu.c
2869
return &dmar_domain->domain;
drivers/iommu/intel/iommu.c
2907
struct dmar_domain *dmar_domain;
drivers/iommu/intel/iommu.c
2926
dmar_domain = paging_domain_alloc();
drivers/iommu/intel/iommu.c
2927
if (IS_ERR(dmar_domain))
drivers/iommu/intel/iommu.c
2928
return ERR_CAST(dmar_domain);
drivers/iommu/intel/iommu.c
2944
dmar_domain->iommu.iommu_device = dev;
drivers/iommu/intel/iommu.c
2945
dmar_domain->iommu.nid = dev_to_node(dev);
drivers/iommu/intel/iommu.c
2946
dmar_domain->domain.ops = &intel_ss_paging_domain_ops;
drivers/iommu/intel/iommu.c
2947
dmar_domain->nested_parent = flags & IOMMU_HWPT_ALLOC_NEST_PARENT;
drivers/iommu/intel/iommu.c
2950
dmar_domain->domain.dirty_ops = &intel_second_stage_dirty_ops;
drivers/iommu/intel/iommu.c
2952
ret = pt_iommu_vtdss_init(&dmar_domain->sspt, &cfg, GFP_KERNEL);
drivers/iommu/intel/iommu.c
2954
kfree(dmar_domain);
drivers/iommu/intel/iommu.c
2961
dmar_domain->domain.pgsize_bitmap &= ~(u64)SZ_2M;
drivers/iommu/intel/iommu.c
2963
dmar_domain->domain.pgsize_bitmap &= ~(u64)SZ_1G;
drivers/iommu/intel/iommu.c
2965
dmar_domain->domain.pgsize_bitmap = SZ_4K;
drivers/iommu/intel/iommu.c
2973
dmar_domain->iotlb_sync_map = true;
drivers/iommu/intel/iommu.c
2975
return &dmar_domain->domain;
drivers/iommu/intel/iommu.c
2998
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3000
if (WARN_ON(dmar_domain->nested_parent &&
drivers/iommu/intel/iommu.c
3001
!list_empty(&dmar_domain->s1_domains)))
drivers/iommu/intel/iommu.c
3004
if (WARN_ON(!list_empty(&dmar_domain->devices)))
drivers/iommu/intel/iommu.c
3007
pt_iommu_deinit(&dmar_domain->iommu);
drivers/iommu/intel/iommu.c
3009
kfree(dmar_domain->qi_batch);
drivers/iommu/intel/iommu.c
3010
kfree(dmar_domain);
drivers/iommu/intel/iommu.c
3013
static int paging_domain_compatible_first_stage(struct dmar_domain *dmar_domain,
drivers/iommu/intel/iommu.c
3016
if (WARN_ON(dmar_domain->domain.dirty_ops ||
drivers/iommu/intel/iommu.c
3017
dmar_domain->nested_parent))
drivers/iommu/intel/iommu.c
3025
!(dmar_domain->fspt.x86_64_pt.common.features &
drivers/iommu/intel/iommu.c
3031
dmar_domain->fspt.x86_64_pt.common.max_vasz_lg2 > 48)
drivers/iommu/intel/iommu.c
3036
(dmar_domain->domain.pgsize_bitmap & SZ_1G))
drivers/iommu/intel/iommu.c
3040
if ((rwbf_required(iommu)) && !dmar_domain->iotlb_sync_map)
drivers/iommu/intel/iommu.c
3047
paging_domain_compatible_second_stage(struct dmar_domain *dmar_domain,
drivers/iommu/intel/iommu.c
3050
unsigned int vasz_lg2 = dmar_domain->sspt.vtdss_pt.common.max_vasz_lg2;
drivers/iommu/intel/iommu.c
3054
pt_iommu_vtdss_hw_info(&dmar_domain->sspt, &pt_info);
drivers/iommu/intel/iommu.c
3056
if (dmar_domain->domain.dirty_ops && !ssads_supported(iommu))
drivers/iommu/intel/iommu.c
3058
if (dmar_domain->nested_parent && !nested_supported(iommu))
drivers/iommu/intel/iommu.c
3066
!(dmar_domain->sspt.vtdss_pt.common.features &
drivers/iommu/intel/iommu.c
3079
if (!(sslps & BIT(0)) && (dmar_domain->domain.pgsize_bitmap & SZ_2M))
drivers/iommu/intel/iommu.c
3081
if (!(sslps & BIT(1)) && (dmar_domain->domain.pgsize_bitmap & SZ_1G))
drivers/iommu/intel/iommu.c
3086
!dmar_domain->iotlb_sync_map)
drivers/iommu/intel/iommu.c
3093
if ((dmar_domain->sspt.vtdss_pt.common.features &
drivers/iommu/intel/iommu.c
3103
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3107
if (intel_domain_is_fs_paging(dmar_domain))
drivers/iommu/intel/iommu.c
3108
ret = paging_domain_compatible_first_stage(dmar_domain, iommu);
drivers/iommu/intel/iommu.c
3109
else if (intel_domain_is_ss_paging(dmar_domain))
drivers/iommu/intel/iommu.c
3110
ret = paging_domain_compatible_second_stage(dmar_domain, iommu);
drivers/iommu/intel/iommu.c
3155
static bool domain_support_force_snooping(struct dmar_domain *domain)
drivers/iommu/intel/iommu.c
3173
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3176
guard(spinlock_irqsave)(&dmar_domain->lock);
drivers/iommu/intel/iommu.c
3178
if (dmar_domain->force_snooping)
drivers/iommu/intel/iommu.c
3181
if (!domain_support_force_snooping(dmar_domain))
drivers/iommu/intel/iommu.c
3184
dmar_domain->force_snooping = true;
drivers/iommu/intel/iommu.c
3185
list_for_each_entry(info, &dmar_domain->devices, link)
drivers/iommu/intel/iommu.c
3193
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3195
guard(spinlock_irqsave)(&dmar_domain->lock);
drivers/iommu/intel/iommu.c
3196
if (!domain_support_force_snooping(dmar_domain))
drivers/iommu/intel/iommu.c
3203
dmar_domain->sspt.vtdss_pt.common.features |=
drivers/iommu/intel/iommu.c
3205
dmar_domain->force_snooping = true;
drivers/iommu/intel/iommu.c
3512
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3514
if (dmar_domain->iotlb_sync_map)
drivers/iommu/intel/iommu.c
3515
cache_tag_flush_range_np(dmar_domain, iova, iova + size - 1);
drivers/iommu/intel/iommu.c
3526
struct dmar_domain *dmar_domain;
drivers/iommu/intel/iommu.c
3536
dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3537
spin_lock_irqsave(&dmar_domain->lock, flags);
drivers/iommu/intel/iommu.c
3538
list_for_each_entry(curr, &dmar_domain->dev_pasids, link_domain) {
drivers/iommu/intel/iommu.c
3545
spin_unlock_irqrestore(&dmar_domain->lock, flags);
drivers/iommu/intel/iommu.c
3547
cache_tag_unassign_domain(dmar_domain, dev, pasid);
drivers/iommu/intel/iommu.c
3548
domain_detach_iommu(dmar_domain, iommu);
drivers/iommu/intel/iommu.c
3573
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3583
ret = domain_attach_iommu(dmar_domain, iommu);
drivers/iommu/intel/iommu.c
3587
ret = cache_tag_assign_domain(dmar_domain, dev, pasid);
drivers/iommu/intel/iommu.c
3593
spin_lock_irqsave(&dmar_domain->lock, flags);
drivers/iommu/intel/iommu.c
3594
list_add(&dev_pasid->link_domain, &dmar_domain->dev_pasids);
drivers/iommu/intel/iommu.c
3595
spin_unlock_irqrestore(&dmar_domain->lock, flags);
drivers/iommu/intel/iommu.c
3599
domain_detach_iommu(dmar_domain, iommu);
drivers/iommu/intel/iommu.c
3610
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3639
if (intel_domain_is_fs_paging(dmar_domain))
drivers/iommu/intel/iommu.c
3640
ret = domain_setup_first_level(iommu, dmar_domain,
drivers/iommu/intel/iommu.c
3642
else if (intel_domain_is_ss_paging(dmar_domain))
drivers/iommu/intel/iommu.c
3643
ret = domain_setup_second_level(iommu, dmar_domain,
drivers/iommu/intel/iommu.c
3706
static int parent_domain_set_dirty_tracking(struct dmar_domain *domain,
drivers/iommu/intel/iommu.c
3709
struct dmar_domain *s1_domain;
drivers/iommu/intel/iommu.c
3738
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/iommu.c
3741
spin_lock(&dmar_domain->lock);
drivers/iommu/intel/iommu.c
3742
if (dmar_domain->dirty_tracking == enable)
drivers/iommu/intel/iommu.c
3745
ret = device_set_dirty_tracking(&dmar_domain->devices, enable);
drivers/iommu/intel/iommu.c
3749
if (dmar_domain->nested_parent) {
drivers/iommu/intel/iommu.c
3750
ret = parent_domain_set_dirty_tracking(dmar_domain, enable);
drivers/iommu/intel/iommu.c
3755
dmar_domain->dirty_tracking = enable;
drivers/iommu/intel/iommu.c
3757
spin_unlock(&dmar_domain->lock);
drivers/iommu/intel/iommu.c
3762
device_set_dirty_tracking(&dmar_domain->devices,
drivers/iommu/intel/iommu.c
3763
dmar_domain->dirty_tracking);
drivers/iommu/intel/iommu.c
3764
spin_unlock(&dmar_domain->lock);
drivers/iommu/intel/iommu.c
828
domain_lookup_dev_info(struct dmar_domain *domain,
drivers/iommu/intel/iommu.h
1194
int domain_attach_iommu(struct dmar_domain *domain, struct intel_iommu *iommu);
drivers/iommu/intel/iommu.h
1195
void domain_detach_iommu(struct dmar_domain *domain, struct intel_iommu *iommu);
drivers/iommu/intel/iommu.h
1241
int cache_tag_assign(struct dmar_domain *domain, u16 did, struct device *dev,
drivers/iommu/intel/iommu.h
1243
int cache_tag_assign_domain(struct dmar_domain *domain,
drivers/iommu/intel/iommu.h
1245
void cache_tag_unassign_domain(struct dmar_domain *domain,
drivers/iommu/intel/iommu.h
1247
void cache_tag_flush_range(struct dmar_domain *domain, unsigned long start,
drivers/iommu/intel/iommu.h
1249
void cache_tag_flush_all(struct dmar_domain *domain);
drivers/iommu/intel/iommu.h
1250
void cache_tag_flush_range_np(struct dmar_domain *domain, unsigned long start,
drivers/iommu/intel/iommu.h
1333
static inline bool intel_domain_is_fs_paging(struct dmar_domain *domain)
drivers/iommu/intel/iommu.h
1338
static inline bool intel_domain_is_ss_paging(struct dmar_domain *domain)
drivers/iommu/intel/iommu.h
636
struct dmar_domain *s2_domain;
drivers/iommu/intel/iommu.h
649
PT_IOMMU_CHECK_DOMAIN(struct dmar_domain, iommu, domain);
drivers/iommu/intel/iommu.h
650
PT_IOMMU_CHECK_DOMAIN(struct dmar_domain, sspt.iommu, domain);
drivers/iommu/intel/iommu.h
651
PT_IOMMU_CHECK_DOMAIN(struct dmar_domain, fspt.iommu, domain);
drivers/iommu/intel/iommu.h
763
struct dmar_domain *domain; /* pointer to domain */
drivers/iommu/intel/iommu.h
789
static inline struct dmar_domain *to_dmar_domain(struct iommu_domain *dom)
drivers/iommu/intel/iommu.h
791
return container_of(dom, struct dmar_domain, domain);
drivers/iommu/intel/iommu.h
814
domain_id_iommu(struct dmar_domain *domain, struct intel_iommu *iommu)
drivers/iommu/intel/nested.c
123
cache_tag_flush_range(dmar_domain, inv_entry.addr,
drivers/iommu/intel/nested.c
135
struct dmar_domain *domain,
drivers/iommu/intel/nested.c
150
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/nested.c
161
ret = paging_domain_compatible(&dmar_domain->s2_domain->domain, dev);
drivers/iommu/intel/nested.c
173
ret = domain_setup_nested(iommu, dmar_domain, dev, pasid, old);
drivers/iommu/intel/nested.c
201
struct dmar_domain *s2_domain = to_dmar_domain(parent);
drivers/iommu/intel/nested.c
204
struct dmar_domain *domain;
drivers/iommu/intel/nested.c
25
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/nested.c
37
ret = paging_domain_compatible(&dmar_domain->s2_domain->domain, dev);
drivers/iommu/intel/nested.c
43
ret = domain_attach_iommu(dmar_domain, iommu);
drivers/iommu/intel/nested.c
49
ret = cache_tag_assign_domain(dmar_domain, dev, IOMMU_NO_PASID);
drivers/iommu/intel/nested.c
58
IOMMU_NO_PASID, dmar_domain);
drivers/iommu/intel/nested.c
62
info->domain = dmar_domain;
drivers/iommu/intel/nested.c
64
spin_lock_irqsave(&dmar_domain->lock, flags);
drivers/iommu/intel/nested.c
65
list_add(&info->link, &dmar_domain->devices);
drivers/iommu/intel/nested.c
66
spin_unlock_irqrestore(&dmar_domain->lock, flags);
drivers/iommu/intel/nested.c
72
cache_tag_unassign_domain(dmar_domain, dev, IOMMU_NO_PASID);
drivers/iommu/intel/nested.c
74
domain_detach_iommu(dmar_domain, iommu);
drivers/iommu/intel/nested.c
81
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/nested.c
82
struct dmar_domain *s2_domain = dmar_domain->s2_domain;
drivers/iommu/intel/nested.c
85
list_del(&dmar_domain->s2_link);
drivers/iommu/intel/nested.c
87
kfree(dmar_domain->qi_batch);
drivers/iommu/intel/nested.c
88
kfree(dmar_domain);
drivers/iommu/intel/nested.c
94
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/pasid.c
425
struct dmar_domain *domain, u16 did)
drivers/iommu/intel/pasid.c
447
struct dmar_domain *domain,
drivers/iommu/intel/pasid.c
624
struct dmar_domain *s2_domain,
drivers/iommu/intel/pasid.c
676
u32 pasid, struct dmar_domain *domain)
drivers/iommu/intel/pasid.c
679
struct dmar_domain *s2_domain = domain->s2_domain;
drivers/iommu/intel/pasid.h
310
struct dmar_domain *domain,
drivers/iommu/intel/pasid.h
318
u32 pasid, struct dmar_domain *domain);
drivers/iommu/intel/prq.c
63
struct dmar_domain *domain;
drivers/iommu/intel/svm.c
101
struct dmar_domain *domain = container_of(mn, struct dmar_domain, notifier);
drivers/iommu/intel/svm.c
196
struct dmar_domain *dmar_domain = to_dmar_domain(domain);
drivers/iommu/intel/svm.c
199
mmu_notifier_put(&dmar_domain->notifier);
drivers/iommu/intel/svm.c
210
struct dmar_domain *domain;
drivers/iommu/intel/svm.c
55
struct dmar_domain *domain = container_of(mn, struct dmar_domain, notifier);
drivers/iommu/intel/svm.c
72
struct dmar_domain *domain = container_of(mn, struct dmar_domain, notifier);