summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJordan Crouse <jcrouse@codeaurora.org>2015-07-07 12:55:48 -0600
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:13:21 -0700
commitfd7077c3858d489647ba997d49b4a3765042b65f (patch)
treeb034a3b52ad0e404833af7ffcbf3680170a50384 /include/linux
parentd295004695fd1f70e1198401459548f59afad336 (diff)
iommu: io-pgtable-arm: Fix unmap optimization for pagetable boundaries
The last level optimization for __arm_lpae_unmap assumes that consecutive blocks of 2MB addresses are located in the same 1GB mapping but this isn't always true - if the address spans a 1GB boundary the next iova is in a different pagetable. Only perform the optimization for the current pagetable entry and then kick it back for the loop in arm_lpae_unmap to try again with the updated iova. All this means that __arm_lpae_unmap may not unmap all of the size that it was given. This is okay assuming at least something was unmapped so don't jump out of the loop in arm_lpae_unmap until the child function returns 0 or the entire block is freed, whichever comes first. CRs-Fixed: 867143 Change-Id: Ic0dedbad407d60365a95afdaf03ec3b91f53960d Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions