Loading drivers/iommu/fsl_pamu_domain.c +16 −25 Original line number Diff line number Diff line Loading @@ -923,7 +923,7 @@ static struct iommu_group *get_pci_device_group(struct pci_dev *pdev) pci_endpt_partioning = check_pci_ctl_endpt_part(pci_ctl); /* We can partition PCIe devices so assign device group to the device */ if (pci_endpt_partioning) { group = iommu_group_get_for_dev(&pdev->dev); group = pci_device_group(&pdev->dev); /* * PCIe controller is not a paritionable entity Loading Loading @@ -956,44 +956,34 @@ static struct iommu_group *get_pci_device_group(struct pci_dev *pdev) return group; } static int fsl_pamu_add_device(struct device *dev) static struct iommu_group *fsl_pamu_device_group(struct device *dev) { struct iommu_group *group = ERR_PTR(-ENODEV); struct pci_dev *pdev; const u32 *prop; int ret = 0, len; int len; /* * For platform devices we allocate a separate group for * each of the devices. */ if (dev_is_pci(dev)) { pdev = to_pci_dev(dev); /* Don't create device groups for virtual PCI bridges */ if (pdev->subordinate) return 0; group = get_pci_device_group(pdev); } else { prop = of_get_property(dev->of_node, "fsl,liodn", &len); if (prop) if (dev_is_pci(dev)) group = get_pci_device_group(to_pci_dev(dev)); else if (of_get_property(dev->of_node, "fsl,liodn", &len)) group = get_device_iommu_group(dev); return group; } static int fsl_pamu_add_device(struct device *dev) { struct iommu_group *group; group = iommu_group_get_for_dev(dev); if (IS_ERR(group)) return PTR_ERR(group); /* * Check if device has already been added to an iommu group. * Group could have already been created for a PCI device in * the iommu_group_get_for_dev path. */ if (!dev->iommu_group) ret = iommu_group_add_device(group, dev); iommu_group_put(group); return ret; return 0; } static void fsl_pamu_remove_device(struct device *dev) Loading Loading @@ -1072,6 +1062,7 @@ static const struct iommu_ops fsl_pamu_ops = { .domain_get_attr = fsl_pamu_get_domain_attr, .add_device = fsl_pamu_add_device, .remove_device = fsl_pamu_remove_device, .device_group = fsl_pamu_device_group, }; int __init pamu_domain_init(void) Loading Loading
drivers/iommu/fsl_pamu_domain.c +16 −25 Original line number Diff line number Diff line Loading @@ -923,7 +923,7 @@ static struct iommu_group *get_pci_device_group(struct pci_dev *pdev) pci_endpt_partioning = check_pci_ctl_endpt_part(pci_ctl); /* We can partition PCIe devices so assign device group to the device */ if (pci_endpt_partioning) { group = iommu_group_get_for_dev(&pdev->dev); group = pci_device_group(&pdev->dev); /* * PCIe controller is not a paritionable entity Loading Loading @@ -956,44 +956,34 @@ static struct iommu_group *get_pci_device_group(struct pci_dev *pdev) return group; } static int fsl_pamu_add_device(struct device *dev) static struct iommu_group *fsl_pamu_device_group(struct device *dev) { struct iommu_group *group = ERR_PTR(-ENODEV); struct pci_dev *pdev; const u32 *prop; int ret = 0, len; int len; /* * For platform devices we allocate a separate group for * each of the devices. */ if (dev_is_pci(dev)) { pdev = to_pci_dev(dev); /* Don't create device groups for virtual PCI bridges */ if (pdev->subordinate) return 0; group = get_pci_device_group(pdev); } else { prop = of_get_property(dev->of_node, "fsl,liodn", &len); if (prop) if (dev_is_pci(dev)) group = get_pci_device_group(to_pci_dev(dev)); else if (of_get_property(dev->of_node, "fsl,liodn", &len)) group = get_device_iommu_group(dev); return group; } static int fsl_pamu_add_device(struct device *dev) { struct iommu_group *group; group = iommu_group_get_for_dev(dev); if (IS_ERR(group)) return PTR_ERR(group); /* * Check if device has already been added to an iommu group. * Group could have already been created for a PCI device in * the iommu_group_get_for_dev path. */ if (!dev->iommu_group) ret = iommu_group_add_device(group, dev); iommu_group_put(group); return ret; return 0; } static void fsl_pamu_remove_device(struct device *dev) Loading Loading @@ -1072,6 +1062,7 @@ static const struct iommu_ops fsl_pamu_ops = { .domain_get_attr = fsl_pamu_get_domain_attr, .add_device = fsl_pamu_add_device, .remove_device = fsl_pamu_remove_device, .device_group = fsl_pamu_device_group, }; int __init pamu_domain_init(void) Loading