>> +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.
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.

>> +            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. 

iommu mailing list

Reply via email to