Commit Graph

6 Commits

Author SHA1 Message Date
Isaac J. Manjarres
12df5565bc qcom-io-pgtable-arm: Allow caching buffers in the system cache
Add support for mapping memory with the attributes required
for it to be cached in the system cache:

MAIR: 0xf4: inner non-cacheable, outer write-back read/write allocate.

Change-Id: I1fb59d272223cc2a0d34250e7442fafb7190475d
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-14 13:59:46 -08:00
Isaac J. Manjarres
d50643f773 qcom-io-pgtable-arm: Add support for IO_PGTABLE_QUIRK_QCOM_USE_LLC_NWA
The IO_PGTABLE_QUIRK_QCOM_USE_LLC_NWA quirk is used to ensure that
the IOMMU page tables are cached in the system cache with a no write
allocation cache policy. Add support for it by setting up the TCR
with the following memory attributes for the page table walker:

TCR.SH = Outer-shareable
TCR.IRGN = Non-cacheable normal memory
TCR.ORGN = Write-back, no write-allocate cacheable.

Change-Id: Ifa88b673de3b756e5b03bc36e89db84bc013346a
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-12 18:20:32 -08:00
Isaac J. Manjarres
bc74b78bc5 qcom-io-pgtable-arm: Add support for the QCOM_USE_UPSTREAM_HINT quirk
The IO_PGTABLE_QUIRK_QCOM_USE_UPSTREAM_HINT is used to ensure that the
IOMMU page tables are cached in the system cache. Add support for it
by setting up the TCR with the following memory attributes for the
page table walker:

TCR.SH = Outer Shareable
TCR.IRGN = Non-cacheable normal memory
TCR.ORGN = Write-back, write-allocate cacheable.

Change-Id: Iafb16fdee078af746a66821bb50192198beba5bc
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-12 18:20:32 -08:00
Isaac J. Manjarres
a730210d5d qcom-io-pgtable-arm: Defer page table allocations to the IOMMU driver
Add the initial implementation for an IOMMU driver to allocate
and free page table memory. The IOMMU driver implementation of these
hooks will take care of preparing the page tables prior to use.

Change-Id: I1c3ef02fc9464a31d0e0ce65627692d53aa0f976
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-12 18:20:32 -08:00
Patrick Daly
767329165c qcom_iommu_util: Add support for qcom-io-pgtable-arm
Add support for using this submodule.

Change-Id: I3658589b1d38ddcdf8bc9d2c01f6042cfeb964d5
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-12 18:20:32 -08:00
Patrick Daly
d80793c7cc iommu: Duplicate io-pgtable-arm functionality
Create a fork of io-pgtable-arm as of android12-5.10
commit 19057a6a6b ("Merge 5.10.4 into android12-5.10").

This is done in order to support qcom value added features such as:
qcom secure memory model.
refcounting & freeing page table memory.
map_sg operation
intelligent tlb invalidate operations.

Some of the above feature may be outdated or no longer required
with new hardware, or may have upstream alternatives. However,
proving that these features are unnessary may require extensive
testing. Therefore, port them to the GKI model so that this
testing may take place.

Change-Id: I95112cc260d3d254e7703513818b21e066d69978
Signed-off-by: Patrick Daly <pdaly@codeaurora.org>
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2021-01-12 18:20:32 -08:00