|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for 4.6 13/13] xen/iommu: smmu: Add Xen specific code to be able to use the driver
_______________________________________
From: Julien Grall <julien.grall@xxxxxxxxxx>
Sent: Wednesday, February 18, 2015 5:24 PM
To: Jaggi, Manish; xen-devel@xxxxxxxxxxxxxxxxxxxx >> xen-devel
Cc: ian.campbell@xxxxxxxxxx; tim@xxxxxxx; stefano.stabellini@xxxxxxxxxx; Jaggi,
Manish
Subject: Re: [PATCH for 4.6 13/13] xen/iommu: smmu: Add Xen specific code to be
able to use the driver
BTW, I have sent few versions of this series since then. Please comment
on the latest series as the code may have change.
[manish] Somehow I could not find your recent revision, but I am looking at
your den-unstable tree assuming it has your latest version.
Nonetheless, you are comment is still valid for the v3 :).
[manish] There are general comments on the data structures
(a) I don't see a use case where for same domain (VM) there would be different
context banks , so linked list may not be required.
(b) Also iommu group may not be relevant for the same reason.
I am curious to find the use cases.
Regards,
On 18/02/2015 11:47, Julien Grall wrote:
> 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 <julien.grall@xxxxxxxxxx>
>>> ---
>>> 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 <will.deacon@xxxxxxx>
>>> *
>>> + * Based on Linux drivers/iommu/arm-smmu.c
>>> + * => commit e6b5be2be4e30037eb551e0ed09dd97bd00d85d3
>>> + *
>>> + * Xen modification:
>>> + * Julien Grall <julien.grall@xxxxxxxxxx>
>>> + * 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
>>> */
>>
>> <<<snip >>>
>>
>>> +/* 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
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |