For all but the last level of the page tables, we
need to call unmap with supported IOMMU pages sizes.
However currently to get the maximum page size that can be
unmapped, we are passing the original size parameter,
instead of the remaining size to be unmapped, and that can
end up unmapping more than what is intended.
Fix this by passing the remaining size parameter to
find the correct IOMMU page size.
Change-Id: Id4bd188ff6a3b4b7d34ba43ae6a61efb3c65b281
Signed-off-by: Neeti Desai <neetid@codeaurora.org>
remaining = (size - unmapped);
size_to_unmap = remaining < SZ_2M
? remaining
- : iommu_pgsize(data->iop.cfg.pgsize_bitmap, iova, size);
+ : iommu_pgsize(data->iop.cfg.pgsize_bitmap, iova,
+ remaining);
ret = __arm_lpae_unmap(data, iova, size_to_unmap, lvl, ptep,
NULL);
if (ret == 0)