xtensa-switch-to-generic-version-of-pte-allocation.patch removed from -mm tree
The patch titled
Subject: xtensa: switch to generic version of pte allocation
has been removed from the -mm tree. Its filename was
xtensa-switch-to-generic-version-of-pte-allocation.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: Mike Rapoport <[email protected]>
Subject: xtensa: switch to generic version of pte allocation
xtensa clears PTEs during allocation of the page tables and pte_clear() sets the PTE to a non-zero value. Splitting ptes_clear() helper out of pte_alloc_one() and pte_alloc_one_kernel() allows reuse of base generic allocation methods (__pte_alloc_one() and __pte_alloc_one_kernel()) and the common GFP mask for page table allocations.
The pte_free() and pte_free_kernel() implementations on xtensa are identical to the generic ones and can be dropped.
---
arch/xtensa/include/asm/pgalloc.h | 41 ++++++++++++---------------- 1 file changed, 19 insertions(+), 22 deletions(-)
arch/xtensa/include/asm/pgalloc.h renamed from arch/xtensa/include/asm/pgalloc.h~xtensa-switch-to-generic-version-of-pte-allocation +19 -22
@@ -8,9 +8,14 @@#ifndef _XTENSA_PGALLOC_H#define _XTENSA_PGALLOC_H +#ifdef CONFIG_MMU #include <linux/highmem.h> #include <linux/slab.h> +#define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL +#define __HAVE_ARCH_PTE_ALLOC_ONE +#include <asm-generic/pgalloc.h> +/* * Allocating and freeing a pmd is trivial: the 1-entry pmd is * inside the pgd, so has no extra memory associated with it.
@@ -33,45 +38,37 @@ static inline void pgd_free(struct mm_stfree_page ((unsigned long )pgd); } +static inline void ptes_clear (pte_t *ptep) +{ +int i; + +for (i =0 ; i <PTRS_PER_PTE ; i++) +pte_clear (NULL ,0 , ptep + i); +} +static inline pte_t *pte_alloc_one_kernel (struct mm_struct *mm) {pte_t *ptep; -int i; - ptep = (pte_t *)__get_free_page (GFP_KERNEL ); + ptep = (pte_t *)__pte_alloc_one_kernel (mm);if (!ptep)return NULL ; -for (i =0 ; i <1024 ; i++) -pte_clear (NULL ,0 , ptep + i); +ptes_clear (ptep);return ptep; }static inline pgtable_t pte_alloc_one (struct mm_struct *mm) { -pte_t *pte;struct page *page; - pte =pte_alloc_one_kernel (mm); -if (!pte) -return NULL ; - page =virt_to_page (pte); -if (!pgtable_pte_page_ctor (page)) { -__free_page (page); + page =__pte_alloc_one (mm,GFP_PGTABLE_USER ); +if (!page)return NULL ; - } +ptes_clear (page_address (page));return page; } -static inline void pte_free_kernel (struct mm_struct *mm,pte_t *pte) -{ -free_page ((unsigned long )pte); -} - -static inline void pte_free (struct mm_struct *mm,pgtable_t pte) -{ -pgtable_pte_page_dtor (pte); -__free_page (pte); -}#define pmd_pgtable (pmd) pmd_page(pmd) +#endif /* CONFIG_MMU */ #endif /* _XTENSA_PGALLOC_H */
_
Patches currently in -mm which might be from [email protected] are