diff options
author | Stepan Moskovchenko <stepanm@codeaurora.org> | 2011-02-28 19:04:55 -0500 |
---|---|---|
committer | David Brown <davidb@codeaurora.org> | 2011-03-08 17:42:30 -0500 |
commit | b0e7808d548ea1d857216d31d63078411203a116 (patch) | |
tree | eed2f1cd89faf7b5f84e649947cb086aa9ffd7a6 | |
parent | a43d8c101eb71bf4527dd7f36a34a5a502894f38 (diff) |
msm: iommu: Don't read from write-only registers
Don't read from V2Pxx command registers when doing
iova-to-phys operations. These registers are write-only and
reading the value before modifying the VA bits is
unnecessary.
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
-rw-r--r-- | arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h | 28 | ||||
-rw-r--r-- | arch/arm/mach-msm/iommu.c | 2 |
2 files changed, 1 insertions, 29 deletions
diff --git a/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h b/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h index bbd397cff6c8..fc160101dead 100644 --- a/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h +++ b/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h | |||
@@ -625,20 +625,6 @@ do { \ | |||
625 | #define SET_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PSR, INDEX, v) | 625 | #define SET_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PSR, INDEX, v) |
626 | 626 | ||
627 | 627 | ||
628 | /* V2Pxx UW UR PW PR */ | ||
629 | #define SET_V2PUW_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PUW, V2Pxx_INDEX, v) | ||
630 | #define SET_V2PUW_VA(b, c, v) SET_CONTEXT_FIELD(b, c, V2PUW, V2Pxx_VA, v) | ||
631 | |||
632 | #define SET_V2PUR_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PUR, V2Pxx_INDEX, v) | ||
633 | #define SET_V2PUR_VA(b, c, v) SET_CONTEXT_FIELD(b, c, V2PUR, V2Pxx_VA, v) | ||
634 | |||
635 | #define SET_V2PPW_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PPW, V2Pxx_INDEX, v) | ||
636 | #define SET_V2PPW_VA(b, c, v) SET_CONTEXT_FIELD(b, c, V2PPW, V2Pxx_VA, v) | ||
637 | |||
638 | #define SET_V2PPR_INDEX(b, c, v) SET_CONTEXT_FIELD(b, c, V2PPR, V2Pxx_INDEX, v) | ||
639 | #define SET_V2PPR_VA(b, c, v) SET_CONTEXT_FIELD(b, c, V2PPR, V2Pxx_VA, v) | ||
640 | |||
641 | |||
642 | /* Context Register getters */ | 628 | /* Context Register getters */ |
643 | /* ACTLR */ | 629 | /* ACTLR */ |
644 | #define GET_CFERE(b, c) GET_CONTEXT_FIELD(b, c, ACTLR, CFERE) | 630 | #define GET_CFERE(b, c) GET_CONTEXT_FIELD(b, c, ACTLR, CFERE) |
@@ -826,20 +812,6 @@ do { \ | |||
826 | #define GET_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PSR, INDEX) | 812 | #define GET_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PSR, INDEX) |
827 | 813 | ||
828 | 814 | ||
829 | /* V2Pxx UW UR PW PR */ | ||
830 | #define GET_V2PUW_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PUW, V2Pxx_INDEX) | ||
831 | #define GET_V2PUW_VA(b, c) GET_CONTEXT_FIELD(b, c, V2PUW, V2Pxx_VA) | ||
832 | |||
833 | #define GET_V2PUR_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PUR, V2Pxx_INDEX) | ||
834 | #define GET_V2PUR_VA(b, c) GET_CONTEXT_FIELD(b, c, V2PUR, V2Pxx_VA) | ||
835 | |||
836 | #define GET_V2PPW_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PPW, V2Pxx_INDEX) | ||
837 | #define GET_V2PPW_VA(b, c) GET_CONTEXT_FIELD(b, c, V2PPW, V2Pxx_VA) | ||
838 | |||
839 | #define GET_V2PPR_INDEX(b, c) GET_CONTEXT_FIELD(b, c, V2PPR, V2Pxx_INDEX) | ||
840 | #define GET_V2PPR_VA(b, c) GET_CONTEXT_FIELD(b, c, V2PPR, V2Pxx_VA) | ||
841 | |||
842 | |||
843 | /* Global Registers */ | 815 | /* Global Registers */ |
844 | #define M2VCBR_N (0xFF000) | 816 | #define M2VCBR_N (0xFF000) |
845 | #define CBACR_N (0xFF800) | 817 | #define CBACR_N (0xFF800) |
diff --git a/arch/arm/mach-msm/iommu.c b/arch/arm/mach-msm/iommu.c index 0146f519e85c..1a584e077c61 100644 --- a/arch/arm/mach-msm/iommu.c +++ b/arch/arm/mach-msm/iommu.c | |||
@@ -579,7 +579,7 @@ static phys_addr_t msm_iommu_iova_to_phys(struct iommu_domain *domain, | |||
579 | 579 | ||
580 | /* Invalidate context TLB */ | 580 | /* Invalidate context TLB */ |
581 | SET_CTX_TLBIALL(base, ctx, 0); | 581 | SET_CTX_TLBIALL(base, ctx, 0); |
582 | SET_V2PPR_VA(base, ctx, va >> V2Pxx_VA_SHIFT); | 582 | SET_V2PPR(base, ctx, va & V2Pxx_VA); |
583 | 583 | ||
584 | par = GET_PAR(base, ctx); | 584 | par = GET_PAR(base, ctx); |
585 | 585 | ||