@@ -3016,13 +3016,12 @@ int arm_smmu_set_pasid(struct arm_smmu_master *master,
3016
3016
return ret ;
3017
3017
}
3018
3018
3019
- static void arm_smmu_remove_dev_pasid (struct device * dev , ioasid_t pasid ,
3020
- struct iommu_domain * domain )
3019
+ static int arm_smmu_blocking_set_dev_pasid (struct iommu_domain * new_domain ,
3020
+ struct device * dev , ioasid_t pasid ,
3021
+ struct iommu_domain * old_domain )
3021
3022
{
3023
+ struct arm_smmu_domain * smmu_domain = to_smmu_domain (old_domain );
3022
3024
struct arm_smmu_master * master = dev_iommu_priv_get (dev );
3023
- struct arm_smmu_domain * smmu_domain ;
3024
-
3025
- smmu_domain = to_smmu_domain (domain );
3026
3025
3027
3026
mutex_lock (& arm_smmu_asid_lock );
3028
3027
arm_smmu_clear_cd (master , pasid );
@@ -3043,6 +3042,7 @@ static void arm_smmu_remove_dev_pasid(struct device *dev, ioasid_t pasid,
3043
3042
sid_domain -> type == IOMMU_DOMAIN_BLOCKED )
3044
3043
sid_domain -> ops -> attach_dev (sid_domain , dev );
3045
3044
}
3045
+ return 0 ;
3046
3046
}
3047
3047
3048
3048
static void arm_smmu_attach_dev_ste (struct iommu_domain * domain ,
@@ -3124,6 +3124,7 @@ static int arm_smmu_attach_dev_blocked(struct iommu_domain *domain,
3124
3124
3125
3125
static const struct iommu_domain_ops arm_smmu_blocked_ops = {
3126
3126
.attach_dev = arm_smmu_attach_dev_blocked ,
3127
+ .set_dev_pasid = arm_smmu_blocking_set_dev_pasid ,
3127
3128
};
3128
3129
3129
3130
static struct iommu_domain arm_smmu_blocked_domain = {
@@ -3551,7 +3552,6 @@ static struct iommu_ops arm_smmu_ops = {
3551
3552
.device_group = arm_smmu_device_group ,
3552
3553
.of_xlate = arm_smmu_of_xlate ,
3553
3554
.get_resv_regions = arm_smmu_get_resv_regions ,
3554
- .remove_dev_pasid = arm_smmu_remove_dev_pasid ,
3555
3555
.dev_enable_feat = arm_smmu_dev_enable_feature ,
3556
3556
.dev_disable_feat = arm_smmu_dev_disable_feature ,
3557
3557
.page_response = arm_smmu_page_response ,
0 commit comments