Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: x86/amd-iommu: Export cache-coherency capability iommu-api: Extension to check for interrupt remapping x86/amd-iommu: Use for_each_pci_dev()
This commit is contained in:
commit
cc77b4db00
3 changed files with 9 additions and 2 deletions
|
@ -2572,6 +2572,11 @@ static phys_addr_t amd_iommu_iova_to_phys(struct iommu_domain *dom,
|
||||||
static int amd_iommu_domain_has_cap(struct iommu_domain *domain,
|
static int amd_iommu_domain_has_cap(struct iommu_domain *domain,
|
||||||
unsigned long cap)
|
unsigned long cap)
|
||||||
{
|
{
|
||||||
|
switch (cap) {
|
||||||
|
case IOMMU_CAP_CACHE_COHERENCY:
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2609,8 +2614,7 @@ int __init amd_iommu_init_passthrough(void)
|
||||||
|
|
||||||
pt_domain->mode |= PAGE_MODE_NONE;
|
pt_domain->mode |= PAGE_MODE_NONE;
|
||||||
|
|
||||||
while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) {
|
for_each_pci_dev(dev) {
|
||||||
|
|
||||||
if (!check_device(&dev->dev))
|
if (!check_device(&dev->dev))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -3698,6 +3698,8 @@ static int intel_iommu_domain_has_cap(struct iommu_domain *domain,
|
||||||
|
|
||||||
if (cap == IOMMU_CAP_CACHE_COHERENCY)
|
if (cap == IOMMU_CAP_CACHE_COHERENCY)
|
||||||
return dmar_domain->iommu_snooping;
|
return dmar_domain->iommu_snooping;
|
||||||
|
if (cap == IOMMU_CAP_INTR_REMAP)
|
||||||
|
return intr_remapping_enabled;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ struct iommu_domain {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define IOMMU_CAP_CACHE_COHERENCY 0x1
|
#define IOMMU_CAP_CACHE_COHERENCY 0x1
|
||||||
|
#define IOMMU_CAP_INTR_REMAP 0x2 /* isolates device intrs */
|
||||||
|
|
||||||
struct iommu_ops {
|
struct iommu_ops {
|
||||||
int (*domain_init)(struct iommu_domain *domain);
|
int (*domain_init)(struct iommu_domain *domain);
|
||||||
|
|
Reference in a new issue