On 30/06/2020 17:23, Krishna Reddy wrote:
>>> +struct arm_smmu_device *nvidia_smmu_impl_init(struct arm_smmu_device
>>> +*smmu) {
>>> + unsigned int i;
> ....
>>> + for (i = 1; i < MAX_SMMU_INSTANCES; i++) {
>>> + struct resource *res;
>>> +
>>> + res = platform_get_resource(pdev, IORESOURCE_MEM, i);
>>> + if (!res)
>>> + break;
>
>> Currently this driver is only supported for Tegra194 which I understand has
>> 3 SMMUs. Therefore, I don't feel that we should fail silently here, I think
>> it is better to return an error if all 3 cannot be initialised.
>
> Initialization of all the three SMMU instances is not necessary here.
That is not what I am saying.
> The driver can work with all the possible number of instances 1, 2 and 3
> based on the DT config though it doesn't make much sense to use it with 1
> instance.
> There is no silent failure here from driver point of view. If there is
> misconfig in DT, SMMU faults would catch issues.
I disagree and you should return a proper error here.
>>> + nvidia_smmu->bases[i] = devm_ioremap_resource(smmu->dev, res);
>>> + if (IS_ERR(nvidia_smmu->bases[i]))
>>> + return ERR_CAST(nvidia_smmu->bases[i]);
>
>> You want to use PTR_ERR() here.
>
> PTR_ERR() returns long integer.
> This function returns a pointer. ERR_CAST is the right one to use here.
Ah yes, indeed. OK that's fine.
Jon
--
nvpublic
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu