This patch series introduces a new infrastructure to the driver corefor representing "device isolation groups". That is, groups ofdevices which can be "isolated" in such a way that the rest of thesystem can be protected from them, even in the presence of userspaceor a guest OS directly driving the devices.

Isolation will typically be due to an IOMMU which can safely remap DMAand interrupts coming from these devices. We need to represent wholegroups, rather than individual devices, because there are a number ofcases where the group can be isolated as a whole, but devices withinit cannot be safely isolated from each other - this usually occursbecause the IOMMU cannot reliably distinguish which device in thegroup initiated a transaction. In other words, isolation groupsrepresent the minimum safe granularity for passthrough to guests oruserspace.

This series provides the core infraustrcture for tracking isolationgroups, and example implementations initializing the groupsappropriately for two PCI bridges (which include IOMMUs) found on IBMPOWER systems.

Actually using the group information is not included here, but DavidWoodhouse has expressed an interest in using a structure like this torepresent operations in iommu_ops more correctly.

Some tracking of groups is a prerequisite for safe passthrough ofdevices to guests or userspace, such as done by VFIO. Current VFIOpatches use the iommu_ops->device_group mechanism for this. However,that mechanism is awkward, because without an in-kernel concreterepresentation of groups, enumerating a group requires traversingevery device on a given bus type. It also fails to cover some veryplausible IOMMU topologies, because its groups cannot span devices onmultiple bus types.