Merge d5660df4a5
("Merge branch 'akpm' (patches from Andrew)") into android-mainline
steps on the way to 5.10-rc1 Change-Id: Iddc84c25b6a9d71fa8542b927d6f69c364131c3d Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
@@ -791,7 +791,7 @@ static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
|
||||
extern void kvfree(const void *addr);
|
||||
extern void kvfree_sensitive(const void *addr, size_t len);
|
||||
|
||||
static inline int head_mapcount(struct page *head)
|
||||
static inline int head_compound_mapcount(struct page *head)
|
||||
{
|
||||
return atomic_read(compound_mapcount_ptr(head)) + 1;
|
||||
}
|
||||
@@ -805,7 +805,7 @@ static inline int compound_mapcount(struct page *page)
|
||||
{
|
||||
VM_BUG_ON_PAGE(!PageCompound(page), page);
|
||||
page = compound_head(page);
|
||||
return head_mapcount(page);
|
||||
return head_compound_mapcount(page);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -918,7 +918,7 @@ static inline bool hpage_pincount_available(struct page *page)
|
||||
return PageCompound(page) && compound_order(page) > 1;
|
||||
}
|
||||
|
||||
static inline int head_pincount(struct page *head)
|
||||
static inline int head_compound_pincount(struct page *head)
|
||||
{
|
||||
return atomic_read(compound_pincount_ptr(head));
|
||||
}
|
||||
@@ -927,7 +927,7 @@ static inline int compound_pincount(struct page *page)
|
||||
{
|
||||
VM_BUG_ON_PAGE(!hpage_pincount_available(page), page);
|
||||
page = compound_head(page);
|
||||
return head_pincount(page);
|
||||
return head_compound_pincount(page);
|
||||
}
|
||||
|
||||
static inline void set_compound_order(struct page *page, unsigned int order)
|
||||
@@ -1653,8 +1653,8 @@ struct mmu_notifier_range;
|
||||
|
||||
void free_pgd_range(struct mmu_gather *tlb, unsigned long addr,
|
||||
unsigned long end, unsigned long floor, unsigned long ceiling);
|
||||
int copy_page_range(struct mm_struct *dst, struct mm_struct *src,
|
||||
struct vm_area_struct *vma, struct vm_area_struct *new);
|
||||
int
|
||||
copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma);
|
||||
int follow_pte_pmd(struct mm_struct *mm, unsigned long address,
|
||||
struct mmu_notifier_range *range,
|
||||
pte_t **ptepp, pmd_t **pmdpp, spinlock_t **ptlp);
|
||||
@@ -2255,7 +2255,7 @@ static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd)
|
||||
return ptlock_ptr(pmd_to_page(pmd));
|
||||
}
|
||||
|
||||
static inline bool pgtable_pmd_page_ctor(struct page *page)
|
||||
static inline bool pmd_ptlock_init(struct page *page)
|
||||
{
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
page->pmd_huge_pte = NULL;
|
||||
@@ -2263,7 +2263,7 @@ static inline bool pgtable_pmd_page_ctor(struct page *page)
|
||||
return ptlock_init(page);
|
||||
}
|
||||
|
||||
static inline void pgtable_pmd_page_dtor(struct page *page)
|
||||
static inline void pmd_ptlock_free(struct page *page)
|
||||
{
|
||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||
VM_BUG_ON_PAGE(page->pmd_huge_pte, page);
|
||||
@@ -2280,8 +2280,8 @@ static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd)
|
||||
return &mm->page_table_lock;
|
||||
}
|
||||
|
||||
static inline bool pgtable_pmd_page_ctor(struct page *page) { return true; }
|
||||
static inline void pgtable_pmd_page_dtor(struct page *page) {}
|
||||
static inline bool pmd_ptlock_init(struct page *page) { return true; }
|
||||
static inline void pmd_ptlock_free(struct page *page) {}
|
||||
|
||||
#define pmd_huge_pte(mm, pmd) ((mm)->pmd_huge_pte)
|
||||
|
||||
@@ -2294,6 +2294,22 @@ static inline spinlock_t *pmd_lock(struct mm_struct *mm, pmd_t *pmd)
|
||||
return ptl;
|
||||
}
|
||||
|
||||
static inline bool pgtable_pmd_page_ctor(struct page *page)
|
||||
{
|
||||
if (!pmd_ptlock_init(page))
|
||||
return false;
|
||||
__SetPageTable(page);
|
||||
inc_zone_page_state(page, NR_PAGETABLE);
|
||||
return true;
|
||||
}
|
||||
|
||||
static inline void pgtable_pmd_page_dtor(struct page *page)
|
||||
{
|
||||
pmd_ptlock_free(page);
|
||||
__ClearPageTable(page);
|
||||
dec_zone_page_state(page, NR_PAGETABLE);
|
||||
}
|
||||
|
||||
/*
|
||||
* No scalability reason to split PUD locks yet, but follow the same pattern
|
||||
* as the PMD locks to make it easier if we decide to. The VM should not be
|
||||
|
Reference in New Issue
Block a user