On Tue, Feb 28, 2023 at 01:36:24PM +0000, Liu, Yi L wrote: > > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Sent: Tuesday, February 28, 2023 9:26 PM > > > > On Tue, Feb 28, 2023 at 01:22:50PM +0000, Liu, Yi L wrote: > > > > > > A null iommufd pointer and a bound df flag is sufficient to see that > > > > it is compat mode. > > > > > > Hope df->is_cdev_device suits your expectation.:-) The code will look > > > like below: > > > > Yes, this is better.. However I'd suggest 'uses_container' as it is > > clearer what the special case is > > Surely doable. Need to add a helper like below: > > bool vfio_device_group_uses_container() > { > lockdep_assert_held(&device->group->group_lock); > return device->group->container; > } It should come from the df. If you have a df then by definition: smp_load_acquire(..) == false - Not bound df->device->iommufd_ctx != NULL - Using iommufd df->group->containter != NULL - Using legacy container all other cases - NO_IOMMU No locking required since all these cases after the smp_load_acquire must be fixed for the lifetime of the df. Jason