|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 11/11] xen/arm: smmuv3: Add support for SMMUv3 driver
Hello Oleksandr,
> On 12 Jan 2021, at 8:59 pm, Oleksandr <olekstysh@xxxxxxxxx> wrote:
>
>
> On 12.01.21 11:41, Rahul Singh wrote:
>
> Hi Rahul
>
>
>>
>>>> -static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args
>>>> *args)
>>>> +static int arm_smmu_dt_xlate(struct device *dev,
>>>> + const struct dt_phandle_args *args)
>>>> {
>>>> - return iommu_fwspec_add_ids(dev, args->args, 1);
>>>> + int ret;
>>>> + struct iommu_fwspec *fwspec = dev_iommu_fwspec_get(dev);
>>> Please bear in mind I am not familiar with the SMMU, but don't we need to
>>> perform a some kind
>>> of sanity check of passed DT IOMMU specifier here?
>> I checked the code follow we will never hit the dt_xlate without IOMMU
>> specifier but anyway I will add the sanity check.
> By sanity check I meant to make sure that device ID (stream ID) is in allowed
> range (of course, if this is relevant for SMMU).
> For example, for IPMMU-VMSA we have a check that device ID (uTLB) is less
> than max uTLB number.
Sorry I misunderstood your previous comments. Yes SMMUv3 driver is performing
the sanity check for Stream Id before configuring the hardware in function
arm_smmu_sid_in_range().
>
>>
>>
>>>> +
>>>> +static int arm_smmu_iommu_xen_domain_init(struct domain *d)
>>>> +{
>>>> + struct arm_smmu_xen_domain *xen_domain;
>>>> +
>>>> + xen_domain = xzalloc(struct arm_smmu_xen_domain);
>>>> + if (!xen_domain)
>>>> + return -ENOMEM;
>>>> +
>>>> + spin_lock_init(&xen_domain->lock);
>>>> + INIT_LIST_HEAD(&xen_domain->contexts);
>>>> +
>>>> + dom_iommu(d)->arch.priv = xen_domain;
>>>> + return 0;
>>>> +
>>>> +}
>>>> +
>>>> +static void __hwdom_init arm_smmu_iommu_hwdom_init(struct domain *d)
>>>> +{
>>> Both SMMUv2 and IPMMU perform some actions here. Any reason we don't need
>>> to do the same here?
>>>
>>> /* Set to false options not supported on ARM. */
>>> if ( iommu_hwdom_inclusive )
>>> printk(XENLOG_WARNING
>>> "map-inclusive dom0-iommu option is not supported on ARM\n");
>>> iommu_hwdom_inclusive = false;
>>> if ( iommu_hwdom_reserved == 1 )
>>> printk(XENLOG_WARNING
>>> "map-reserved dom0-iommu option is not supported on ARM\n");
>>> iommu_hwdom_reserved = 0;
>>>
>>> arch_iommu_hwdom_init(d);
>> I will add the above code for SMMUv3 also.
>
> Great.
>
> I was thinking about it, this is the third IOMMU driver on Arm which has to
> disable the _same_ unsupported options, probably this code wants to be folded
> in arch_iommu_hwdom_init() to avoid duplication?
Yes I also agree with you to avoid duplication we can move the come code to the
function arch_iommu_hwdom_init().
I will submit the patch(not part of this series) if everyone is ok to move the
common code to arch_iommu_hwdom_init().
Regards,
Rahul
>
> --
> Regards,
>
> Oleksandr Tyshchenko
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |