diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-08-01 21:56:46 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-08-01 21:56:45 -0700 |
| commit | 6bdacafee48a62a503bd5272fcbf37ecdbba5ddd (patch) | |
| tree | fd765c22749b219af318a5fe5e7986f373d8817e | |
| parent | aec1c3826b5ae1f5fdddc35b05b778c4fbdc22e7 (diff) | |
| parent | 6fbe4a9662e808bf381a834d85c4b5e08f9241df (diff) | |
Merge "iommu/arm-smmu: Don't group PCI devices"
| -rw-r--r-- | drivers/iommu/arm-smmu.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c index db4b66bb18ed..55eff5ae04e4 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c @@ -2848,10 +2848,16 @@ static struct iommu_group *arm_smmu_device_group(struct device *dev) struct iommu_group *group; int ret; - if (dev_is_pci(dev)) - group = pci_device_group(dev); - else - group = generic_device_group(dev); + /* + * We used to call pci_device_group here for dev_is_pci(dev) + * devices. However, that causes the root complex device to be + * placed in the same group as endpoint devices (and probably puts + * all endpoint devices in the same group as well), which makes + * things tricky in the DMA layer since we don't actually want to + * attach *everybody* in the group when one client calls attach. + * Instead, we'll just allocate a new group for everybody here. + */ + group = generic_device_group(dev); if (IS_ERR(group)) return group; |
