Merge tag 'mfd-next-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
[platform/kernel/linux-starfive.git] / include / linux / mmzone.h
index 9fb1b03..a4889c9 100644 (file)
 
 /* Free memory management - zoned buddy allocator.  */
 #ifndef CONFIG_ARCH_FORCE_MAX_ORDER
-#define MAX_ORDER 11
+#define MAX_ORDER 10
 #else
 #define MAX_ORDER CONFIG_ARCH_FORCE_MAX_ORDER
 #endif
-#define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))
+#define MAX_ORDER_NR_PAGES (1 << MAX_ORDER)
+
+#define IS_MAX_ORDER_ALIGNED(pfn) IS_ALIGNED(pfn, MAX_ORDER_NR_PAGES)
 
 /*
  * PAGE_ALLOC_COSTLY_ORDER is the order at which allocations are deemed
@@ -93,7 +95,7 @@ static inline bool migratetype_is_mergeable(int mt)
 }
 
 #define for_each_migratetype_order(order, type) \
-       for (order = 0; order < MAX_ORDER; order++) \
+       for (order = 0; order <= MAX_ORDER; order++) \
                for (type = 0; type < MIGRATE_TYPES; type++)
 
 extern int page_group_by_mobility_disabled;
@@ -108,18 +110,6 @@ struct free_area {
        unsigned long           nr_free;
 };
 
-static inline struct page *get_page_from_free_area(struct free_area *area,
-                                           int migratetype)
-{
-       return list_first_entry_or_null(&area->free_list[migratetype],
-                                       struct page, lru);
-}
-
-static inline bool free_area_empty(struct free_area *area, int migratetype)
-{
-       return list_empty(&area->free_list[migratetype]);
-}
-
 struct pglist_data;
 
 #ifdef CONFIG_NUMA
@@ -453,18 +443,14 @@ enum {
 struct lru_gen_mm_state {
        /* set to max_seq after each iteration */
        unsigned long seq;
-       /* where the current iteration continues (inclusive) */
+       /* where the current iteration continues after */
        struct list_head *head;
-       /* where the last iteration ended (exclusive) */
+       /* where the last iteration ended before */
        struct list_head *tail;
-       /* to wait for the last page table walker to finish */
-       struct wait_queue_head wait;
        /* Bloom filters flip after each iteration */
        unsigned long *filters[NR_BLOOM_FILTERS];
        /* the mm stats for debugging */
        unsigned long stats[NR_HIST_GENS][NR_MM_STATS];
-       /* the number of concurrent page table walkers */
-       int nr_walkers;
 };
 
 struct lru_gen_mm_walk {
@@ -922,7 +908,7 @@ struct zone {
        CACHELINE_PADDING(_pad1_);
 
        /* free areas of different sizes */
-       struct free_area        free_area[MAX_ORDER];
+       struct free_area        free_area[MAX_ORDER + 1];
 
        /* zone flags, see below */
        unsigned long           flags;
@@ -1369,7 +1355,7 @@ typedef struct pglist_data {
 
 #ifdef CONFIG_LRU_GEN
        /* kswap mm walk data */
-       struct lru_gen_mm_walk  mm_walk;
+       struct lru_gen_mm_walk mm_walk;
        /* lru_gen_folio list */
        struct lru_gen_memcg memcg_lru;
 #endif
@@ -1745,7 +1731,7 @@ static inline bool movable_only_nodes(nodemask_t *nodes)
 #define SECTION_BLOCKFLAGS_BITS \
        ((1UL << (PFN_SECTION_SHIFT - pageblock_order)) * NR_PAGEBLOCK_BITS)
 
-#if (MAX_ORDER - 1 + PAGE_SHIFT) > SECTION_SIZE_BITS
+#if (MAX_ORDER + PAGE_SHIFT) > SECTION_SIZE_BITS
 #error Allocator MAX_ORDER exceeds SECTION_SIZE
 #endif