Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbedd9b9 authored by John Keeping's avatar John Keeping Committed by Joerg Roedel
Browse files

iommu/rockchip: Fix "is stall active" check



Since commit cd6438c5 ("iommu/rockchip: Reconstruct to support multi
slaves") rk_iommu_is_stall_active() always returns false because the
bitwise AND operates on the boolean flag promoted to an integer and a
value that is either zero or BIT(2).

Explicitly convert the right-hand value to a boolean so that both sides
are guaranteed to be either zero or one.

rk_iommu_is_paging_enabled() does not suffer from the same problem since
RK_MMU_STATUS_PAGING_ENABLED is BIT(0), but let's apply the same change
for consistency and to make it clear that it's correct without needing
to lookup the value.

Fixes: cd6438c5 ("iommu/rockchip: Reconstruct to support multi slaves")
Signed-off-by: default avatarJohn Keeping <john@metanate.com>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Tested-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent eebb8034
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -315,8 +315,8 @@ static bool rk_iommu_is_stall_active(struct rk_iommu *iommu)
	int i;

	for (i = 0; i < iommu->num_mmu; i++)
		active &= rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
					RK_MMU_STATUS_STALL_ACTIVE;
		active &= !!(rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
					   RK_MMU_STATUS_STALL_ACTIVE);

	return active;
}
@@ -327,8 +327,8 @@ static bool rk_iommu_is_paging_enabled(struct rk_iommu *iommu)
	int i;

	for (i = 0; i < iommu->num_mmu; i++)
		enable &= rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
					RK_MMU_STATUS_PAGING_ENABLED;
		enable &= !!(rk_iommu_read(iommu->bases[i], RK_MMU_STATUS) &
					   RK_MMU_STATUS_PAGING_ENABLED);

	return enable;
}