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

Commit 0a77a966 authored by Lucas Stach's avatar Lucas Stach Committed by Greg Kroah-Hartman
Browse files

drm/etnaviv: don't truncate physical page address



[ Upstream commit d37c120b73128690434cc093952439eef9d56af1 ]

While the interface for the MMU mapping takes phys_addr_t to hold a
full 64bit address when necessary and MMUv2 is able to map physical
addresses with up to 40bit, etnaviv_iommu_map() truncates the address
to 32bits. Fix this by using the correct type.

Fixes: 931e97f3 ("drm/etnaviv: mmuv2: support 40 bit phys address")
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent fa2845b2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -80,10 +80,10 @@ static int etnaviv_iommu_map(struct etnaviv_iommu_context *context, u32 iova,
		return -EINVAL;

	for_each_sgtable_dma_sg(sgt, sg, i) {
		u32 pa = sg_dma_address(sg) - sg->offset;
		phys_addr_t pa = sg_dma_address(sg) - sg->offset;
		size_t bytes = sg_dma_len(sg) + sg->offset;

		VERB("map[%d]: %08x %08x(%zx)", i, iova, pa, bytes);
		VERB("map[%d]: %08x %pap(%zx)", i, iova, &pa, bytes);

		ret = etnaviv_context_map(context, da, pa, bytes, prot);
		if (ret)