All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sethi Varun-B16395 <B16395@freescale.com>
To: Joerg Roedel <joerg.roedel@amd.com>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>
Cc: Greg Kroah-Hartman <gregkh@suse.de>,
	Alex Williamson <alex.williamson@redhat.com>,
	Ohad Ben-Cohen <ohad@wizery.com>,
	David Woodhouse <dwmw2@infradead.org>,
	David Brown <davidb@codeaurora.org>,
	"joro@8bytes.org" <joro@8bytes.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [PATCH 03/10] iommu/core: Add bus_type parameter to iommu_domain_alloc
Date: Mon, 12 Sep 2011 11:50:35 +0000	[thread overview]
Message-ID: <F1FD01C1EFCE15408DBF59462450B3BD1C463D@039-SN1MPN1-006.039d.mgd.msft.net> (raw)
In-Reply-To: <1315410113-26608-4-git-send-email-joerg.roedel@amd.com>



> -----Original Message-----
> From: kvm-owner@vger.kernel.org [mailto:kvm-owner@vger.kernel.org] On
> Behalf Of Joerg Roedel
> Sent: Wednesday, September 07, 2011 9:12 PM
> To: iommu@lists.linux-foundation.org
> Cc: Greg Kroah-Hartman; Alex Williamson; Ohad Ben-Cohen; David Woodhouse;
> David Brown; joro@8bytes.org; kvm@vger.kernel.org; linux-
> kernel@vger.kernel.org; Joerg Roedel
> Subject: [PATCH 03/10] iommu/core: Add bus_type parameter to
> iommu_domain_alloc
> 
> This is necessary to store a pointer to the bus-specific iommu_ops in the
> iommu-domain structure. It will be used later to call into bus-specific
> iommu-ops.
> 
> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
> ---
>  drivers/iommu/iommu.c              |   14 +++++++++++++-
>  drivers/media/video/omap3isp/isp.c |    2 +-
>  include/linux/iommu.h              |    6 ++++--
>  virt/kvm/iommu.c                   |    2 +-
>  4 files changed, 19 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index
> 3b24a5b..adaee9b 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -16,6 +16,7 @@
>   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
> USA
>   */
> 
> +#include <linux/device.h>
>  #include <linux/kernel.h>
>  #include <linux/bug.h>
>  #include <linux/types.h>
> @@ -44,15 +45,26 @@ bool iommu_found(void)  }
> EXPORT_SYMBOL_GPL(iommu_found);
> 
> -struct iommu_domain *iommu_domain_alloc(void)
> +struct iommu_domain *iommu_domain_alloc(struct bus_type *bus)
>  {
>  	struct iommu_domain *domain;
> +	struct iommu_ops *ops;
>  	int ret;
> 
> +	if (bus->iommu_ops)
> +		ops = bus->iommu_ops;
> +	else
> +		ops = iommu_ops;
> +
> +	if (ops == NULL)
> +		return NULL;
> +
>  	domain = kmalloc(sizeof(*domain), GFP_KERNEL);
>  	if (!domain)
>  		return NULL;
> 
> +	domain->ops = ops;
> +
>  	ret = iommu_ops->domain_init(domain);
>  	if (ret)
>  		goto out_free;
> diff --git a/drivers/media/video/omap3isp/isp.c
> b/drivers/media/video/omap3isp/isp.c
> index a4baa61..a7ed985 100644
> --- a/drivers/media/video/omap3isp/isp.c
> +++ b/drivers/media/video/omap3isp/isp.c
> @@ -2141,7 +2141,7 @@ static int isp_probe(struct platform_device *pdev)
>  	/* to be removed once iommu migration is complete */
>  	isp->iommu = to_iommu(isp->iommu_dev);
> 
> -	isp->domain = iommu_domain_alloc();
> +	isp->domain = iommu_domain_alloc(pdev->dev.bus);
>  	if (!isp->domain) {
>  		dev_err(isp->dev, "can't alloc iommu domain\n");
>  		ret = -ENOMEM;
> diff --git a/include/linux/iommu.h b/include/linux/iommu.h index
> 4739e36..3bd6892 100644
> --- a/include/linux/iommu.h
> +++ b/include/linux/iommu.h
> @@ -25,10 +25,12 @@
>  #define IOMMU_WRITE	(2)
>  #define IOMMU_CACHE	(4) /* DMA cache coherency */
> 
> +struct iommu_ops;
>  struct bus_type;
>  struct device;
> 
>  struct iommu_domain {
> +	struct iommu_ops *ops;
>  	void *priv;
>  };
> 
> @@ -55,7 +57,7 @@ struct iommu_ops {
>  extern void register_iommu(struct iommu_ops *ops);  extern void
> iommu_bus_init(struct bus_type *bus, struct iommu_ops *ops);  extern bool
> iommu_found(void); -extern struct iommu_domain *iommu_domain_alloc(void);
> +extern struct iommu_domain *iommu_domain_alloc(struct bus_type *bus);
>  extern void iommu_domain_free(struct iommu_domain *domain);  extern int
> iommu_attach_device(struct iommu_domain *domain,
>  			       struct device *dev);
> @@ -79,7 +81,7 @@ static inline bool iommu_found(void)
>  	return false;
>  }
> 
> -static inline struct iommu_domain *iommu_domain_alloc(void)
> +static inline struct iommu_domain *iommu_domain_alloc(struct bus_type
> +*bus)
>  {
>  	return NULL;
>  }
> diff --git a/virt/kvm/iommu.c b/virt/kvm/iommu.c index 78c80f6..20115b1
> 100644
> --- a/virt/kvm/iommu.c
> +++ b/virt/kvm/iommu.c
> @@ -233,7 +233,7 @@ int kvm_iommu_map_guest(struct kvm *kvm)
>  		return -ENODEV;
>  	}
> 
> -	kvm->arch.iommu_domain = iommu_domain_alloc();
> +	kvm->arch.iommu_domain = iommu_domain_alloc(&pci_bus_type);

Although it might require changes starting all the way from the qemu interface, but
it would certainly be nice if this could be made more extendable/generic in terms
of the bus_type usage. This interface would be used by us (Freescale )for direct
assignment of SOC devices sitting on the platform bus.

-Varun


  reply	other threads:[~2011-09-12 11:50 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-07 15:41 [PATCH 0/10] IOMMU: Make iommu_ops per-bus_type Joerg Roedel
2011-09-07 15:41 ` [PATCH 01/10] iommu/core: Define iommu_ops and register_iommu only with CONFIG_IOMMU_API Joerg Roedel
2011-09-07 15:41 ` [PATCH 02/10] Driver core: Add iommu_ops to bus_type Joerg Roedel
2011-09-07 18:47   ` Greg KH
2011-09-07 19:19     ` Joerg Roedel
2011-09-07 19:44       ` Greg KH
2011-09-07 20:37         ` Don Dutile
2011-09-08  8:58           ` Joerg Roedel
2011-09-08  8:41         ` Joerg Roedel
2011-09-12 11:40           ` Sethi Varun-B16395
2011-09-13 14:54         ` Roedel, Joerg
2011-09-13 14:58           ` Greg KH
2011-09-13 15:15             ` Roedel, Joerg
2011-09-13 15:38             ` Roedel, Joerg
2011-09-13 16:21               ` Greg KH
2011-09-14 12:46                 ` Roedel, Joerg
2011-09-12 12:08       ` Sethi Varun-B16395
2011-09-12 12:35         ` Roedel, Joerg
2011-09-15 12:45           ` Sethi Varun-B16395
2011-09-15 13:13             ` Roedel, Joerg
2011-09-07 15:41 ` [PATCH 03/10] iommu/core: Add bus_type parameter to iommu_domain_alloc Joerg Roedel
2011-09-12 11:50   ` Sethi Varun-B16395 [this message]
2011-09-12 12:37     ` Roedel, Joerg
2011-09-07 15:41 ` [PATCH 04/10] iommu/core: Convert iommu_found to iommu_present Joerg Roedel
2011-09-07 15:41 ` [PATCH 05/10] iommu/core: Use bus->iommu_ops in the iommu-api Joerg Roedel
2011-09-07 15:41 ` [PATCH 06/10] iommu/amd: Use bus_set_iommu instead of register_iommu Joerg Roedel
2011-09-07 15:41 ` [PATCH 07/10] iommu/vt-d: " Joerg Roedel
2011-09-07 15:41 ` [PATCH 08/10] iommu/omap: " Joerg Roedel
2011-09-07 15:41 ` [PATCH 09/10] iommu/msm: " Joerg Roedel
2011-09-07 15:41 ` [PATCH 10/10] iommu/core: Remove global iommu_ops and register_iommu Joerg Roedel
2011-09-07 18:48 ` [PATCH 0/10] IOMMU: Make iommu_ops per-bus_type Greg KH
2011-09-07 19:29   ` Joerg Roedel
2011-09-22 16:14 [PATCH 0/10 v2] " Joerg Roedel
2011-09-22 16:14 ` [PATCH 03/10] iommu/core: Add bus_type parameter to iommu_domain_alloc Joerg Roedel
2011-09-23 15:45 [PATCH 0/10 v3] IOMMU: Make iommu_ops per-bus_type Joerg Roedel
2011-09-23 15:45 ` [PATCH 03/10] iommu/core: Add bus_type parameter to iommu_domain_alloc Joerg Roedel

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=F1FD01C1EFCE15408DBF59462450B3BD1C463D@039-SN1MPN1-006.039d.mgd.msft.net \
    --to=b16395@freescale.com \
    --cc=alex.williamson@redhat.com \
    --cc=davidb@codeaurora.org \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@suse.de \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joerg.roedel@amd.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ohad@wizery.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.