> From: Lu Baolu <baolu...@linux.intel.com> > Sent: Tuesday, April 12, 2022 9:03 PM > > On 2022/4/12 15:37, Tian, Kevin wrote: > >> From: Lu Baolu <baolu...@linux.intel.com> > >> Sent: Tuesday, April 12, 2022 1:09 PM > >> On 2022/4/12 11:15, Tian, Kevin wrote: > >>>> From: Lu Baolu <baolu...@linux.intel.com> > >>>> Sent: Sunday, April 10, 2022 6:25 PM > >>> > >>>> > >>>> This adds a flag in the iommu_group struct to indicate an immutable > >>>> singleton group, and uses standard PCI bus topology, isolation features, > >>>> and DMA alias quirks to set the flag. If the device came from DT, > assume > >>>> it is static and then the singleton attribute can know from the device > >>>> count in the group. > >>> > >>> where does the assumption come from? > >> > >> Hotplug is the only factor that can dynamically affect the > >> characteristics of IOMMU group singleton as far as I can see. If a > >> device node was created from the DT, it could be treated as static, > >> hence we can judge the singleton in iommu probe phase during boot. > > > > I didn't get this. Let's look at your code in iommu_group_add_device(): > > > > + else if (is_of_node(dev_fwnode(dev))) > > + group->immutable_singleton = > > + (iommu_group_device_count(group) == 1); > > > > Even if there is a multi-devices group above logic will set the flag when > > the first device in the group is added since at that time there is only > > one device in the group. We need other concrete information to tell > > it similar to how you walk PCI hierarchy to find out the fact... > > This is a small trick to make things simpler. Once more devices are > added to the group, the flag will be flipped. All iommu_group's should > be settled down before any drivers start to consume this flag. >
As an immutable flag it cannot be flipped. What about SVA has been enabled on the 1st device before the 2nd one is added to the group? _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu