Update Linux kernel release to v7.2.8-2 for base and BORE kernels
Signed-off-by: Krzysztof Wilczyński <kwilczynski@omarchy.org>
This commit is contained in:
524 files changed
+147294
-88760
No files matched your search
@@ -278,25 +278,7 @@ diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
|
||||
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
|
||||
--- a/include/linux/memcontrol.h
|
||||
+++ b/include/linux/memcontrol.h
|
||||
@@ -270,10 +270,15 @@ struct mem_cgroup {
|
||||
#endif
|
||||
int kmemcg_id;
|
||||
|
||||
- struct memcg_vmstats_percpu __percpu *vmstats_percpu;
|
||||
-
|
||||
#ifdef CONFIG_CGROUP_WRITEBACK
|
||||
struct list_head cgwb_list;
|
||||
+#endif
|
||||
+
|
||||
+ /* Keep the hot per-CPU stats pointer away from memory event counters. */
|
||||
+ struct memcg_vmstats_percpu __percpu *vmstats_percpu
|
||||
+ ____cacheline_aligned_in_smp;
|
||||
+
|
||||
+#ifdef CONFIG_CGROUP_WRITEBACK
|
||||
struct wb_domain cgwb_domain;
|
||||
struct memcg_cgwb_frn cgwb_frn[MEMCG_CGWB_FRN_CNT];
|
||||
#endif
|
||||
@@ -947,6 +952,8 @@ unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item);
|
||||
@@ -952,6 +952,8 @@ unsigned long memcg_page_state_output(struct mem_cgroup *memcg, int item);
|
||||
bool memcg_stat_item_valid(int idx);
|
||||
bool memcg_vm_event_item_valid(enum vm_event_item idx);
|
||||
unsigned long lruvec_page_state(struct lruvec *lruvec, enum node_stat_item idx);
|
||||
@@ -305,7 +287,7 @@ diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
|
||||
unsigned long lruvec_page_state_local(struct lruvec *lruvec,
|
||||
enum node_stat_item idx);
|
||||
|
||||
@@ -1399,6 +1406,12 @@ static inline unsigned long lruvec_page_state(struct lruvec *lruvec,
|
||||
@@ -1404,6 +1406,12 @@ static inline unsigned long lruvec_page_state(struct lruvec *lruvec,
|
||||
return node_page_state(lruvec_pgdat(lruvec), idx);
|
||||
}
|
||||
|
||||
@@ -576,66 +558,6 @@ diff --git a/lib/maple_tree.c b/lib/maple_tree.c
|
||||
return wr_slot_store;
|
||||
|
||||
return wr_node_store;
|
||||
@@ -3793,35 +3825,40 @@ int mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp,
|
||||
void *entry, unsigned long range_lo, unsigned long range_hi,
|
||||
unsigned long *next, gfp_t gfp)
|
||||
{
|
||||
- unsigned long min = range_lo;
|
||||
- int ret = 0;
|
||||
+ int ret;
|
||||
+ unsigned long min;
|
||||
+
|
||||
+ min = range_lo;
|
||||
+ do {
|
||||
+ range_lo = max(min, *next);
|
||||
+ ret = mas_empty_area(mas, range_lo, range_hi, 1);
|
||||
+ if (ret < 0 && range_lo > min) {
|
||||
+ mas_reset(mas);
|
||||
+ ret = mas_empty_area(mas, min, range_hi, 1);
|
||||
+ if (ret == 0)
|
||||
+ ret = 1;
|
||||
+ }
|
||||
+ if (ret < 0)
|
||||
+ goto out;
|
||||
+
|
||||
+ mas_insert(mas, entry);
|
||||
+ } while (mas_nomem(mas, gfp));
|
||||
+
|
||||
+ if (mas_is_err(mas)) {
|
||||
+ ret = xa_err(mas->node);
|
||||
+ goto out;
|
||||
+ }
|
||||
|
||||
- range_lo = max(min, *next);
|
||||
- ret = mas_empty_area(mas, range_lo, range_hi, 1);
|
||||
if ((mas->tree->ma_flags & MT_FLAGS_ALLOC_WRAPPED) && ret == 0) {
|
||||
mas->tree->ma_flags &= ~MT_FLAGS_ALLOC_WRAPPED;
|
||||
ret = 1;
|
||||
}
|
||||
- if (ret < 0 && range_lo > min) {
|
||||
- mas_reset(mas);
|
||||
- ret = mas_empty_area(mas, min, range_hi, 1);
|
||||
- if (ret == 0)
|
||||
- ret = 1;
|
||||
- }
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
-
|
||||
- do {
|
||||
- mas_insert(mas, entry);
|
||||
- } while (mas_nomem(mas, gfp));
|
||||
- if (mas_is_err(mas))
|
||||
- return xa_err(mas->node);
|
||||
-
|
||||
*startp = mas->index;
|
||||
*next = *startp + 1;
|
||||
if (*next == 0)
|
||||
mas->tree->ma_flags |= MT_FLAGS_ALLOC_WRAPPED;
|
||||
|
||||
+out:
|
||||
mas_destroy(mas);
|
||||
return ret;
|
||||
}
|
||||
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
|
||||
--- a/mm/khugepaged.c
|
||||
+++ b/mm/khugepaged.c
|
||||
@@ -898,24 +820,7 @@ diff --git a/mm/swap.c b/mm/swap.c
|
||||
static void lru_activate(struct lruvec *lruvec, struct folio *folio)
|
||||
{
|
||||
long nr_pages = folio_nr_pages(folio);
|
||||
@@ -1153,7 +1086,16 @@ static void lruvec_reparent_lru(struct lruvec *child_lruvec,
|
||||
for_each_managed_zone_pgdat(zone, NODE_DATA(nid), zid, MAX_NR_ZONES - 1) {
|
||||
unsigned long size = mem_cgroup_get_zone_lru_size(child_lruvec, lru, zid);
|
||||
|
||||
+ if (!size)
|
||||
+ continue;
|
||||
+
|
||||
+ /*
|
||||
+ * The folios are accounted to the parent from now on, so the
|
||||
+ * size has to be moved, not just copied. Leaving it behind
|
||||
+ * makes the dying child describe folios it no longer owns.
|
||||
+ */
|
||||
mem_cgroup_update_lru_size(parent_lruvec, lru, zid, size);
|
||||
+ mem_cgroup_update_lru_size(child_lruvec, lru, zid, -(long)size);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1164,8 +1106,6 @@ void lru_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int
|
||||
@@ -1173,8 +1106,6 @@ void lru_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent, int
|
||||
|
||||
child_lruvec = mem_cgroup_lruvec(memcg, NODE_DATA(nid));
|
||||
parent_lruvec = mem_cgroup_lruvec(parent, NODE_DATA(nid));
|
||||
@@ -1129,20 +1034,7 @@ diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
pte_t *pte = pvmw->pte;
|
||||
unsigned long addr = pvmw->address;
|
||||
struct vm_area_struct *vma = pvmw->vma;
|
||||
@@ -4571,7 +4629,12 @@ void lru_gen_reparent_memcg(struct mem_cgroup *memcg, struct mem_cgroup *parent,
|
||||
for_each_managed_zone_pgdat(zone, NODE_DATA(nid), zid, MAX_NR_ZONES - 1) {
|
||||
unsigned long size = mem_cgroup_get_zone_lru_size(child_lruvec, lru, zid);
|
||||
|
||||
+ if (!size)
|
||||
+ continue;
|
||||
+
|
||||
+ /* Move the accounting, do not duplicate it. */
|
||||
mem_cgroup_update_lru_size(parent_lruvec, lru, zid, size);
|
||||
+ mem_cgroup_update_lru_size(child_lruvec, lru, zid, -(long)size);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4814,7 +4877,8 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
@@ -4819,7 +4877,8 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
struct reclaim_stat stat;
|
||||
struct lru_gen_mm_walk *walk;
|
||||
int scanned, reclaimed;
|
||||
@@ -1152,7 +1044,7 @@ diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
bool skip_retry = false;
|
||||
struct mem_cgroup *memcg = lruvec_memcg(lruvec);
|
||||
struct pglist_data *pgdat = lruvec_pgdat(lruvec);
|
||||
@@ -4826,6 +4890,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
@@ -4831,6 +4890,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
|
||||
scanned = isolate_folios(nr_to_scan, lruvec, sc, swappiness,
|
||||
&list, &isolated, &type, &type_scanned);
|
||||
@@ -1160,7 +1052,7 @@ diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
|
||||
/* Scanning may have emptied the oldest gen, flush it */
|
||||
if (scanned)
|
||||
@@ -4838,6 +4903,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
@@ -4843,6 +4903,7 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
retry:
|
||||
reclaimed = shrink_folio_list(&list, pgdat, sc, &stat, false, memcg);
|
||||
sc->nr_reclaimed += reclaimed;
|
||||
@@ -1168,7 +1060,7 @@ diff --git a/mm/vmscan.c b/mm/vmscan.c
|
||||
/* Retry pass is only meant for clean folios without new isolation */
|
||||
if (isolated)
|
||||
handle_reclaim_writeback(isolated, pgdat, sc, &stat);
|
||||
@@ -4887,6 +4953,10 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
@@ -4892,6 +4953,10 @@ static int evict_folios(unsigned long nr_to_scan, struct lruvec *lruvec,
|
||||
goto retry;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user