Skip to content

Commit c734971

Browse files
committed
Merge branch 'for-next/mm' into for-next/core
* for-next/mm: arm64/boot: Disallow BSS exports to startup code arm64/boot: Move global CPU override variables out of BSS arm64/boot: Move init_pgdir[] and init_idmap_pgdir[] into __pi_ namespace arm64: mm: Drop redundant check in pmd_trans_huge() arm64/mm: Permit lazy_mmu_mode to be nested arm64/mm: Disable barrier batching in interrupt contexts arm64/mm: Batch barriers when updating kernel mappings mm/vmalloc: Enter lazy mmu mode while manipulating vmalloc ptes arm64/mm: Support huge pte-mapped pages in vmap mm/vmalloc: Gracefully unmap huge ptes mm/vmalloc: Warn on improper use of vunmap_range() arm64/mm: Hoist barriers out of set_ptes_anysz() loop arm64: hugetlb: Use __set_ptes_anysz() and __ptep_get_and_clear_anysz() arm64/mm: Refactor __set_ptes() and __ptep_get_and_clear() mm/page_table_check: Batch-check pmds/puds just like ptes arm64: hugetlb: Refine tlb maintenance scope arm64: hugetlb: Cleanup huge_pte size discovery mechanisms arm64: pageattr: Explicitly bail out when changing permissions for vmalloc_huge mappings arm64: Support ARM64_VA_BITS=52 when setting ARCH_MMAP_RND_BITS_MAX arm64/mm: Remove randomization of the linear map
2 parents 9d27622 + 9053052 commit c734971

File tree

20 files changed

+411
-237
lines changed

20 files changed

+411
-237
lines changed

arch/arm64/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,9 +333,9 @@ config ARCH_MMAP_RND_BITS_MAX
333333
default 24 if ARM64_VA_BITS=39
334334
default 27 if ARM64_VA_BITS=42
335335
default 30 if ARM64_VA_BITS=47
336-
default 29 if ARM64_VA_BITS=48 && ARM64_64K_PAGES
337-
default 31 if ARM64_VA_BITS=48 && ARM64_16K_PAGES
338-
default 33 if ARM64_VA_BITS=48
336+
default 29 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_64K_PAGES
337+
default 31 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52) && ARM64_16K_PAGES
338+
default 33 if (ARM64_VA_BITS=48 || ARM64_VA_BITS=52)
339339
default 14 if ARM64_64K_PAGES
340340
default 16 if ARM64_16K_PAGES
341341
default 18

arch/arm64/include/asm/hugetlb.h

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,29 +69,38 @@ extern void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
6969

7070
#include <asm-generic/hugetlb.h>
7171

72-
#define __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
73-
static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma,
74-
unsigned long start,
75-
unsigned long end)
72+
static inline void __flush_hugetlb_tlb_range(struct vm_area_struct *vma,
73+
unsigned long start,
74+
unsigned long end,
75+
unsigned long stride,
76+
bool last_level)
7677
{
77-
unsigned long stride = huge_page_size(hstate_vma(vma));
78-
7978
switch (stride) {
8079
#ifndef __PAGETABLE_PMD_FOLDED
8180
case PUD_SIZE:
82-
__flush_tlb_range(vma, start, end, PUD_SIZE, false, 1);
81+
__flush_tlb_range(vma, start, end, PUD_SIZE, last_level, 1);
8382
break;
8483
#endif
8584
case CONT_PMD_SIZE:
8685
case PMD_SIZE:
87-
__flush_tlb_range(vma, start, end, PMD_SIZE, false, 2);
86+
__flush_tlb_range(vma, start, end, PMD_SIZE, last_level, 2);
8887
break;
8988
case CONT_PTE_SIZE:
90-
__flush_tlb_range(vma, start, end, PAGE_SIZE, false, 3);
89+
__flush_tlb_range(vma, start, end, PAGE_SIZE, last_level, 3);
9190
break;
9291
default:
93-
__flush_tlb_range(vma, start, end, PAGE_SIZE, false, TLBI_TTL_UNKNOWN);
92+
__flush_tlb_range(vma, start, end, PAGE_SIZE, last_level, TLBI_TTL_UNKNOWN);
9493
}
9594
}
9695

96+
#define __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
97+
static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma,
98+
unsigned long start,
99+
unsigned long end)
100+
{
101+
unsigned long stride = huge_page_size(hstate_vma(vma));
102+
103+
__flush_hugetlb_tlb_range(vma, start, end, stride, false);
104+
}
105+
97106
#endif /* __ASM_HUGETLB_H */

0 commit comments

Comments
 (0)