RE: [PATCH RFC v3 02/12] iommu: Add a flag to indicate immutable singleton group
From: Tian, Kevin
Date: Tue Apr 12 2022 - 19:43:25 EST
> From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
> Sent: Tuesday, April 12, 2022 9:03 PM
>
> On 2022/4/12 15:37, Tian, Kevin wrote:
> >> From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
> >> Sent: Tuesday, April 12, 2022 1:09 PM
> >> On 2022/4/12 11:15, Tian, Kevin wrote:
> >>>> From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
> >>>> 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?