All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Eric Auger <eric.auger@redhat.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"intel-gvt-dev@lists.freedesktop.org" 
	<intel-gvt-dev@lists.freedesktop.org>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	Longfang Liu <liulongfang@huawei.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	"Shameer Kolothum" <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	"Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	"Liu, Yi L" <yi.l.liu@intel.com>
Subject: RE: [PATCH 05/10] vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent()
Date: Tue, 1 Nov 2022 07:52:23 +0000	[thread overview]
Message-ID: <BN9PR11MB52766FB4EFCFB2197ACDC1F98C369@BN9PR11MB5276.namprd11.prod.outlook.com> (raw)
In-Reply-To: <5-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Wednesday, October 26, 2022 2:17 AM
> 
> iommufd doesn't establish the iommu_domains until after the device FD is
> opened, even if the container has been set. This design is part of moving
> away from the group centric iommu APIs.
> 
> This is fine, except that the normal sequence of establishing the kvm
> wbindv won't work:

wbindv -> wbinvd

> 
>    group = open("/dev/vfio/XX")
>    ioctl(group, VFIO_GROUP_SET_CONTAINER)
>    ioctl(kvm, KVM_DEV_VFIO_GROUP_ADD)
>    ioctl(group, VFIO_GROUP_GET_DEVICE_FD)
> 
> As the domains don't start existing until GET_DEVICE_FD. Further,
> GET_DEVICE_FD requires that KVM_DEV_VFIO_GROUP_ADD already be
> done as that
> is what sets the group->kvm and thus device->kvm for the driver to use
> during open.
> 
> Now that we have device centric cap ops and the new
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY we know what the
> iommu_domain will be
> capable of without having to create it. Use this to compute

it's worth noting that the prerequisite is that vfio always enforces
cache coherency on a domain according to the iommu capability
of the devices attached to that domain. There is no mix of attaching
a device supporting the cap to a domain which doesn't enforce
coherency. With that we know what the domain will be w/o having
to create it.

