|
@@ -1318,6 +1318,7 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a
|
|
|
|
|
|
#if USE_SPLIT_PTE_PTLOCKS
|
|
|
#if BLOATED_SPINLOCKS
|
|
|
+void __init ptlock_cache_init(void);
|
|
|
extern bool ptlock_alloc(struct page *page);
|
|
|
extern void ptlock_free(struct page *page);
|
|
|
|
|
@@ -1326,6 +1327,7 @@ static inline spinlock_t *ptlock_ptr(struct page *page)
|
|
|
return page->ptl;
|
|
|
}
|
|
|
#else /* BLOATED_SPINLOCKS */
|
|
|
+static inline void ptlock_cache_init(void) {}
|
|
|
static inline bool ptlock_alloc(struct page *page)
|
|
|
{
|
|
|
return true;
|
|
@@ -1378,10 +1380,17 @@ static inline spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd)
|
|
|
{
|
|
|
return &mm->page_table_lock;
|
|
|
}
|
|
|
+static inline void ptlock_cache_init(void) {}
|
|
|
static inline bool ptlock_init(struct page *page) { return true; }
|
|
|
static inline void pte_lock_deinit(struct page *page) {}
|
|
|
#endif /* USE_SPLIT_PTE_PTLOCKS */
|
|
|
|
|
|
+static inline void pgtable_init(void)
|
|
|
+{
|
|
|
+ ptlock_cache_init();
|
|
|
+ pgtable_cache_init();
|
|
|
+}
|
|
|
+
|
|
|
static inline bool pgtable_page_ctor(struct page *page)
|
|
|
{
|
|
|
inc_zone_page_state(page, NR_PAGETABLE);
|