@@ -491,9 +491,6 @@ static bool __sysmmu_disable(struct sysmmu_drvdata *data)
491
491
__sysmmu_disable_nocount (data );
492
492
493
493
dev_dbg (data -> sysmmu , "Disabled\n" );
494
- } else {
495
- dev_dbg (data -> sysmmu , "%d times left to disable\n" ,
496
- data -> activations );
497
494
}
498
495
499
496
spin_unlock_irqrestore (& data -> lock , flags );
@@ -541,29 +538,18 @@ static void __sysmmu_enable_nocount(struct sysmmu_drvdata *data)
541
538
static int __sysmmu_enable (struct sysmmu_drvdata * data , phys_addr_t pgtable ,
542
539
struct exynos_iommu_domain * domain )
543
540
{
544
- int ret = 0 ;
545
541
unsigned long flags ;
546
542
547
543
spin_lock_irqsave (& data -> lock , flags );
548
544
if (set_sysmmu_active (data )) {
549
545
data -> pgtable = pgtable ;
550
546
data -> domain = domain ;
551
-
552
547
__sysmmu_enable_nocount (data );
553
-
554
548
dev_dbg (data -> sysmmu , "Enabled\n" );
555
- } else {
556
- ret = (pgtable == data -> pgtable ) ? 1 : - EBUSY ;
557
-
558
- dev_dbg (data -> sysmmu , "already enabled\n" );
559
549
}
560
-
561
- if (WARN_ON (ret < 0 ))
562
- set_sysmmu_inactive (data ); /* decrement count */
563
-
564
550
spin_unlock_irqrestore (& data -> lock , flags );
565
551
566
- return ret ;
552
+ return 0 ;
567
553
}
568
554
569
555
static void sysmmu_tlb_invalidate_flpdcache (struct sysmmu_drvdata * data ,
@@ -831,8 +817,8 @@ static void exynos_iommu_domain_free(struct iommu_domain *iommu_domain)
831
817
spin_lock_irqsave (& domain -> lock , flags );
832
818
833
819
list_for_each_entry_safe (data , next , & domain -> clients , domain_node ) {
834
- if ( __sysmmu_disable (data ))
835
- data -> master = NULL ;
820
+ __sysmmu_disable (data );
821
+ data -> master = NULL ;
836
822
list_del_init (& data -> domain_node );
837
823
}
838
824
@@ -867,31 +853,23 @@ static void exynos_iommu_detach_device(struct iommu_domain *iommu_domain,
867
853
phys_addr_t pagetable = virt_to_phys (domain -> pgtable );
868
854
struct sysmmu_drvdata * data , * next ;
869
855
unsigned long flags ;
870
- bool found = false;
871
856
872
857
if (!has_sysmmu (dev ) || owner -> domain != iommu_domain )
873
858
return ;
874
859
875
860
spin_lock_irqsave (& domain -> lock , flags );
876
861
list_for_each_entry_safe (data , next , & domain -> clients , domain_node ) {
877
- if (data -> master == dev ) {
878
- if (__sysmmu_disable (data )) {
879
- data -> master = NULL ;
880
- list_del_init (& data -> domain_node );
881
- }
882
- pm_runtime_put (data -> sysmmu );
883
- found = true;
884
- }
862
+ __sysmmu_disable (data );
863
+ data -> master = NULL ;
864
+ list_del_init (& data -> domain_node );
865
+ pm_runtime_put (data -> sysmmu );
885
866
}
886
867
spin_unlock_irqrestore (& domain -> lock , flags );
887
868
888
869
owner -> domain = NULL ;
889
870
890
- if (found )
891
- dev_dbg (dev , "%s: Detached IOMMU with pgtable %pa\n" ,
892
- __func__ , & pagetable );
893
- else
894
- dev_err (dev , "%s: No IOMMU is attached\n" , __func__ );
871
+ dev_dbg (dev , "%s: Detached IOMMU with pgtable %pa\n" , __func__ ,
872
+ & pagetable );
895
873
}
896
874
897
875
static int exynos_iommu_attach_device (struct iommu_domain * iommu_domain ,
@@ -902,7 +880,6 @@ static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain,
902
880
struct sysmmu_drvdata * data ;
903
881
phys_addr_t pagetable = virt_to_phys (domain -> pgtable );
904
882
unsigned long flags ;
905
- int ret = - ENODEV ;
906
883
907
884
if (!has_sysmmu (dev ))
908
885
return - ENODEV ;
@@ -912,27 +889,19 @@ static int exynos_iommu_attach_device(struct iommu_domain *iommu_domain,
912
889
913
890
list_for_each_entry (data , & owner -> controllers , owner_node ) {
914
891
pm_runtime_get_sync (data -> sysmmu );
915
- ret = __sysmmu_enable (data , pagetable , domain );
916
- if (ret >= 0 ) {
917
- data -> master = dev ;
892
+ __sysmmu_enable (data , pagetable , domain );
893
+ data -> master = dev ;
918
894
919
- spin_lock_irqsave (& domain -> lock , flags );
920
- list_add_tail (& data -> domain_node , & domain -> clients );
921
- spin_unlock_irqrestore (& domain -> lock , flags );
922
- }
923
- }
924
-
925
- if (ret < 0 ) {
926
- dev_err (dev , "%s: Failed to attach IOMMU with pgtable %pa\n" ,
927
- __func__ , & pagetable );
928
- return ret ;
895
+ spin_lock_irqsave (& domain -> lock , flags );
896
+ list_add_tail (& data -> domain_node , & domain -> clients );
897
+ spin_unlock_irqrestore (& domain -> lock , flags );
929
898
}
930
899
931
900
owner -> domain = iommu_domain ;
932
- dev_dbg (dev , "%s: Attached IOMMU with pgtable %pa %s \n" ,
933
- __func__ , & pagetable , ( ret == 0 ) ? "" : ", again" );
901
+ dev_dbg (dev , "%s: Attached IOMMU with pgtable %pa\n" , __func__ ,
902
+ & pagetable );
934
903
935
- return ret ;
904
+ return 0 ;
936
905
}
937
906
938
907
static sysmmu_pte_t * alloc_lv2entry (struct exynos_iommu_domain * domain ,
0 commit comments