* Re: [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev
@ 2019-09-30 12:40 Liu, Yi L
0 siblings, 0 replies; 3+ messages in thread
From: Liu, Yi L @ 2019-09-30 12:40 UTC (permalink / raw)
To: alex.williamson
Cc: kwankhede, Tian, Kevin, baolu.lu, Sun, Yi Y, joro, linux-kernel,
kvm, Zhao, Yan Y, He, Shaopeng, Xia, Chenbo, Tian, Jun J
Hi Alex,
> From: Alex Williamson [mailto:alex.williamson@redhat.com]
> Sent: Thursday, September 26, 2019 10:37 AM
> To: Liu, Yi L <yi.l.liu@intel.com>
> Subject: Re: [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping
> PF/VF as mdev
>
> On Thu, 5 Sep 2019 15:59:29 +0800
> Liu Yi L <yi.l.liu@intel.com> wrote:
>
> > This patch uses iommu_attach_group() to do group attach when it is for
> > the case of wrapping a PF/VF as a mdev. iommu_attach_device() doesn't
> > support non-singleton iommu group attach. With this change, wrapping
> > PF/VF as mdev can work on non-singleton iommu groups.
> >
> > Cc: Kevin Tian <kevin.tian@intel.com>
> > Cc: Lu Baolu <baolu.lu@linux.intel.com>
> > Suggested-by: Alex Williamson <alex.williamson@redhat.com>
> > Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
> > ---
> > drivers/vfio/vfio_iommu_type1.c | 22 ++++++++++++++++++----
> > 1 file changed, 18 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/vfio/vfio_iommu_type1.c
> > b/drivers/vfio/vfio_iommu_type1.c index 054391f..317430d 100644
> > --- a/drivers/vfio/vfio_iommu_type1.c
> > +++ b/drivers/vfio/vfio_iommu_type1.c
> > @@ -1312,13 +1312,20 @@ static int vfio_mdev_attach_domain(struct
> > device *dev, void *data) {
> > struct iommu_domain *domain = data;
> > struct device *iommu_device;
> > + struct iommu_group *group;
> >
> > iommu_device = vfio_mdev_get_iommu_device(dev);
> > if (iommu_device) {
> > if (iommu_dev_feature_enabled(iommu_device,
> IOMMU_DEV_FEAT_AUX))
> > return iommu_aux_attach_device(domain, iommu_device);
> > - else
> > - return iommu_attach_device(domain, iommu_device);
> > + else {
> > + group = iommu_group_get(iommu_device);
> > + if (!group) {
> > + WARN_ON(1);
>
> What's the value of the WARN_ON here and below?
Let me remove it.
> iommu_group_get() increments the kobject reference, looks like it's leaked. Thanks,
Oops, yes, should use dev->iommu_group. Let me fix it.
>
> Alex
Thanks,
Yi Liu
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev
2019-09-05 7:59 ` [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev Liu Yi L
@ 2019-09-26 2:37 ` Alex Williamson
0 siblings, 0 replies; 3+ messages in thread
From: Alex Williamson @ 2019-09-26 2:37 UTC (permalink / raw)
To: Liu Yi L
Cc: kwankhede, kevin.tian, baolu.lu, yi.y.sun, joro, linux-kernel,
kvm, yan.y.zhao, shaopeng.he, chenbo.xia, jun.j.tian
On Thu, 5 Sep 2019 15:59:29 +0800
Liu Yi L <yi.l.liu@intel.com> wrote:
> This patch uses iommu_attach_group() to do group attach when it is
> for the case of wrapping a PF/VF as a mdev. iommu_attach_device()
> doesn't support non-singleton iommu group attach. With this change,
> wrapping PF/VF as mdev can work on non-singleton iommu groups.
>
> Cc: Kevin Tian <kevin.tian@intel.com>
> Cc: Lu Baolu <baolu.lu@linux.intel.com>
> Suggested-by: Alex Williamson <alex.williamson@redhat.com>
> Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
> ---
> drivers/vfio/vfio_iommu_type1.c | 22 ++++++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
> index 054391f..317430d 100644
> --- a/drivers/vfio/vfio_iommu_type1.c
> +++ b/drivers/vfio/vfio_iommu_type1.c
> @@ -1312,13 +1312,20 @@ static int vfio_mdev_attach_domain(struct device *dev, void *data)
> {
> struct iommu_domain *domain = data;
> struct device *iommu_device;
> + struct iommu_group *group;
>
> iommu_device = vfio_mdev_get_iommu_device(dev);
> if (iommu_device) {
> if (iommu_dev_feature_enabled(iommu_device, IOMMU_DEV_FEAT_AUX))
> return iommu_aux_attach_device(domain, iommu_device);
> - else
> - return iommu_attach_device(domain, iommu_device);
> + else {
> + group = iommu_group_get(iommu_device);
> + if (!group) {
> + WARN_ON(1);
What's the value of the WARN_ON here and below?
iommu_group_get() increments the kobject reference, looks like it's
leaked. Thanks,
Alex
> + return -EINVAL;
> + }
> + return iommu_attach_group(domain, group);
> + }
> }
>
> return -EINVAL;
> @@ -1328,13 +1335,20 @@ static int vfio_mdev_detach_domain(struct device *dev, void *data)
> {
> struct iommu_domain *domain = data;
> struct device *iommu_device;
> + struct iommu_group *group;
>
> iommu_device = vfio_mdev_get_iommu_device(dev);
> if (iommu_device) {
> if (iommu_dev_feature_enabled(iommu_device, IOMMU_DEV_FEAT_AUX))
> iommu_aux_detach_device(domain, iommu_device);
> - else
> - iommu_detach_device(domain, iommu_device);
> + else {
> + group = iommu_group_get(iommu_device);
> + if (!group) {
> + WARN_ON(1);
> + return -EINVAL;
> + }
> + iommu_detach_group(domain, group);
> + }
> }
>
> return 0;
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev
2019-09-05 7:59 [PATCH v2 00/13] vfio_pci: wrap pci device as a mediated device Liu Yi L
@ 2019-09-05 7:59 ` Liu Yi L
2019-09-26 2:37 ` Alex Williamson
0 siblings, 1 reply; 3+ messages in thread
From: Liu Yi L @ 2019-09-05 7:59 UTC (permalink / raw)
To: alex.williamson, kwankhede
Cc: kevin.tian, baolu.lu, yi.l.liu, yi.y.sun, joro, linux-kernel,
kvm, yan.y.zhao, shaopeng.he, chenbo.xia, jun.j.tian
This patch uses iommu_attach_group() to do group attach when it is
for the case of wrapping a PF/VF as a mdev. iommu_attach_device()
doesn't support non-singleton iommu group attach. With this change,
wrapping PF/VF as mdev can work on non-singleton iommu groups.
Cc: Kevin Tian <kevin.tian@intel.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>
Suggested-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Liu Yi L <yi.l.liu@intel.com>
---
drivers/vfio/vfio_iommu_type1.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 054391f..317430d 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -1312,13 +1312,20 @@ static int vfio_mdev_attach_domain(struct device *dev, void *data)
{
struct iommu_domain *domain = data;
struct device *iommu_device;
+ struct iommu_group *group;
iommu_device = vfio_mdev_get_iommu_device(dev);
if (iommu_device) {
if (iommu_dev_feature_enabled(iommu_device, IOMMU_DEV_FEAT_AUX))
return iommu_aux_attach_device(domain, iommu_device);
- else
- return iommu_attach_device(domain, iommu_device);
+ else {
+ group = iommu_group_get(iommu_device);
+ if (!group) {
+ WARN_ON(1);
+ return -EINVAL;
+ }
+ return iommu_attach_group(domain, group);
+ }
}
return -EINVAL;
@@ -1328,13 +1335,20 @@ static int vfio_mdev_detach_domain(struct device *dev, void *data)
{
struct iommu_domain *domain = data;
struct device *iommu_device;
+ struct iommu_group *group;
iommu_device = vfio_mdev_get_iommu_device(dev);
if (iommu_device) {
if (iommu_dev_feature_enabled(iommu_device, IOMMU_DEV_FEAT_AUX))
iommu_aux_detach_device(domain, iommu_device);
- else
- iommu_detach_device(domain, iommu_device);
+ else {
+ group = iommu_group_get(iommu_device);
+ if (!group) {
+ WARN_ON(1);
+ return -EINVAL;
+ }
+ iommu_detach_group(domain, group);
+ }
}
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-09-30 12:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-30 12:40 [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev Liu, Yi L
-- strict thread matches above, loose matches on Subject: below --
2019-09-05 7:59 [PATCH v2 00/13] vfio_pci: wrap pci device as a mediated device Liu Yi L
2019-09-05 7:59 ` [PATCH v2 12/13] vfio/type1: use iommu_attach_group() for wrapping PF/VF as mdev Liu Yi L
2019-09-26 2:37 ` Alex Williamson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).