> vfio_file_enforced_coherent() and resolve the ordering problems.
> 
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  drivers/vfio/container.c |  5 +++--
>  drivers/vfio/vfio.h      |  2 --
>  drivers/vfio/vfio_main.c | 27 ++++++++++++++-------------
>  3 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/vfio/container.c b/drivers/vfio/container.c
> index 499777930b08fa..d97747dfb05d02 100644
> --- a/drivers/vfio/container.c
> +++ b/drivers/vfio/container.c
> @@ -188,8 +188,9 @@ void vfio_device_container_unregister(struct
> vfio_device *device)
>  			device->group->container->iommu_data, device);
>  }
> 
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg)
> +static long
> +vfio_container_ioctl_check_extension(struct vfio_container *container,
> +				     unsigned long arg)
>  {
>  	struct vfio_iommu_driver *driver;
>  	long ret = 0;
> diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
> index 54e5a8e0834ccb..247590334e14b0 100644
> --- a/drivers/vfio/vfio.h
> +++ b/drivers/vfio/vfio.h
> @@ -119,8 +119,6 @@ int vfio_container_attach_group(struct
> vfio_container *container,
>  void vfio_group_detach_container(struct vfio_group *group);
>  void vfio_device_container_register(struct vfio_device *device);
>  void vfio_device_container_unregister(struct vfio_device *device);
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg);
>  int __init vfio_container_init(void);
>  void vfio_container_cleanup(void);
> 
> diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> index 1e414b2c48a511..a8d1fbfcc3ddad 100644
> --- a/drivers/vfio/vfio_main.c
> +++ b/drivers/vfio/vfio_main.c
> @@ -1625,24 +1625,25 @@ EXPORT_SYMBOL_GPL(vfio_file_is_group);
>  bool vfio_file_enforced_coherent(struct file *file)
>  {
>  	struct vfio_group *group = file->private_data;
> -	bool ret;
> +	struct vfio_device *device;
> +	bool ret = true;
> 
>  	if (!vfio_file_is_group(file))
>  		return true;
> 
> -	mutex_lock(&group->group_lock);
> -	if (group->container) {
> -		ret = vfio_container_ioctl_check_extension(group->container,
> -
> VFIO_DMA_CC_IOMMU);
> -	} else {
> -		/*
> -		 * Since the coherency state is determined only once a
> container
> -		 * is attached the user must do so before they can prove they
> -		 * have permission.
> -		 */
> -		ret = true;
> +	/*
> +	 * If the device does not have
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY then
> +	 * any domain later attached to it will also not support it.
> +	 */

also add the other part i.e. if the device does have the cap then any domain
later attached to it will have the cap enabled. Only with both clarified
we can safely use the device cap here.

> +	mutex_lock(&group->device_lock);
> +	list_for_each_entry(device, &group->device_list, group_next) {
> +		if (!device_iommu_capable(device->dev,
> +
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY)) {
> +			ret = false;
> +			break;
> +		}
>  	}
> -	mutex_unlock(&group->group_lock);
> +	mutex_unlock(&group->device_lock);
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(vfio_file_enforced_coherent);
> --
> 2.38.0
> 


WARNING: multiple messages have this Message-ID (diff)
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Eric Auger <eric.auger@redhat.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"intel-gvt-dev@lists.freedesktop.org"
	<intel-gvt-dev@lists.freedesktop.org>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	Longfang Liu <liulongfang@huawei.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	"Shameer Kolothum" <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	"Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: RE: [PATCH 05/10] vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent()
Date: Tue, 1 Nov 2022 07:52:23 +0000	[thread overview]
Message-ID: <BN9PR11MB52766FB4EFCFB2197ACDC1F98C369@BN9PR11MB5276.namprd11.prod.outlook.com> (raw)
In-Reply-To: <5-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Wednesday, October 26, 2022 2:17 AM
> 
> iommufd doesn't establish the iommu_domains until after the device FD is
> opened, even if the container has been set. This design is part of moving
> away from the group centric iommu APIs.
> 
> This is fine, except that the normal sequence of establishing the kvm
> wbindv won't work:

wbindv -> wbinvd

> 
>    group = open("/dev/vfio/XX")
>    ioctl(group, VFIO_GROUP_SET_CONTAINER)
>    ioctl(kvm, KVM_DEV_VFIO_GROUP_ADD)
>    ioctl(group, VFIO_GROUP_GET_DEVICE_FD)
> 
> As the domains don't start existing until GET_DEVICE_FD. Further,
> GET_DEVICE_FD requires that KVM_DEV_VFIO_GROUP_ADD already be
> done as that
> is what sets the group->kvm and thus device->kvm for the driver to use
> during open.
> 
> Now that we have device centric cap ops and the new
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY we know what the
> iommu_domain will be
> capable of without having to create it. Use this to compute

it's worth noting that the prerequisite is that vfio always enforces
cache coherency on a domain according to the iommu capability
of the devices attached to that domain. There is no mix of attaching
a device supporting the cap to a domain which doesn't enforce
coherency. With that we know what the domain will be w/o having
to create it.

> vfio_file_enforced_coherent() and resolve the ordering problems.
> 
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  drivers/vfio/container.c |  5 +++--
>  drivers/vfio/vfio.h      |  2 --
>  drivers/vfio/vfio_main.c | 27 ++++++++++++++-------------
>  3 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/vfio/container.c b/drivers/vfio/container.c
> index 499777930b08fa..d97747dfb05d02 100644
> --- a/drivers/vfio/container.c
> +++ b/drivers/vfio/container.c
> @@ -188,8 +188,9 @@ void vfio_device_container_unregister(struct
> vfio_device *device)
>  			device->group->container->iommu_data, device);
>  }
> 
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg)
> +static long
> +vfio_container_ioctl_check_extension(struct vfio_container *container,
> +				     unsigned long arg)
>  {
>  	struct vfio_iommu_driver *driver;
>  	long ret = 0;
> diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
> index 54e5a8e0834ccb..247590334e14b0 100644
> --- a/drivers/vfio/vfio.h
> +++ b/drivers/vfio/vfio.h
> @@ -119,8 +119,6 @@ int vfio_container_attach_group(struct
> vfio_container *container,
>  void vfio_group_detach_container(struct vfio_group *group);
>  void vfio_device_container_register(struct vfio_device *device);
>  void vfio_device_container_unregister(struct vfio_device *device);
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg);
>  int __init vfio_container_init(void);
>  void vfio_container_cleanup(void);
> 
> diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> index 1e414b2c48a511..a8d1fbfcc3ddad 100644
> --- a/drivers/vfio/vfio_main.c
> +++ b/drivers/vfio/vfio_main.c
> @@ -1625,24 +1625,25 @@ EXPORT_SYMBOL_GPL(vfio_file_is_group);
>  bool vfio_file_enforced_coherent(struct file *file)
>  {
>  	struct vfio_group *group = file->private_data;
> -	bool ret;
> +	struct vfio_device *device;
> +	bool ret = true;
> 
>  	if (!vfio_file_is_group(file))
>  		return true;
> 
> -	mutex_lock(&group->group_lock);
> -	if (group->container) {
> -		ret = vfio_container_ioctl_check_extension(group->container,
> -
> VFIO_DMA_CC_IOMMU);
> -	} else {
> -		/*
> -		 * Since the coherency state is determined only once a
> container
> -		 * is attached the user must do so before they can prove they
> -		 * have permission.
> -		 */
> -		ret = true;
> +	/*
> +	 * If the device does not have
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY then
> +	 * any domain later attached to it will also not support it.
> +	 */

also add the other part i.e. if the device does have the cap then any domain
later attached to it will have the cap enabled. Only with both clarified
we can safely use the device cap here.

> +	mutex_lock(&group->device_lock);
> +	list_for_each_entry(device, &group->device_list, group_next) {
> +		if (!device_iommu_capable(device->dev,
> +
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY)) {
> +			ret = false;
> +			break;
> +		}
>  	}
> -	mutex_unlock(&group->group_lock);
> +	mutex_unlock(&group->device_lock);
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(vfio_file_enforced_coherent);
> --
> 2.38.0
> 


WARNING: multiple messages have this Message-ID (diff)
From: "Tian, Kevin" <kevin.tian@intel.com>
To: Jason Gunthorpe <jgg@nvidia.com>,
	Alexander Gordeev <agordeev@linux.ibm.com>,
	David Airlie <airlied@gmail.com>,
	Tony Krowiak <akrowiak@linux.ibm.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Cornelia Huck <cohuck@redhat.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Diana Craciun <diana.craciun@oss.nxp.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Eric Auger <eric.auger@redhat.com>,
	"Eric Farman" <farman@linux.ibm.com>,
	Harald Freudenberger <freude@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>,
	"intel-gvt-dev@lists.freedesktop.org"
	<intel-gvt-dev@lists.freedesktop.org>,
	"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
	Jani Nikula <jani.nikula@linux.intel.com>,
	Jason Herne <jjherne@linux.ibm.com>,
	"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
	Joerg Roedel <joro@8bytes.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-s390@vger.kernel.org" <linux-s390@vger.kernel.org>,
	Longfang Liu <liulongfang@huawei.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	Peter Oberparleiter <oberpar@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Robin Murphy <robin.murphy@arm.com>,
	"Vivi, Rodrigo" <rodrigo.vivi@intel.com>,
	"Shameer Kolothum" <shameerali.kolothum.thodi@huawei.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>,
	Vineeth Vijayan <vneethv@linux.ibm.com>,
	Will Deacon <will@kernel.org>, Yishai Hadas <yishaih@nvidia.com>,
	Zhenyu Wang <zhenyuw@linux.intel.com>,
	"Wang, Zhi A" <zhi.a.wang@intel.com>
Cc: "Liu, Yi L" <yi.l.liu@intel.com>,
	Nicolin Chen <nicolinc@nvidia.com>,
	Lu Baolu <baolu.lu@linux.intel.com>
Subject: Re: [Intel-gfx] [PATCH 05/10] vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent()
Date: Tue, 1 Nov 2022 07:52:23 +0000	[thread overview]
Message-ID: <BN9PR11MB52766FB4EFCFB2197ACDC1F98C369@BN9PR11MB5276.namprd11.prod.outlook.com> (raw)
In-Reply-To: <5-v1-4991695894d8+211-vfio_iommufd_jgg@nvidia.com>

> From: Jason Gunthorpe <jgg@nvidia.com>
> Sent: Wednesday, October 26, 2022 2:17 AM
> 
> iommufd doesn't establish the iommu_domains until after the device FD is
> opened, even if the container has been set. This design is part of moving
> away from the group centric iommu APIs.
> 
> This is fine, except that the normal sequence of establishing the kvm
> wbindv won't work:

wbindv -> wbinvd

> 
>    group = open("/dev/vfio/XX")
>    ioctl(group, VFIO_GROUP_SET_CONTAINER)
>    ioctl(kvm, KVM_DEV_VFIO_GROUP_ADD)
>    ioctl(group, VFIO_GROUP_GET_DEVICE_FD)
> 
> As the domains don't start existing until GET_DEVICE_FD. Further,
> GET_DEVICE_FD requires that KVM_DEV_VFIO_GROUP_ADD already be
> done as that
> is what sets the group->kvm and thus device->kvm for the driver to use
> during open.
> 
> Now that we have device centric cap ops and the new
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY we know what the
> iommu_domain will be
> capable of without having to create it. Use this to compute

it's worth noting that the prerequisite is that vfio always enforces
cache coherency on a domain according to the iommu capability
of the devices attached to that domain. There is no mix of attaching
a device supporting the cap to a domain which doesn't enforce
coherency. With that we know what the domain will be w/o having
to create it.

> vfio_file_enforced_coherent() and resolve the ordering problems.
> 
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  drivers/vfio/container.c |  5 +++--
>  drivers/vfio/vfio.h      |  2 --
>  drivers/vfio/vfio_main.c | 27 ++++++++++++++-------------
>  3 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/vfio/container.c b/drivers/vfio/container.c
> index 499777930b08fa..d97747dfb05d02 100644
> --- a/drivers/vfio/container.c
> +++ b/drivers/vfio/container.c
> @@ -188,8 +188,9 @@ void vfio_device_container_unregister(struct
> vfio_device *device)
>  			device->group->container->iommu_data, device);
>  }
> 
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg)
> +static long
> +vfio_container_ioctl_check_extension(struct vfio_container *container,
> +				     unsigned long arg)
>  {
>  	struct vfio_iommu_driver *driver;
>  	long ret = 0;
> diff --git a/drivers/vfio/vfio.h b/drivers/vfio/vfio.h
> index 54e5a8e0834ccb..247590334e14b0 100644
> --- a/drivers/vfio/vfio.h
> +++ b/drivers/vfio/vfio.h
> @@ -119,8 +119,6 @@ int vfio_container_attach_group(struct
> vfio_container *container,
>  void vfio_group_detach_container(struct vfio_group *group);
>  void vfio_device_container_register(struct vfio_device *device);
>  void vfio_device_container_unregister(struct vfio_device *device);
> -long vfio_container_ioctl_check_extension(struct vfio_container *container,
> -					  unsigned long arg);
>  int __init vfio_container_init(void);
>  void vfio_container_cleanup(void);
> 
> diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> index 1e414b2c48a511..a8d1fbfcc3ddad 100644
> --- a/drivers/vfio/vfio_main.c
> +++ b/drivers/vfio/vfio_main.c
> @@ -1625,24 +1625,25 @@ EXPORT_SYMBOL_GPL(vfio_file_is_group);
>  bool vfio_file_enforced_coherent(struct file *file)
>  {
>  	struct vfio_group *group = file->private_data;
> -	bool ret;
> +	struct vfio_device *device;
> +	bool ret = true;
> 
>  	if (!vfio_file_is_group(file))
>  		return true;
> 
> -	mutex_lock(&group->group_lock);
> -	if (group->container) {
> -		ret = vfio_container_ioctl_check_extension(group->container,
> -
> VFIO_DMA_CC_IOMMU);
> -	} else {
> -		/*
> -		 * Since the coherency state is determined only once a
> container
> -		 * is attached the user must do so before they can prove they
> -		 * have permission.
> -		 */
> -		ret = true;
> +	/*
> +	 * If the device does not have
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY then
> +	 * any domain later attached to it will also not support it.
> +	 */

also add the other part i.e. if the device does have the cap then any domain
later attached to it will have the cap enabled. Only with both clarified
we can safely use the device cap here.

> +	mutex_lock(&group->device_lock);
> +	list_for_each_entry(device, &group->device_list, group_next) {
> +		if (!device_iommu_capable(device->dev,
> +
> IOMMU_CAP_ENFORCE_CACHE_COHERENCY)) {
> +			ret = false;
> +			break;
> +		}
>  	}
> -	mutex_unlock(&group->group_lock);
> +	mutex_unlock(&group->device_lock);
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(vfio_file_enforced_coherent);
> --
> 2.38.0
> 


  reply	other threads:[~2022-11-01  7:52 UTC|newest]

Thread overview: 206+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-25 18:17 [PATCH 00/10] Connect VFIO to IOMMUFD Jason Gunthorpe
2022-10-25 18:17 ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17 ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 01/10] vfio: Move vfio_device driver open/close code to a function Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:33   ` Tian, Kevin
2022-11-01  7:33     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:33     ` Tian, Kevin
2022-11-01 12:12     ` Jason Gunthorpe
2022-11-01 12:12       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:12       ` Jason Gunthorpe
2022-11-01 14:36   ` Yi Liu
2022-11-01 14:36     ` [Intel-gfx] " Yi Liu
2022-11-01 14:36     ` Yi Liu
2022-10-25 18:17 ` [PATCH 02/10] vfio: Move vfio_device_assign_container() into vfio_device_first_open() Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-11-01  7:38   ` Tian, Kevin
2022-11-01  7:38     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:38     ` Tian, Kevin
2022-11-01 12:14     ` Jason Gunthorpe
2022-11-01 12:14       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:14       ` Jason Gunthorpe
2022-11-01 14:37   ` Yi Liu
2022-11-01 14:37     ` Yi Liu
2022-11-01 14:37     ` [Intel-gfx] " Yi Liu
2022-11-01 17:37     ` Jason Gunthorpe
2022-11-01 17:37       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 17:37       ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 03/10] vfio: Rename vfio_device_assign/unassign_container() Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:39   ` Tian, Kevin
2022-11-01  7:39     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:39     ` Tian, Kevin
2022-11-01 14:39   ` Yi Liu
2022-11-01 14:39     ` [Intel-gfx] " Yi Liu
2022-11-01 14:39     ` Yi Liu
2022-10-25 18:17 ` [PATCH 04/10] vfio: Move storage of allow_unsafe_interrupts to vfio_main.c Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-10-26 21:24   ` Alex Williamson
2022-10-26 21:24     ` [Intel-gfx] " Alex Williamson
2022-10-26 21:24     ` Alex Williamson
2022-10-28 18:40     ` Jason Gunthorpe
2022-10-28 18:40       ` [Intel-gfx] " Jason Gunthorpe
2022-10-28 18:40       ` Jason Gunthorpe
2022-10-31 22:45       ` [Intel-gfx] " Alex Williamson
2022-10-31 22:45         ` Alex Williamson
2022-10-31 22:45         ` Alex Williamson
2022-11-07 13:19         ` Jason Gunthorpe
2022-11-07 13:19           ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 13:19           ` Jason Gunthorpe
2022-11-07 15:18           ` Alex Williamson
2022-11-07 15:18             ` Alex Williamson
2022-11-07 15:18             ` [Intel-gfx] " Alex Williamson
2022-11-07 15:32             ` Jason Gunthorpe
2022-11-07 15:32               ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 15:32               ` Jason Gunthorpe
2022-11-07 18:05               ` Alex Williamson
2022-11-07 18:05                 ` Alex Williamson
2022-11-07 18:05                 ` [Intel-gfx] " Alex Williamson
2022-11-07 18:45                 ` Jason Gunthorpe
2022-11-07 18:45                   ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 18:45                   ` Jason Gunthorpe
2022-11-08 22:55                   ` Alex Williamson
2022-11-08 22:55                     ` [Intel-gfx] " Alex Williamson
2022-11-08 22:55                     ` Alex Williamson
2022-11-09  1:05                     ` Jason Gunthorpe
2022-11-09  1:05                       ` [Intel-gfx] " Jason Gunthorpe
2022-11-09  1:05                       ` Jason Gunthorpe
2022-11-09  3:21                       ` Tian, Kevin
2022-11-09  3:21                         ` [Intel-gfx] " Tian, Kevin
2022-11-09  3:21                         ` Tian, Kevin
2022-11-09 13:11                         ` Jason Gunthorpe
2022-11-09 13:11                           ` [Intel-gfx] " Jason Gunthorpe
2022-11-09 13:11                           ` Jason Gunthorpe
2022-11-10  2:44                           ` Tian, Kevin
2022-11-10  2:44                             ` [Intel-gfx] " Tian, Kevin
2022-11-10  2:44                             ` Tian, Kevin
2022-11-09 18:28                       ` Alex Williamson
2022-11-09 18:28                         ` [Intel-gfx] " Alex Williamson
2022-11-09 18:28                         ` Alex Williamson
2022-11-10 19:19                         ` Jason Gunthorpe
2022-11-10 19:19                           ` [Intel-gfx] " Jason Gunthorpe
2022-11-10 19:19                           ` Jason Gunthorpe
2022-10-25 18:17 ` [PATCH 05/10] vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent() Jason Gunthorpe
2022-10-25 18:17   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:17   ` Jason Gunthorpe
2022-11-01  7:52   ` Tian, Kevin [this message]
2022-11-01  7:52     ` [Intel-gfx] " Tian, Kevin
2022-11-01  7:52     ` Tian, Kevin
2022-11-01 12:26     ` Jason Gunthorpe
2022-11-01 12:26       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:26       ` Jason Gunthorpe
2022-11-03  4:38       ` Tian, Kevin
2022-11-03  4:38         ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:38         ` Tian, Kevin
2022-11-04 19:45         ` Jason Gunthorpe
2022-11-04 19:45           ` [Intel-gfx] " Jason Gunthorpe
2022-11-04 19:45           ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 06/10] vfio-iommufd: Allow iommufd to be used in place of a container fd Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:09   ` Tian, Kevin
2022-11-01  8:09     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:09     ` Tian, Kevin
2022-11-01  9:19     ` Nicolin Chen
2022-11-01  9:19       ` [Intel-gfx] " Nicolin Chen
2022-11-01  9:19       ` Nicolin Chen
2022-11-01 11:51       ` Jason Gunthorpe
2022-11-01 11:51         ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 11:51         ` Jason Gunthorpe
2022-11-03  4:39         ` Tian, Kevin
2022-11-03  4:39           ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:39           ` Tian, Kevin
2022-11-01 12:40     ` Jason Gunthorpe
2022-11-01 12:40       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:40       ` Jason Gunthorpe
2022-11-02  7:28   ` Yi Liu
2022-11-02  7:28     ` [Intel-gfx] " Yi Liu
2022-11-02  7:28     ` Yi Liu
2022-11-07 23:45     ` Jason Gunthorpe
2022-11-07 23:45       ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 23:45       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 07/10] vfio-iommufd: Support iommufd for physical VFIO devices Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:21   ` Tian, Kevin
2022-11-01  8:21     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:21     ` Tian, Kevin
2022-11-04 19:51     ` Jason Gunthorpe
2022-11-04 19:51       ` [Intel-gfx] " Jason Gunthorpe
2022-11-04 19:51       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 08/10] vfio-iommufd: Support iommufd for emulated " Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:37   ` Tian, Kevin
2022-11-01  8:37     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:37     ` Tian, Kevin
2022-11-01 12:49     ` Jason Gunthorpe
2022-11-01 12:49       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:49       ` Jason Gunthorpe
2022-11-03  4:52       ` Tian, Kevin
2022-11-03  4:52         ` [Intel-gfx] " Tian, Kevin
2022-11-03  4:52         ` Tian, Kevin
2022-10-25 18:50 ` [PATCH 09/10] vfio: Make vfio_container optionally compiled Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-11-01  8:41   ` Tian, Kevin
2022-11-01  8:41     ` [Intel-gfx] " Tian, Kevin
2022-11-01  8:41     ` Tian, Kevin
2022-11-01 12:56     ` Jason Gunthorpe
2022-11-01 12:56       ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 12:56       ` Jason Gunthorpe
2022-10-25 18:50 ` [PATCH 10/10] iommufd: Allow iommufd to supply /dev/vfio/vfio Jason Gunthorpe
2022-10-25 18:50   ` [Intel-gfx] " Jason Gunthorpe
2022-10-25 18:50   ` Jason Gunthorpe
2022-10-26 21:31   ` Alex Williamson
2022-10-26 21:31     ` Alex Williamson
2022-10-26 21:31     ` [Intel-gfx] " Alex Williamson
2022-10-28 18:44     ` Jason Gunthorpe
2022-10-28 18:44       ` [Intel-gfx] " Jason Gunthorpe
2022-10-28 18:44       ` Jason Gunthorpe
2022-10-31 22:53       ` Alex Williamson
2022-10-31 22:53         ` [Intel-gfx] " Alex Williamson
2022-10-31 22:53         ` Alex Williamson
2022-11-07 13:57         ` Jason Gunthorpe
2022-11-07 13:57           ` [Intel-gfx] " Jason Gunthorpe
2022-11-07 13:57           ` Jason Gunthorpe
2022-10-25 20:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Connect VFIO to IOMMUFD Patchwork
2022-10-28 23:53 ` [PATCH 00/10] " Nicolin Chen
2022-10-28 23:53   ` [Intel-gfx] " Nicolin Chen
2022-10-28 23:53   ` Nicolin Chen
2022-10-28 23:54   ` Nicolin Chen
2022-10-28 23:54     ` [Intel-gfx] " Nicolin Chen
2022-10-28 23:54     ` Nicolin Chen
2022-10-31 10:38 ` Yi Liu
2022-10-31 10:38   ` [Intel-gfx] " Yi Liu
2022-10-31 10:38   ` Yi Liu
2022-10-31 12:18   ` [Intel-gfx] " Jason Gunthorpe
2022-10-31 12:18     ` Jason Gunthorpe
2022-10-31 12:18     ` Jason Gunthorpe
2022-10-31 12:25     ` Yi Liu
2022-10-31 12:25       ` [Intel-gfx] " Yi Liu
2022-10-31 12:25       ` Yi Liu
2022-10-31 23:24       ` Jason Gunthorpe
2022-10-31 23:24         ` [Intel-gfx] " Jason Gunthorpe
2022-10-31 23:24         ` Jason Gunthorpe
2022-11-01  3:04         ` Yi Liu
2022-11-01  3:04           ` Yi Liu
2022-11-01  3:04           ` [Intel-gfx] " Yi Liu
2022-11-01  4:21           ` Nicolin Chen
2022-11-01  4:21             ` [Intel-gfx] " Nicolin Chen
2022-11-01  4:21             ` Nicolin Chen
2022-11-01 12:54             ` Yi Liu
2022-11-01 12:54               ` [Intel-gfx] " Yi Liu
2022-11-01 12:54               ` Yi Liu
2022-11-01 11:41           ` Jason Gunthorpe
2022-11-01 11:41             ` [Intel-gfx] " Jason Gunthorpe
2022-11-01 11:41             ` Jason Gunthorpe
2022-11-01 12:55             ` Yi Liu
2022-11-01 12:55               ` Yi Liu
2022-11-01 12:55               ` [Intel-gfx] " Yi Liu
2022-11-07 17:17 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for Connect VFIO to IOMMUFD (rev2) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BN9PR11MB52766FB4EFCFB2197ACDC1F98C369@BN9PR11MB5276.namprd11.prod.outlook.com \
    --to=kevin.tian@intel.com \
    --cc=agordeev@linux.ibm.com \
    --cc=airlied@gmail.com \
    --cc=akrowiak@linux.ibm.com \
    --cc=alex.williamson@redhat.com \
    --cc=baolu.lu@linux.intel.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=cohuck@redhat.com \
    --cc=daniel@ffwll.ch \
    --cc=diana.craciun@oss.nxp.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eric.auger@redhat.com \
    --cc=farman@linux.ibm.com \
    --cc=freude@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=iommu@lists.linux.dev \
    --cc=jani.nikula@linux.intel.com \
    --cc=jgg@nvidia.com \
    --cc=jjherne@linux.ibm.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=liulongfang@huawei.com \
    --cc=mjrosato@linux.ibm.com \
    --cc=nicolinc@nvidia.com \
    --cc=oberpar@linux.ibm.com \
    --cc=pasic@linux.ibm.com \
    --cc=robin.murphy@arm.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=shameerali.kolothum.thodi@huawei.com \
    --cc=svens@linux.ibm.com \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=vneethv@linux.ibm.com \
    --cc=will@kernel.org \
    --cc=yi.l.liu@intel.com \
    --cc=yishaih@nvidia.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.