pgtable.c (f8bade6c9a6213c2c5ba6e5bf32415ecab6e41e5) pgtable.c (97dc2a1548ab0dc320ce3618b73b3f9dc732b6ee)
1// SPDX-License-Identifier: GPL-2.0
2#include <linux/mm.h>
3#include <linux/gfp.h>
4#include <linux/hugetlb.h>
5#include <asm/pgalloc.h>
6#include <asm/tlb.h>
7#include <asm/fixmap.h>
8#include <asm/mtrr.h>

--- 766 unchanged lines hidden (view full) ---

775 if (pmd_large(*pmd)) {
776 pmd_clear(pmd);
777 return 1;
778 }
779
780 return 0;
781}
782
1// SPDX-License-Identifier: GPL-2.0
2#include <linux/mm.h>
3#include <linux/gfp.h>
4#include <linux/hugetlb.h>
5#include <asm/pgalloc.h>
6#include <asm/tlb.h>
7#include <asm/fixmap.h>
8#include <asm/mtrr.h>

--- 766 unchanged lines hidden (view full) ---

775 if (pmd_large(*pmd)) {
776 pmd_clear(pmd);
777 return 1;
778 }
779
780 return 0;
781}
782
783/*
784 * Until we support 512GB pages, skip them in the vmap area.
785 */
786int p4d_free_pud_page(p4d_t *p4d, unsigned long addr)
787{
788 return 0;
789}
790
791#ifdef CONFIG_X86_64
792/**
793 * pud_free_pmd_page - Clear pud entry and free pmd page.
794 * @pud: Pointer to a PUD.
795 * @addr: Virtual address associated with pud.
796 *
797 * Context: The pud range has been unmapped and TLB purged.
798 * Return: 1 if clearing the entry succeeded. 0 otherwise.

--- 57 unchanged lines hidden (view full) ---

856
857 free_page((unsigned long)pte);
858
859 return 1;
860}
861
862#else /* !CONFIG_X86_64 */
863
783#ifdef CONFIG_X86_64
784/**
785 * pud_free_pmd_page - Clear pud entry and free pmd page.
786 * @pud: Pointer to a PUD.
787 * @addr: Virtual address associated with pud.
788 *
789 * Context: The pud range has been unmapped and TLB purged.
790 * Return: 1 if clearing the entry succeeded. 0 otherwise.

--- 57 unchanged lines hidden (view full) ---

848
849 free_page((unsigned long)pte);
850
851 return 1;
852}
853
854#else /* !CONFIG_X86_64 */
855
864int pud_free_pmd_page(pud_t *pud, unsigned long addr)
865{
866 return pud_none(*pud);
867}
868
869/*
870 * Disable free page handling on x86-PAE. This assures that ioremap()
871 * does not update sync'd pmd entries. See vmalloc_sync_one().
872 */
873int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
874{
875 return pmd_none(*pmd);
876}
877
878#endif /* CONFIG_X86_64 */
879#endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */
856/*
857 * Disable free page handling on x86-PAE. This assures that ioremap()
858 * does not update sync'd pmd entries. See vmalloc_sync_one().
859 */
860int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
861{
862 return pmd_none(*pmd);
863}
864
865#endif /* CONFIG_X86_64 */
866#endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */