[PATCH 28/37] iommu/arm-smmu-v3: Maintain a SID->device structure

Jean-Philippe Brucker jean-philippe.brucker at arm.com
Wed Mar 14 06:09:10 PDT 2018


On 08/03/18 17:34, Jonathan Cameron wrote:
>>  static int arm_smmu_add_device(struct device *dev)
>> @@ -2198,6 +2298,7 @@ static int arm_smmu_add_device(struct device *dev)
>>  
>>  	group = iommu_group_get_for_dev(dev);
>>  	if (!IS_ERR(group)) {
>> +		arm_smmu_insert_master(smmu, master);
> There are some error cases it would be good to take notice off when
> inserting the master.  Admittedly the same is true of iommu_device_link
> so I guess you are keeping with the existing code style.
> 
> Would also be nice if the later bit of rework to drop these out
> of the if statement was done before this patch in the series.

Not sure that's worth a separate patch, maybe we can do it here.

Thanks,
Jean

> 
>>  		iommu_group_put(group);
>>  		iommu_device_link(&smmu->iommu, dev);
>>  	}
>> @@ -2218,6 +2319,7 @@ static void arm_smmu_remove_device(struct device *dev)
>>  	smmu = master->smmu;
>>  	if (master && master->ste.assigned)
>>  		arm_smmu_detach_dev(dev);
>> +	arm_smmu_remove_master(smmu, master);
>>  	iommu_group_remove_device(dev);
>>  	iommu_device_unlink(&smmu->iommu, dev);
>>  	kfree(master);
>> @@ -2527,6 +2629,9 @@ static int arm_smmu_init_structures(struct arm_smmu_device *smmu)
>>  	int ret;
>>  
>>  	atomic_set(&smmu->sync_nr, 0);
>> +	mutex_init(&smmu->streams_mutex);
>> +	smmu->streams = RB_ROOT;
>> +
>>  	ret = arm_smmu_init_queues(smmu);
>>  	if (ret)
>>  		return ret;
> 
> 




More information about the linux-arm-kernel mailing list