diff for duplicates of <1522234731-27397-4-git-send-email-cpandya@codeaurora.org> diff --git a/a/1.txt b/N1/1.txt index a2ad9be..6907fc8 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -8,63 +8,3 @@ Implementation requires, Signed-off-by: Chintan Pandya <cpandya@codeaurora.org> --- -From V5->V6: - - Removed extra bool parameter 'tlb_inv' - - Doing pmd/pud TLB invalidation with __flush_tlb_kernel_pgtable() - - arch/arm64/mm/mmu.c | 29 +++++++++++++++++++++++++---- - 1 file changed, 25 insertions(+), 4 deletions(-) - -diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c -index da98828..0f651db 100644 ---- a/arch/arm64/mm/mmu.c -+++ b/arch/arm64/mm/mmu.c -@@ -45,6 +45,7 @@ - #include <asm/memblock.h> - #include <asm/mmu_context.h> - #include <asm/ptdump.h> -+#include <asm/tlbflush.h> - - #define NO_BLOCK_MAPPINGS BIT(0) - #define NO_CONT_MAPPINGS BIT(1) -@@ -973,12 +974,32 @@ int pmd_clear_huge(pmd_t *pmdp) - return 1; - } - --int pud_free_pmd_page(pud_t *pud, unsigned long addr) -+int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr) - { -- return pud_none(*pud); -+ pmd_t *table; -+ -+ if (pmd_present(READ_ONCE(*pmdp))) { -+ table = __va(pmd_val(*pmdp)); -+ pmd_clear(pmdp); -+ __flush_tlb_kernel_pgtable(addr); -+ free_page((unsigned long) table); -+ } -+ return 1; - } - --int pmd_free_pte_page(pmd_t *pmd, unsigned long addr) -+int pud_free_pmd_page(pud_t *pudp, unsigned long addr) - { -- return pmd_none(*pmd); -+ pmd_t *table; -+ int i; -+ -+ if (pud_present(READ_ONCE(*pudp))) { -+ table = __va(pud_val(*pudp)); -+ for (i = 0; i < PTRS_PER_PMD; i++) -+ pmd_free_pte_page(&table[i], addr + (i * PMD_SIZE)); -+ -+ pud_clear(pudp); -+ __flush_tlb_kernel_pgtable(addr); -+ free_page((unsigned long) table); -+ } -+ return 1; - } --- -Qualcomm India Private Limited, on behalf of Qualcomm Innovation -Center, Inc., is a member of Code Aurora Forum, a Linux Foundation -Collaborative Project diff --git a/a/content_digest b/N1/content_digest index d794d47..4e148c9 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -30,66 +30,6 @@ " 3) Freeing of the un-used next level page tables\n" "\n" "Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>\n" - "---\n" - "From V5->V6:\n" - " - Removed extra bool parameter 'tlb_inv'\n" - " - Doing pmd/pud TLB invalidation with __flush_tlb_kernel_pgtable()\n" - "\n" - " arch/arm64/mm/mmu.c | 29 +++++++++++++++++++++++++----\n" - " 1 file changed, 25 insertions(+), 4 deletions(-)\n" - "\n" - "diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c\n" - "index da98828..0f651db 100644\n" - "--- a/arch/arm64/mm/mmu.c\n" - "+++ b/arch/arm64/mm/mmu.c\n" - "@@ -45,6 +45,7 @@\n" - " #include <asm/memblock.h>\n" - " #include <asm/mmu_context.h>\n" - " #include <asm/ptdump.h>\n" - "+#include <asm/tlbflush.h>\n" - " \n" - " #define NO_BLOCK_MAPPINGS\tBIT(0)\n" - " #define NO_CONT_MAPPINGS\tBIT(1)\n" - "@@ -973,12 +974,32 @@ int pmd_clear_huge(pmd_t *pmdp)\n" - " \treturn 1;\n" - " }\n" - " \n" - "-int pud_free_pmd_page(pud_t *pud, unsigned long addr)\n" - "+int pmd_free_pte_page(pmd_t *pmdp, unsigned long addr)\n" - " {\n" - "-\treturn pud_none(*pud);\n" - "+\tpmd_t *table;\n" - "+\n" - "+\tif (pmd_present(READ_ONCE(*pmdp))) {\n" - "+\t\ttable = __va(pmd_val(*pmdp));\n" - "+\t\tpmd_clear(pmdp);\n" - "+\t\t__flush_tlb_kernel_pgtable(addr);\n" - "+\t\tfree_page((unsigned long) table);\n" - "+\t}\n" - "+\treturn 1;\n" - " }\n" - " \n" - "-int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)\n" - "+int pud_free_pmd_page(pud_t *pudp, unsigned long addr)\n" - " {\n" - "-\treturn pmd_none(*pmd);\n" - "+\tpmd_t *table;\n" - "+\tint i;\n" - "+\n" - "+\tif (pud_present(READ_ONCE(*pudp))) {\n" - "+\t\ttable = __va(pud_val(*pudp));\n" - "+\t\tfor (i = 0; i < PTRS_PER_PMD; i++)\n" - "+\t\t\tpmd_free_pte_page(&table[i], addr + (i * PMD_SIZE));\n" - "+\n" - "+\t\tpud_clear(pudp);\n" - "+\t\t__flush_tlb_kernel_pgtable(addr);\n" - "+\t\tfree_page((unsigned long) table);\n" - "+\t}\n" - "+\treturn 1;\n" - " }\n" - "-- \n" - "Qualcomm India Private Limited, on behalf of Qualcomm Innovation\n" - "Center, Inc., is a member of Code Aurora Forum, a Linux Foundation\n" - Collaborative Project + --- -f792c91d6354049231e1dfdef8aec795903563685032189acaccce0312a84b40 +9a112c76b967110d615d19e10910b97f8e2c8044d4f16773914cbb95e4ea5e60
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).