From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH for 4.6 13/13] xen/iommu: smmu: Add Xen specific code to be able to use the driver Date: Wed, 18 Feb 2015 11:47:46 +0000 Message-ID: <54E47BE2.5030908@linaro.org> References: <1418760534-18163-1-git-send-email-julien.grall@linaro.org> <1418760534-18163-14-git-send-email-julien.grall@linaro.org> <54E3E49D.7000109@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YO36c-0006iy-Qs for xen-devel@lists.xenproject.org; Wed, 18 Feb 2015 11:47:51 +0000 Received: by mail-wi0-f175.google.com with SMTP id r20so40434707wiv.2 for ; Wed, 18 Feb 2015 03:47:49 -0800 (PST) In-Reply-To: <54E3E49D.7000109@caviumnetworks.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Manish , xen-devel@lists.xenproject.org Cc: tim@xen.org, manish.jaggi@caviumnetworks.com, will.daecon@arm.com, ian.campbell@citrix.com, stefano.stabellini@citrix.com List-Id: xen-devel@lists.xenproject.org Hi Manish, On 18/02/2015 01:02, Manish wrote: > > On 17/12/14 1:38 am, Julien Grall wrote: >> The main goal is to modify as little the Linux code to be able to port >> easily new feature added in Linux repo for the driver. >> >> To achieve that we: >> - Add helpers to Linux function not implemented on Xen >> - Add callbacks used by Xen to do our own stuff and call Linux ones >> - Only modify when required the code which comes from Linux. If so a >> comment has been added with /* Xen: ... */ explaining why it's >> necessary. >> >> The support for PCI has been commented because it's not yet supported by >> Xen ARM and therefore won't compile. >> >> Signed-off-by: Julien Grall >> --- >> xen/drivers/passthrough/arm/Makefile | 1 + >> xen/drivers/passthrough/arm/smmu.c | 668 >> +++++++++++++++++++++++++++++++---- >> 2 files changed, 602 insertions(+), 67 deletions(-) >> >> diff --git a/xen/drivers/passthrough/arm/Makefile >> b/xen/drivers/passthrough/arm/Makefile >> index 0484b79..f4cd26e 100644 >> --- a/xen/drivers/passthrough/arm/Makefile >> +++ b/xen/drivers/passthrough/arm/Makefile >> @@ -1 +1,2 @@ >> obj-y += iommu.o >> +obj-y += smmu.o >> diff --git a/xen/drivers/passthrough/arm/smmu.c >> b/xen/drivers/passthrough/arm/smmu.c >> index 8a6514f..3cf1773 100644 >> --- a/xen/drivers/passthrough/arm/smmu.c >> +++ b/xen/drivers/passthrough/arm/smmu.c >> @@ -18,6 +18,13 @@ >> * >> * Author: Will Deacon >> * >> + * Based on Linux drivers/iommu/arm-smmu.c >> + * => commit e6b5be2be4e30037eb551e0ed09dd97bd00d85d3 >> + * >> + * Xen modification: >> + * Julien Grall >> + * Copyright (C) 2014 Linaro Limited. >> + * >> * This driver currently supports: >> * - SMMUv1 and v2 implementations >> * - Stream-matching and stream-indexing >> @@ -28,26 +35,154 @@ >> * - Context fault reporting >> */ > > <<>> > >> +/* Xen: Dummy iommu_domain */ >> +struct iommu_domain >> +{ >> + struct arm_smmu_domain *priv; >> + >> + /* Used to link domain contexts for a same domain */ >> + struct list_head list; >> +}; >> + >> +/* Xen: Describes informations required for a Xen domain */ >> +struct arm_smmu_xen_domain { >> + spinlock_t lock; >> + /* List of context (i.e iommu_domain) associated to this domain */ >> + struct list_head contexts; >> +}; >> + >> +/* Xen: Information about each device stored in dev->archdata.iommu */ >> +struct arm_smmu_xen_device { >> + struct iommu_domain *domain; >> + struct iommu_group *group; >> +}; >> + >> +#define dev_archdata(dev) ((struct arm_smmu_xen_device >> *)dev->archdata.iommu) >> +#define dev_iommu_domain(dev) (dev_archdata(dev)->domain) >> +#define dev_iommu_group(dev) (dev_archdata(dev)->group) >> + >> +/* Xen: Dummy iommu_group */ >> +struct iommu_group >> +{ >> + struct arm_smmu_master_cfg *cfg; >> + >> + atomic_t ref; >> +}; >> + > The naming needs to be revisited in this patch. Original driver from > Will has arm_smmu_domain. This patch adds iommu_domain, > arm_smmu_xen_domain, iommu_group. I can't change the naming of the structure. iommu_domain and iommu_group are from Linux. As we don't have it on Xen, I have to add dummy structure for it. > Could you please add some description about the relation and hierarchy > of these data structures. Good point, I will try to add more comment and explain why we have to do it. Regards, -- Julien Grall