Merge 5.5-rc1 into android-mainline
Linux 5.5-rc1 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I6f952ebdd40746115165a2f99bab340482f5c237
This commit is contained in:
@@ -276,12 +276,12 @@ enum lru_list {
|
||||
|
||||
#define for_each_evictable_lru(lru) for (lru = 0; lru <= LRU_ACTIVE_FILE; lru++)
|
||||
|
||||
static inline int is_file_lru(enum lru_list lru)
|
||||
static inline bool is_file_lru(enum lru_list lru)
|
||||
{
|
||||
return (lru == LRU_INACTIVE_FILE || lru == LRU_ACTIVE_FILE);
|
||||
}
|
||||
|
||||
static inline int is_active_lru(enum lru_list lru)
|
||||
static inline bool is_active_lru(enum lru_list lru)
|
||||
{
|
||||
return (lru == LRU_ACTIVE_ANON || lru == LRU_ACTIVE_FILE);
|
||||
}
|
||||
@@ -299,6 +299,12 @@ struct zone_reclaim_stat {
|
||||
unsigned long recent_scanned[2];
|
||||
};
|
||||
|
||||
enum lruvec_flags {
|
||||
LRUVEC_CONGESTED, /* lruvec has many dirty pages
|
||||
* backed by a congested BDI
|
||||
*/
|
||||
};
|
||||
|
||||
struct lruvec {
|
||||
struct list_head lists[NR_LRU_LISTS];
|
||||
struct zone_reclaim_stat reclaim_stat;
|
||||
@@ -306,12 +312,14 @@ struct lruvec {
|
||||
atomic_long_t inactive_age;
|
||||
/* Refaults at the time of last reclaim cycle */
|
||||
unsigned long refaults;
|
||||
/* Various lruvec state flags (enum lruvec_flags) */
|
||||
unsigned long flags;
|
||||
#ifdef CONFIG_MEMCG
|
||||
struct pglist_data *pgdat;
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Isolate unmapped file */
|
||||
/* Isolate unmapped pages */
|
||||
#define ISOLATE_UNMAPPED ((__force isolate_mode_t)0x2)
|
||||
/* Isolate for asynchronous migration */
|
||||
#define ISOLATE_ASYNC_MIGRATE ((__force isolate_mode_t)0x4)
|
||||
@@ -362,33 +370,40 @@ struct per_cpu_nodestat {
|
||||
#endif /* !__GENERATING_BOUNDS.H */
|
||||
|
||||
enum zone_type {
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
/*
|
||||
* ZONE_DMA is used when there are devices that are not able
|
||||
* to do DMA to all of addressable memory (ZONE_NORMAL). Then we
|
||||
* carve out the portion of memory that is needed for these devices.
|
||||
* The range is arch specific.
|
||||
* ZONE_DMA and ZONE_DMA32 are used when there are peripherals not able
|
||||
* to DMA to all of the addressable memory (ZONE_NORMAL).
|
||||
* On architectures where this area covers the whole 32 bit address
|
||||
* space ZONE_DMA32 is used. ZONE_DMA is left for the ones with smaller
|
||||
* DMA addressing constraints. This distinction is important as a 32bit
|
||||
* DMA mask is assumed when ZONE_DMA32 is defined. Some 64-bit
|
||||
* platforms may need both zones as they support peripherals with
|
||||
* different DMA addressing limitations.
|
||||
*
|
||||
* Some examples
|
||||
* Some examples:
|
||||
*
|
||||
* Architecture Limit
|
||||
* ---------------------------
|
||||
* parisc, ia64, sparc <4G
|
||||
* s390, powerpc <2G
|
||||
* arm Various
|
||||
* alpha Unlimited or 0-16MB.
|
||||
* - i386 and x86_64 have a fixed 16M ZONE_DMA and ZONE_DMA32 for the
|
||||
* rest of the lower 4G.
|
||||
*
|
||||
* i386, x86_64 and multiple other arches
|
||||
* <16M.
|
||||
* - arm only uses ZONE_DMA, the size, up to 4G, may vary depending on
|
||||
* the specific device.
|
||||
*
|
||||
* - arm64 has a fixed 1G ZONE_DMA and ZONE_DMA32 for the rest of the
|
||||
* lower 4G.
|
||||
*
|
||||
* - powerpc only uses ZONE_DMA, the size, up to 2G, may vary
|
||||
* depending on the specific device.
|
||||
*
|
||||
* - s390 uses ZONE_DMA fixed to the lower 2G.
|
||||
*
|
||||
* - ia64 and riscv only use ZONE_DMA32.
|
||||
*
|
||||
* - parisc uses neither.
|
||||
*/
|
||||
#ifdef CONFIG_ZONE_DMA
|
||||
ZONE_DMA,
|
||||
#endif
|
||||
#ifdef CONFIG_ZONE_DMA32
|
||||
/*
|
||||
* x86_64 needs two ZONE_DMAs because it supports devices that are
|
||||
* only able to do DMA to the lower 16M but also 32 bit devices that
|
||||
* can only do DMA areas below 4G.
|
||||
*/
|
||||
ZONE_DMA32,
|
||||
#endif
|
||||
/*
|
||||
@@ -568,9 +583,6 @@ struct zone {
|
||||
} ____cacheline_internodealigned_in_smp;
|
||||
|
||||
enum pgdat_flags {
|
||||
PGDAT_CONGESTED, /* pgdat has many dirty pages backed by
|
||||
* a congested BDI
|
||||
*/
|
||||
PGDAT_DIRTY, /* reclaim scanning has recently found
|
||||
* many dirty file pages at the tail
|
||||
* of the LRU.
|
||||
@@ -773,7 +785,13 @@ typedef struct pglist_data {
|
||||
#endif
|
||||
|
||||
/* Fields commonly accessed by the page reclaim scanner */
|
||||
struct lruvec lruvec;
|
||||
|
||||
/*
|
||||
* NOTE: THIS IS UNUSED IF MEMCG IS ENABLED.
|
||||
*
|
||||
* Use mem_cgroup_lruvec() to look up lruvecs.
|
||||
*/
|
||||
struct lruvec __lruvec;
|
||||
|
||||
unsigned long flags;
|
||||
|
||||
@@ -796,11 +814,6 @@ typedef struct pglist_data {
|
||||
#define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn)
|
||||
#define node_end_pfn(nid) pgdat_end_pfn(NODE_DATA(nid))
|
||||
|
||||
static inline struct lruvec *node_lruvec(struct pglist_data *pgdat)
|
||||
{
|
||||
return &pgdat->lruvec;
|
||||
}
|
||||
|
||||
static inline unsigned long pgdat_end_pfn(pg_data_t *pgdat)
|
||||
{
|
||||
return pgdat->node_start_pfn + pgdat->node_spanned_pages;
|
||||
@@ -838,7 +851,7 @@ static inline struct pglist_data *lruvec_pgdat(struct lruvec *lruvec)
|
||||
#ifdef CONFIG_MEMCG
|
||||
return lruvec->pgdat;
|
||||
#else
|
||||
return container_of(lruvec, struct pglist_data, lruvec);
|
||||
return container_of(lruvec, struct pglist_data, __lruvec);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1075,7 +1088,7 @@ static inline struct zoneref *first_zones_zonelist(struct zonelist *zonelist,
|
||||
/**
|
||||
* for_each_zone_zonelist_nodemask - helper macro to iterate over valid zones in a zonelist at or below a given zone index and within a nodemask
|
||||
* @zone - The current zone in the iterator
|
||||
* @z - The current pointer within zonelist->zones being iterated
|
||||
* @z - The current pointer within zonelist->_zonerefs being iterated
|
||||
* @zlist - The zonelist being iterated
|
||||
* @highidx - The zone index of the highest zone to return
|
||||
* @nodemask - Nodemask allowed by the allocator
|
||||
|
Reference in New Issue
Block a user