iommu/vt-d: Make domain_add_dev_info() take struct device

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
David Woodhouse 2014-03-09 16:27:31 -07:00
parent bf9c9eda71
commit 5913c9bf0e

View file

@ -2470,25 +2470,24 @@ static int identity_mapping(struct device *dev)
} }
static int domain_add_dev_info(struct dmar_domain *domain, static int domain_add_dev_info(struct dmar_domain *domain,
struct pci_dev *pdev, struct device *dev, int translation)
int translation)
{ {
struct dmar_domain *ndomain; struct dmar_domain *ndomain;
struct intel_iommu *iommu; struct intel_iommu *iommu;
u8 bus, devfn; u8 bus, devfn;
int ret; int ret;
iommu = device_to_iommu(&pdev->dev, &bus, &devfn); iommu = device_to_iommu(dev, &bus, &devfn);
if (!iommu) if (!iommu)
return -ENODEV; return -ENODEV;
ndomain = dmar_insert_dev_info(iommu, bus, devfn, &pdev->dev, domain); ndomain = dmar_insert_dev_info(iommu, bus, devfn, dev, domain);
if (ndomain != domain) if (ndomain != domain)
return -EBUSY; return -EBUSY;
ret = domain_context_mapping(domain, &pdev->dev, translation); ret = domain_context_mapping(domain, dev, translation);
if (ret) { if (ret) {
domain_remove_one_dev_info(domain, &pdev->dev); domain_remove_one_dev_info(domain, dev);
return ret; return ret;
} }
@ -2607,7 +2606,7 @@ static int __init iommu_prepare_static_identity_mapping(int hw)
for_each_pci_dev(pdev) { for_each_pci_dev(pdev) {
if (iommu_should_identity_map(&pdev->dev, 1)) { if (iommu_should_identity_map(&pdev->dev, 1)) {
ret = domain_add_dev_info(si_domain, pdev, ret = domain_add_dev_info(si_domain, &pdev->dev,
hw ? CONTEXT_TT_PASS_THROUGH : hw ? CONTEXT_TT_PASS_THROUGH :
CONTEXT_TT_MULTI_LEVEL); CONTEXT_TT_MULTI_LEVEL);
if (ret) { if (ret) {
@ -2940,7 +2939,7 @@ static int iommu_no_mapping(struct device *dev)
*/ */
if (iommu_should_identity_map(&pdev->dev, 0)) { if (iommu_should_identity_map(&pdev->dev, 0)) {
int ret; int ret;
ret = domain_add_dev_info(si_domain, pdev, ret = domain_add_dev_info(si_domain, dev,
hw_pass_through ? hw_pass_through ?
CONTEXT_TT_PASS_THROUGH : CONTEXT_TT_PASS_THROUGH :
CONTEXT_TT_MULTI_LEVEL); CONTEXT_TT_MULTI_LEVEL);
@ -4201,7 +4200,7 @@ static int intel_iommu_attach_device(struct iommu_domain *domain,
dmar_domain->agaw--; dmar_domain->agaw--;
} }
return domain_add_dev_info(dmar_domain, pdev, CONTEXT_TT_MULTI_LEVEL); return domain_add_dev_info(dmar_domain, dev, CONTEXT_TT_MULTI_LEVEL);
} }
static void intel_iommu_detach_device(struct iommu_domain *domain, static void intel_iommu_detach_device(struct iommu_domain *domain,