Skip to content

Commit 469b7b8

Browse files
Christoph Hellwigjoergroedel
authored andcommitted
iommu/arm-smmu-v3: cleanup arm_smmu_dev_{enable,disable}_feature
Fold the arm_smmu_dev_has_feature arm_smmu_dev_feature_enabled into the main methods. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Will Deacon <will@kernel.org> Link: https://lore.kernel.org/r/20220708080616.238833-5-hch@lst.de Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent ae3ff39 commit 469b7b8

1 file changed

Lines changed: 14 additions & 41 deletions

File tree

drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,58 +2765,27 @@ static void arm_smmu_get_resv_regions(struct device *dev,
27652765
iommu_dma_get_resv_regions(dev, head);
27662766
}
27672767

2768-
static bool arm_smmu_dev_has_feature(struct device *dev,
2769-
enum iommu_dev_features feat)
2770-
{
2771-
struct arm_smmu_master *master = dev_iommu_priv_get(dev);
2772-
2773-
if (!master)
2774-
return false;
2775-
2776-
switch (feat) {
2777-
case IOMMU_DEV_FEAT_IOPF:
2778-
return arm_smmu_master_iopf_supported(master);
2779-
case IOMMU_DEV_FEAT_SVA:
2780-
return arm_smmu_master_sva_supported(master);
2781-
default:
2782-
return false;
2783-
}
2784-
}
2785-
2786-
static bool arm_smmu_dev_feature_enabled(struct device *dev,
2787-
enum iommu_dev_features feat)
2788-
{
2789-
struct arm_smmu_master *master = dev_iommu_priv_get(dev);
2790-
2791-
if (!master)
2792-
return false;
2793-
2794-
switch (feat) {
2795-
case IOMMU_DEV_FEAT_IOPF:
2796-
return master->iopf_enabled;
2797-
case IOMMU_DEV_FEAT_SVA:
2798-
return arm_smmu_master_sva_enabled(master);
2799-
default:
2800-
return false;
2801-
}
2802-
}
2803-
28042768
static int arm_smmu_dev_enable_feature(struct device *dev,
28052769
enum iommu_dev_features feat)
28062770
{
28072771
struct arm_smmu_master *master = dev_iommu_priv_get(dev);
28082772

2809-
if (!arm_smmu_dev_has_feature(dev, feat))
2773+
if (!master)
28102774
return -ENODEV;
28112775

2812-
if (arm_smmu_dev_feature_enabled(dev, feat))
2813-
return -EBUSY;
2814-
28152776
switch (feat) {
28162777
case IOMMU_DEV_FEAT_IOPF:
2778+
if (!arm_smmu_master_iopf_supported(master))
2779+
return -EINVAL;
2780+
if (master->iopf_enabled)
2781+
return -EBUSY;
28172782
master->iopf_enabled = true;
28182783
return 0;
28192784
case IOMMU_DEV_FEAT_SVA:
2785+
if (!arm_smmu_master_sva_supported(master))
2786+
return -EINVAL;
2787+
if (arm_smmu_master_sva_enabled(master))
2788+
return -EBUSY;
28202789
return arm_smmu_master_enable_sva(master);
28212790
default:
28222791
return -EINVAL;
@@ -2828,16 +2797,20 @@ static int arm_smmu_dev_disable_feature(struct device *dev,
28282797
{
28292798
struct arm_smmu_master *master = dev_iommu_priv_get(dev);
28302799

2831-
if (!arm_smmu_dev_feature_enabled(dev, feat))
2800+
if (!master)
28322801
return -EINVAL;
28332802

28342803
switch (feat) {
28352804
case IOMMU_DEV_FEAT_IOPF:
2805+
if (!master->iopf_enabled)
2806+
return -EINVAL;
28362807
if (master->sva_enabled)
28372808
return -EBUSY;
28382809
master->iopf_enabled = false;
28392810
return 0;
28402811
case IOMMU_DEV_FEAT_SVA:
2812+
if (!arm_smmu_master_sva_enabled(master))
2813+
return -EINVAL;
28412814
return arm_smmu_master_disable_sva(master);
28422815
default:
28432816
return -EINVAL;

0 commit comments

Comments
 (0)