diff options
author | John Keeping <john@metanate.com> | 2016-06-01 11:46:10 -0400 |
---|---|---|
committer | Joerg Roedel <jroedel@suse.de> | 2016-06-15 06:03:00 -0400 |
commit | ae8a7910fb0568531033bd6ebe65590f7a4fa6e2 (patch) | |
tree | cbd72db1653b55ee1f1f0f300a1071e11f990a26 /drivers/iommu/rockchip-iommu.c | |
parent | 9aeb26cfc2abc96be42b9df2d0f2dc5d805084ff (diff) |
iommu/rockchip: Fix zap cache during device attach
rk_iommu_command() takes a struct rk_iommu and iterates over the slave
MMUs, so this is doubly wrong in that we're passing in the wrong pointer
and talking to MMUs that we shouldn't be.
Fixes: cd6438c5f844 ("iommu/rockchip: Reconstruct to support multi slaves")
Cc: stable@vger.kernel.org
Signed-off-by: John Keeping <john@metanate.com>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'drivers/iommu/rockchip-iommu.c')
-rw-r--r-- | drivers/iommu/rockchip-iommu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index c7d6156ff536..25b4627cb57f 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c | |||
@@ -815,7 +815,7 @@ static int rk_iommu_attach_device(struct iommu_domain *domain, | |||
815 | dte_addr = virt_to_phys(rk_domain->dt); | 815 | dte_addr = virt_to_phys(rk_domain->dt); |
816 | for (i = 0; i < iommu->num_mmu; i++) { | 816 | for (i = 0; i < iommu->num_mmu; i++) { |
817 | rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR, dte_addr); | 817 | rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR, dte_addr); |
818 | rk_iommu_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE); | 818 | rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE); |
819 | rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, RK_MMU_IRQ_MASK); | 819 | rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, RK_MMU_IRQ_MASK); |
820 | } | 820 | } |
821 | 821 | ||