From: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org>
To: Alex Williamson
<alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Cc: "iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org"
<iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [PATCH v4 2/3] vfio/iommu_type1: add new VFIO_TYPE1_NESTING_IOMMU IOMMU type
Date: Thu, 25 Sep 2014 16:07:14 +0100 [thread overview]
Message-ID: <20140925150714.GP20043@arm.com> (raw)
In-Reply-To: <1411582999.24563.110.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
Hi Alex,
On Wed, Sep 24, 2014 at 07:23:19PM +0100, Alex Williamson wrote:
> On Wed, 2014-09-24 at 10:21 +0100, Will Deacon wrote:
> > VFIO allows devices to be safely handed off to userspace by putting
> > them behind an IOMMU configured to ensure DMA and interrupt isolation.
> > This enables userspace KVM clients, such as kvmtool and qemu, to further
> > map the device into a virtual machine.
> >
> > With IOMMUs such as the ARM SMMU, it is then possible to provide SMMU
> > translation services to the guest operating system, which are nested
> > with the existing translation installed by VFIO. However, enabling this
> > feature means that the IOMMU driver must be informed that the VFIO domain
> > is being created for the purposes of nested translation.
> >
> > This patch adds a new IOMMU type (VFIO_TYPE1_NESTING_IOMMU) to the VFIO
> > type-1 driver. The new IOMMU type acts identically to the
> > VFIO_TYPE1v2_IOMMU type, but additionally sets the DOMAIN_ATTR_NESTING
> > attribute on its IOMMU domains.
[...]
> > diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
> > index 0734fbe5b651..d15b00700a31 100644
> > --- a/drivers/vfio/vfio_iommu_type1.c
> > +++ b/drivers/vfio/vfio_iommu_type1.c
> > @@ -57,7 +57,8 @@ struct vfio_iommu {
> > struct list_head domain_list;
> > struct mutex lock;
> > struct rb_root dma_list;
> > - bool v2;
> > + bool v2;
> > + bool nesting;
> > };
> >
> > struct vfio_domain {
> > @@ -671,7 +672,7 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
> > struct vfio_group *group, *g;
> > struct vfio_domain *domain, *d;
> > struct bus_type *bus = NULL;
> > - int ret;
> > + int ret, attr = 1;
> >
> > mutex_lock(&iommu->lock);
> >
> > @@ -705,6 +706,13 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
> > goto out_free;
> > }
> >
> > + if (iommu->nesting) {
>
> nit, attr declaration could be moved here
Sure.
> > + ret = iommu_domain_set_attr(domain->domain, DOMAIN_ATTR_NESTING,
> > + &attr);
> > + if (ret)
> > + goto out_domain;
> > + }
> > +
> > ret = iommu_attach_group(domain->domain, iommu_group);
> > if (ret)
> > goto out_domain;
> > @@ -819,17 +827,25 @@ static void *vfio_iommu_type1_open(unsigned long arg)
> > {
> > struct vfio_iommu *iommu;
> >
> > - if (arg != VFIO_TYPE1_IOMMU && arg != VFIO_TYPE1v2_IOMMU)
> > - return ERR_PTR(-EINVAL);
> > -
> > iommu = kzalloc(sizeof(*iommu), GFP_KERNEL);
> > if (!iommu)
> > return ERR_PTR(-ENOMEM);
> >
> > + switch (arg) {
> > + case VFIO_TYPE1_IOMMU:
> > + break;
> > + case VFIO_TYPE1_NESTING_IOMMU:
> > + iommu->nesting = true;
> > + case VFIO_TYPE1v2_IOMMU:
> > + iommu->v2 = true;
> > + break;
> > + default:
>
> Leaks iommu
Yikes, sorry about that. Will fix.
Will
next prev parent reply other threads:[~2014-09-25 15:07 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-24 9:21 [PATCH v4 0/3] Support for nesting IOMMUs in VFIO Will Deacon
[not found] ` <1411550485-32483-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-24 9:21 ` [PATCH v4 1/3] iommu: introduce domain attribute for nesting IOMMUs Will Deacon
[not found] ` <1411550485-32483-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-25 14:32 ` Joerg Roedel
[not found] ` <20140925143233.GB8306-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2014-09-25 15:05 ` Will Deacon
2014-09-24 9:21 ` [PATCH v4 2/3] vfio/iommu_type1: add new VFIO_TYPE1_NESTING_IOMMU IOMMU type Will Deacon
[not found] ` <1411550485-32483-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org>
2014-09-24 18:23 ` Alex Williamson
[not found] ` <1411582999.24563.110.camel-85EaTFmN5p//9pzu0YdTqQ@public.gmane.org>
2014-09-25 15:07 ` Will Deacon [this message]
2014-09-24 9:21 ` [PATCH v4 3/3] iommu/arm-smmu: add support for DOMAIN_ATTR_NESTING attribute Will Deacon
2014-09-24 18:25 ` [PATCH v4 0/3] Support for nesting IOMMUs in VFIO Alex Williamson
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=20140925150714.GP20043@arm.com \
--to=will.deacon-5wv7dgnigg8@public.gmane.org \
--cc=alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
/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.