summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-03-01 18:38:32 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-03-01 18:38:31 -0800
commit8ddeda9e35a23b5ffb6046fdf827136d591a0bf2 (patch)
treea520e66e3b85abac927a57dba98216a6e9a7b927
parent58411a695cef3b64e9f60a2f61c551610652de5c (diff)
parent847210ab6b76d2ba65b767836772d5a7c839b4da (diff)
Merge "iommu/io-pgtable-fast: cache clean the last level ptes"
-rw-r--r--drivers/iommu/io-pgtable-fast.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/iommu/io-pgtable-fast.c b/drivers/iommu/io-pgtable-fast.c
index 603b983d1916..3582e206db68 100644
--- a/drivers/iommu/io-pgtable-fast.c
+++ b/drivers/iommu/io-pgtable-fast.c
@@ -426,11 +426,16 @@ av8l_fast_prepopulate_pgtables(struct av8l_fast_io_pgtable *data,
for (j = pmd_index(pud), pmd = pud; pmd < pud_next(pud, end);
++j, pmd = pmd_next(pmd, end)) {
av8l_fast_iopte pte, *pudp;
+ void *addr;
page = alloc_page(GFP_KERNEL | __GFP_ZERO);
if (!page)
goto err_free_pages;
pages[pg++] = page;
+
+ addr = page_address(page);
+ dmac_clean_range(addr, addr + SZ_4K);
+
pte = page_to_phys(page) | AV8L_FAST_PTE_TYPE_TABLE;
pudp = data->puds[i] + j;
*pudp = pte;