diff --git a/include/kernel-6.0 b/include/kernel-6.0 index bcbf9c4fb..bd736d508 100644 --- a/include/kernel-6.0 +++ b/include/kernel-6.0 @@ -1,2 +1,2 @@ -LINUX_VERSION-6.0 = .10 -LINUX_KERNEL_HASH-6.0.10 = 39e57fcd84cd70bfa3e1a4185d3aa0ed7f1432f24c6548d16326b0c3c9541dd0 +LINUX_VERSION-6.0 = .11 +LINUX_KERNEL_HASH-6.0.11 = 2bae6131e64971e1e34ff395fa542971134c857bdb0b29069ab847c7c9a9c762 diff --git a/target/linux/generic/backport-6.0/102-mm-vmscan.c-refactor-shrink_node.patch b/target/linux/generic/backport-6.0/102-mm-vmscan.c-refactor-shrink_node.patch index f7c39744b..a0c50db45 100644 --- a/target/linux/generic/backport-6.0/102-mm-vmscan.c-refactor-shrink_node.patch +++ b/target/linux/generic/backport-6.0/102-mm-vmscan.c-refactor-shrink_node.patch @@ -31,7 +31,7 @@ Change-Id: Iae734b5b4030205b7db6e8c841f747b6f6ae1a04 --- a/mm/vmscan.c +++ b/mm/vmscan.c -@@ -2728,6 +2728,109 @@ enum scan_balance { +@@ -2740,6 +2740,109 @@ enum scan_balance { SCAN_FILE, }; @@ -141,7 +141,7 @@ Change-Id: Iae734b5b4030205b7db6e8c841f747b6f6ae1a04 /* * Determine how aggressively the anon and file LRU lists should be * scanned. -@@ -3197,109 +3300,16 @@ static void shrink_node(pg_data_t *pgdat +@@ -3207,109 +3310,16 @@ static void shrink_node(pg_data_t *pgdat unsigned long nr_reclaimed, nr_scanned; struct lruvec *target_lruvec; bool reclaimable = false; diff --git a/target/linux/generic/backport-6.0/104-mm-multi-gen-LRU-groundwork.patch b/target/linux/generic/backport-6.0/104-mm-multi-gen-LRU-groundwork.patch index 4750bdd99..5dea71691 100644 --- a/target/linux/generic/backport-6.0/104-mm-multi-gen-LRU-groundwork.patch +++ b/target/linux/generic/backport-6.0/104-mm-multi-gen-LRU-groundwork.patch @@ -693,7 +693,7 @@ Change-Id: I71de7cd15b8dfa6f9fdd838023474693c4fee0a7 folio_get(folio); --- a/mm/vmscan.c +++ b/mm/vmscan.c -@@ -3050,6 +3050,81 @@ static bool can_age_anon_pages(struct pg +@@ -3062,6 +3062,81 @@ static bool can_age_anon_pages(struct pg return can_demote(pgdat->node_id, sc); } diff --git a/target/linux/generic/backport-6.0/105-mm-multi-gen-LRU-minimal-implementation.patch b/target/linux/generic/backport-6.0/105-mm-multi-gen-LRU-minimal-implementation.patch index 0952c9704..e6f0ab432 100644 --- a/target/linux/generic/backport-6.0/105-mm-multi-gen-LRU-minimal-implementation.patch +++ b/target/linux/generic/backport-6.0/105-mm-multi-gen-LRU-minimal-implementation.patch @@ -426,7 +426,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 __delete_from_swap_cache(folio, swap, shadow); xa_unlock_irq(&mapping->i_pages); put_swap_page(&folio->page, swap); -@@ -2733,6 +2735,9 @@ static void prepare_scan_count(pg_data_t +@@ -2745,6 +2747,9 @@ static void prepare_scan_count(pg_data_t unsigned long file; struct lruvec *target_lruvec; @@ -436,7 +436,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 target_lruvec = mem_cgroup_lruvec(sc->target_mem_cgroup, pgdat); /* -@@ -3056,6 +3061,17 @@ static bool can_age_anon_pages(struct pg +@@ -3068,6 +3073,17 @@ static bool can_age_anon_pages(struct pg * shorthand helpers ******************************************************************************/ @@ -454,7 +454,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 #define for_each_gen_type_zone(gen, type, zone) \ for ((gen) = 0; (gen) < MAX_NR_GENS; (gen)++) \ for ((type) = 0; (type) < ANON_AND_FILE; (type)++) \ -@@ -3081,6 +3097,745 @@ static struct lruvec __maybe_unused *get +@@ -3093,6 +3109,745 @@ static struct lruvec __maybe_unused *get return pgdat ? &pgdat->__lruvec : NULL; } @@ -1200,7 +1200,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 /****************************************************************************** * initialization ******************************************************************************/ -@@ -3123,6 +3878,16 @@ static int __init init_lru_gen(void) +@@ -3135,6 +3890,16 @@ static int __init init_lru_gen(void) }; late_initcall(init_lru_gen); @@ -1217,9 +1217,9 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 #endif /* CONFIG_LRU_GEN */ static void shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc) -@@ -3136,6 +3901,11 @@ static void shrink_lruvec(struct lruvec +@@ -3148,6 +3913,11 @@ static void shrink_lruvec(struct lruvec + bool proportional_reclaim; struct blk_plug plug; - bool scan_adjusted; + if (lru_gen_enabled()) { + lru_gen_shrink_lruvec(lruvec, sc); @@ -1229,7 +1229,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 get_scan_count(lruvec, sc, nr); /* Record the original scan target for proportional adjustments later */ -@@ -3642,6 +4412,9 @@ static void snapshot_refaults(struct mem +@@ -3652,6 +4422,9 @@ static void snapshot_refaults(struct mem struct lruvec *target_lruvec; unsigned long refaults; @@ -1239,7 +1239,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 target_lruvec = mem_cgroup_lruvec(target_memcg, pgdat); refaults = lruvec_page_state(target_lruvec, WORKINGSET_ACTIVATE_ANON); target_lruvec->refaults[0] = refaults; -@@ -4008,12 +4781,16 @@ unsigned long try_to_free_mem_cgroup_pag +@@ -4018,12 +4791,16 @@ unsigned long try_to_free_mem_cgroup_pag } #endif @@ -1258,7 +1258,7 @@ Change-Id: Id47465f46f1f77f1e9f0be3972e380ddcfa37cc0 if (!can_age_anon_pages(pgdat, sc)) return; -@@ -4333,12 +5110,11 @@ restart: +@@ -4343,12 +5120,11 @@ restart: sc.may_swap = !nr_boost_reclaim; /* diff --git a/target/linux/generic/backport-6.0/106-mm-multi-gen-LRU-exploit-locality-in-rmap.patch b/target/linux/generic/backport-6.0/106-mm-multi-gen-LRU-exploit-locality-in-rmap.patch index 729db5afa..6043049a3 100644 --- a/target/linux/generic/backport-6.0/106-mm-multi-gen-LRU-exploit-locality-in-rmap.patch +++ b/target/linux/generic/backport-6.0/106-mm-multi-gen-LRU-exploit-locality-in-rmap.patch @@ -260,7 +260,7 @@ Change-Id: I4b9ca0fd20f566ce554e703f14cee3fe0048c2fd /* * The number of dirty pages determines if a node is marked * reclaim_congested. kswapd will stall and start writing -@@ -3219,6 +3224,29 @@ static bool positive_ctrl_err(struct ctr +@@ -3231,6 +3236,29 @@ static bool positive_ctrl_err(struct ctr * the aging ******************************************************************************/ @@ -290,7 +290,7 @@ Change-Id: I4b9ca0fd20f566ce554e703f14cee3fe0048c2fd /* protect pages accessed multiple times through file descriptors */ static int folio_inc_gen(struct lruvec *lruvec, struct folio *folio, bool reclaiming) { -@@ -3230,6 +3258,11 @@ static int folio_inc_gen(struct lruvec * +@@ -3242,6 +3270,11 @@ static int folio_inc_gen(struct lruvec * VM_WARN_ON_ONCE_FOLIO(!(old_flags & LRU_GEN_MASK), folio); do { @@ -302,7 +302,7 @@ Change-Id: I4b9ca0fd20f566ce554e703f14cee3fe0048c2fd new_gen = (old_gen + 1) % MAX_NR_GENS; new_flags = old_flags & ~(LRU_GEN_MASK | LRU_REFS_MASK | LRU_REFS_FLAGS); -@@ -3244,6 +3277,43 @@ static int folio_inc_gen(struct lruvec * +@@ -3256,6 +3289,43 @@ static int folio_inc_gen(struct lruvec * return new_gen; } @@ -346,7 +346,7 @@ Change-Id: I4b9ca0fd20f566ce554e703f14cee3fe0048c2fd static void inc_min_seq(struct lruvec *lruvec, int type) { struct lru_gen_struct *lrugen = &lruvec->lrugen; -@@ -3443,6 +3513,114 @@ static void lru_gen_age_node(struct pgli +@@ -3455,6 +3525,114 @@ static void lru_gen_age_node(struct pgli } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL))); } @@ -461,7 +461,7 @@ Change-Id: I4b9ca0fd20f566ce554e703f14cee3fe0048c2fd /****************************************************************************** * the eviction ******************************************************************************/ -@@ -3479,6 +3657,12 @@ static bool sort_folio(struct lruvec *lr +@@ -3491,6 +3669,12 @@ static bool sort_folio(struct lruvec *lr return true; } diff --git a/target/linux/generic/backport-6.0/107-mm-multi-gen-LRU-support-page-table-walks.patch b/target/linux/generic/backport-6.0/107-mm-multi-gen-LRU-support-page-table-walks.patch index de8109ca5..441977581 100644 --- a/target/linux/generic/backport-6.0/107-mm-multi-gen-LRU-support-page-table-walks.patch +++ b/target/linux/generic/backport-6.0/107-mm-multi-gen-LRU-support-page-table-walks.patch @@ -451,7 +451,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af #include #include -@@ -3082,7 +3084,7 @@ static bool can_age_anon_pages(struct pg +@@ -3094,7 +3096,7 @@ static bool can_age_anon_pages(struct pg for ((type) = 0; (type) < ANON_AND_FILE; (type)++) \ for ((zone) = 0; (zone) < MAX_NR_ZONES; (zone)++) @@ -460,7 +460,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af { struct pglist_data *pgdat = NODE_DATA(nid); -@@ -3128,6 +3130,371 @@ static bool __maybe_unused seq_is_valid( +@@ -3140,6 +3142,371 @@ static bool __maybe_unused seq_is_valid( } /****************************************************************************** @@ -832,7 +832,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af * refault feedback loop ******************************************************************************/ -@@ -3277,6 +3644,118 @@ static int folio_inc_gen(struct lruvec * +@@ -3289,6 +3656,118 @@ static int folio_inc_gen(struct lruvec * return new_gen; } @@ -951,7 +951,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned long addr) { unsigned long pfn = pte_pfn(pte); -@@ -3295,8 +3774,28 @@ static unsigned long get_pte_pfn(pte_t p +@@ -3307,8 +3786,28 @@ static unsigned long get_pte_pfn(pte_t p return pfn; } @@ -981,7 +981,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af { struct folio *folio; -@@ -3311,9 +3810,375 @@ static struct folio *get_pfn_folio(unsig +@@ -3323,9 +3822,375 @@ static struct folio *get_pfn_folio(unsig if (folio_memcg_rcu(folio) != memcg) return NULL; @@ -1357,7 +1357,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af static void inc_min_seq(struct lruvec *lruvec, int type) { struct lru_gen_struct *lrugen = &lruvec->lrugen; -@@ -3365,7 +4230,7 @@ next: +@@ -3377,7 +4242,7 @@ next: return success; } @@ -1366,7 +1366,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af { int prev, next; int type, zone; -@@ -3375,9 +4240,6 @@ static void inc_max_seq(struct lruvec *l +@@ -3387,9 +4252,6 @@ static void inc_max_seq(struct lruvec *l VM_WARN_ON_ONCE(!seq_is_valid(lruvec)); @@ -1376,7 +1376,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af for (type = ANON_AND_FILE - 1; type >= 0; type--) { if (get_nr_gens(lruvec, type) != MAX_NR_GENS) continue; -@@ -3415,10 +4277,74 @@ static void inc_max_seq(struct lruvec *l +@@ -3427,10 +4289,74 @@ static void inc_max_seq(struct lruvec *l /* make sure preceding modifications appear */ smp_store_release(&lrugen->max_seq, lrugen->max_seq + 1); @@ -1452,7 +1452,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af static bool should_run_aging(struct lruvec *lruvec, unsigned long max_seq, unsigned long *min_seq, struct scan_control *sc, bool can_swap, unsigned long *nr_to_scan) { -@@ -3494,7 +4420,7 @@ static void age_lruvec(struct lruvec *lr +@@ -3506,7 +4432,7 @@ static void age_lruvec(struct lruvec *lr need_aging = should_run_aging(lruvec, max_seq, min_seq, sc, swappiness, &nr_to_scan); if (need_aging) @@ -1461,7 +1461,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af } static void lru_gen_age_node(struct pglist_data *pgdat, struct scan_control *sc) -@@ -3503,6 +4429,8 @@ static void lru_gen_age_node(struct pgli +@@ -3515,6 +4441,8 @@ static void lru_gen_age_node(struct pgli VM_WARN_ON_ONCE(!current_is_kswapd()); @@ -1470,7 +1470,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af memcg = mem_cgroup_iter(NULL, NULL, NULL); do { struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat); -@@ -3511,11 +4439,16 @@ static void lru_gen_age_node(struct pgli +@@ -3523,11 +4451,16 @@ static void lru_gen_age_node(struct pgli cond_resched(); } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL))); @@ -1488,7 +1488,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af */ void lru_gen_look_around(struct page_vma_mapped_walk *pvmw) { -@@ -3524,6 +4457,8 @@ void lru_gen_look_around(struct page_vma +@@ -3536,6 +4469,8 @@ void lru_gen_look_around(struct page_vma unsigned long start; unsigned long end; unsigned long addr; @@ -1497,7 +1497,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af unsigned long bitmap[BITS_TO_LONGS(MIN_LRU_BATCH)] = {}; struct folio *folio = pfn_folio(pvmw->pfn); struct mem_cgroup *memcg = folio_memcg(folio); -@@ -3538,6 +4473,9 @@ void lru_gen_look_around(struct page_vma +@@ -3550,6 +4485,9 @@ void lru_gen_look_around(struct page_vma if (spin_is_contended(pvmw->ptl)) return; @@ -1507,7 +1507,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af start = max(pvmw->address & PMD_MASK, pvmw->vma->vm_start); end = min(pvmw->address | ~PMD_MASK, pvmw->vma->vm_end - 1) + 1; -@@ -3567,13 +4505,15 @@ void lru_gen_look_around(struct page_vma +@@ -3579,13 +4517,15 @@ void lru_gen_look_around(struct page_vma if (!pte_young(pte[i])) continue; @@ -1524,7 +1524,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af if (pte_dirty(pte[i]) && !folio_test_dirty(folio) && !(folio_test_anon(folio) && folio_test_swapbacked(folio) && !folio_test_swapcache(folio))) -@@ -3589,7 +4529,11 @@ void lru_gen_look_around(struct page_vma +@@ -3601,7 +4541,11 @@ void lru_gen_look_around(struct page_vma arch_leave_lazy_mmu_mode(); rcu_read_unlock(); @@ -1537,7 +1537,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af for_each_set_bit(i, bitmap, MIN_LRU_BATCH) { folio = pfn_folio(pte_pfn(pte[i])); folio_activate(folio); -@@ -3601,8 +4545,10 @@ void lru_gen_look_around(struct page_vma +@@ -3613,8 +4557,10 @@ void lru_gen_look_around(struct page_vma if (!mem_cgroup_trylock_pages(memcg)) return; @@ -1550,7 +1550,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af for_each_set_bit(i, bitmap, MIN_LRU_BATCH) { folio = pfn_folio(pte_pfn(pte[i])); -@@ -3613,10 +4559,14 @@ void lru_gen_look_around(struct page_vma +@@ -3625,10 +4571,14 @@ void lru_gen_look_around(struct page_vma if (old_gen < 0 || old_gen == new_gen) continue; @@ -1567,7 +1567,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af mem_cgroup_unlock_pages(); } -@@ -3899,6 +4849,7 @@ static int evict_folios(struct lruvec *l +@@ -3911,6 +4861,7 @@ static int evict_folios(struct lruvec *l struct folio *folio; enum vm_event_item item; struct reclaim_stat stat; @@ -1575,7 +1575,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af struct mem_cgroup *memcg = lruvec_memcg(lruvec); struct pglist_data *pgdat = lruvec_pgdat(lruvec); -@@ -3935,6 +4886,10 @@ static int evict_folios(struct lruvec *l +@@ -3947,6 +4898,10 @@ static int evict_folios(struct lruvec *l move_pages_to_lru(lruvec, &list); @@ -1586,7 +1586,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af item = current_is_kswapd() ? PGSTEAL_KSWAPD : PGSTEAL_DIRECT; if (!cgroup_reclaim(sc)) __count_vm_events(item, reclaimed); -@@ -3951,6 +4906,11 @@ static int evict_folios(struct lruvec *l +@@ -3963,6 +4918,11 @@ static int evict_folios(struct lruvec *l return scanned; } @@ -1598,7 +1598,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af static unsigned long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, bool can_swap) { -@@ -3976,7 +4936,8 @@ static unsigned long get_nr_to_scan(stru +@@ -3988,7 +4948,8 @@ static unsigned long get_nr_to_scan(stru if (current_is_kswapd()) return 0; @@ -1608,7 +1608,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af done: return min_seq[!can_swap] + MIN_NR_GENS <= max_seq ? nr_to_scan : 0; } -@@ -3990,6 +4951,8 @@ static void lru_gen_shrink_lruvec(struct +@@ -4002,6 +4963,8 @@ static void lru_gen_shrink_lruvec(struct blk_start_plug(&plug); @@ -1617,7 +1617,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af while (true) { int delta; int swappiness; -@@ -4017,6 +4980,8 @@ static void lru_gen_shrink_lruvec(struct +@@ -4029,6 +4992,8 @@ static void lru_gen_shrink_lruvec(struct cond_resched(); } @@ -1626,7 +1626,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af blk_finish_plug(&plug); } -@@ -4033,15 +4998,21 @@ void lru_gen_init_lruvec(struct lruvec * +@@ -4045,15 +5010,21 @@ void lru_gen_init_lruvec(struct lruvec * for_each_gen_type_zone(gen, type, zone) INIT_LIST_HEAD(&lrugen->lists[gen][type][zone]); @@ -1648,7 +1648,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af int nid; for_each_node(nid) { -@@ -4049,6 +5020,11 @@ void lru_gen_exit_memcg(struct mem_cgrou +@@ -4061,6 +5032,11 @@ void lru_gen_exit_memcg(struct mem_cgrou VM_WARN_ON_ONCE(memchr_inv(lruvec->lrugen.nr_pages, 0, sizeof(lruvec->lrugen.nr_pages))); diff --git a/target/linux/generic/backport-6.0/108-mm-multi-gen-LRU-optimize-multiple-memcgs.patch b/target/linux/generic/backport-6.0/108-mm-multi-gen-LRU-optimize-multiple-memcgs.patch index 5430cc66e..d6fa84492 100644 --- a/target/linux/generic/backport-6.0/108-mm-multi-gen-LRU-optimize-multiple-memcgs.patch +++ b/target/linux/generic/backport-6.0/108-mm-multi-gen-LRU-optimize-multiple-memcgs.patch @@ -125,7 +125,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 /* Allocation order */ s8 order; -@@ -4429,6 +4435,19 @@ static void lru_gen_age_node(struct pgli +@@ -4441,6 +4447,19 @@ static void lru_gen_age_node(struct pgli VM_WARN_ON_ONCE(!current_is_kswapd()); @@ -145,7 +145,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 set_mm_walk(pgdat); memcg = mem_cgroup_iter(NULL, NULL, NULL); -@@ -4840,7 +4859,8 @@ static int isolate_folios(struct lruvec +@@ -4852,7 +4871,8 @@ static int isolate_folios(struct lruvec return scanned; } @@ -155,7 +155,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 { int type; int scanned; -@@ -4903,6 +4923,9 @@ static int evict_folios(struct lruvec *l +@@ -4915,6 +4935,9 @@ static int evict_folios(struct lruvec *l sc->nr_reclaimed += reclaimed; @@ -165,7 +165,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 return scanned; } -@@ -4912,9 +4935,8 @@ static int evict_folios(struct lruvec *l +@@ -4924,9 +4947,8 @@ static int evict_folios(struct lruvec *l * reclaim. */ static unsigned long get_nr_to_scan(struct lruvec *lruvec, struct scan_control *sc, @@ -176,7 +176,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 unsigned long nr_to_scan; struct mem_cgroup *memcg = lruvec_memcg(lruvec); DEFINE_MAX_SEQ(lruvec); -@@ -4924,8 +4946,8 @@ static unsigned long get_nr_to_scan(stru +@@ -4936,8 +4958,8 @@ static unsigned long get_nr_to_scan(stru (mem_cgroup_below_low(memcg) && !sc->memcg_low_reclaim)) return 0; @@ -187,7 +187,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 return nr_to_scan; /* skip the aging path at the default priority */ -@@ -4942,10 +4964,67 @@ done: +@@ -4954,10 +4976,67 @@ done: return min_seq[!can_swap] + MIN_NR_GENS <= max_seq ? nr_to_scan : 0; } @@ -255,7 +255,7 @@ Change-Id: I7e00e0c733437e534ac98031cf8154a681becc00 lru_add_drain(); -@@ -4965,21 +5044,28 @@ static void lru_gen_shrink_lruvec(struct +@@ -4977,21 +5056,28 @@ static void lru_gen_shrink_lruvec(struct else swappiness = 0; diff --git a/target/linux/generic/backport-6.0/109-mm-multi-gen-LRU-kill-switch.patch b/target/linux/generic/backport-6.0/109-mm-multi-gen-LRU-kill-switch.patch index 384365a33..eedb9cefb 100644 --- a/target/linux/generic/backport-6.0/109-mm-multi-gen-LRU-kill-switch.patch +++ b/target/linux/generic/backport-6.0/109-mm-multi-gen-LRU-kill-switch.patch @@ -196,7 +196,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 #include #include -@@ -3070,6 +3071,14 @@ static bool can_age_anon_pages(struct pg +@@ -3082,6 +3083,14 @@ static bool can_age_anon_pages(struct pg #ifdef CONFIG_LRU_GEN @@ -211,7 +211,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 /****************************************************************************** * shorthand helpers ******************************************************************************/ -@@ -3946,7 +3955,8 @@ static void walk_pmd_range_locked(pud_t +@@ -3958,7 +3967,8 @@ static void walk_pmd_range_locked(pud_t goto next; if (!pmd_trans_huge(pmd[i])) { @@ -221,7 +221,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 pmdp_test_and_clear_young(vma, addr, pmd + i); goto next; } -@@ -4044,10 +4054,12 @@ restart: +@@ -4056,10 +4066,12 @@ restart: walk->mm_stats[MM_NONLEAF_TOTAL]++; #ifdef CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG @@ -237,7 +237,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 #endif if (!walk->force_scan && !test_bloom_filter(walk->lruvec, walk->max_seq, pmd + i)) continue; -@@ -4309,7 +4321,7 @@ static bool try_to_inc_max_seq(struct lr +@@ -4321,7 +4333,7 @@ static bool try_to_inc_max_seq(struct lr * handful of PTEs. Spreading the work out over a period of time usually * is less efficient, but it avoids bursty page faults. */ @@ -246,7 +246,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 success = iterate_mm_list_nowalk(lruvec, max_seq); goto done; } -@@ -5072,6 +5084,208 @@ done: +@@ -5084,6 +5096,208 @@ done: } /****************************************************************************** @@ -455,7 +455,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 * initialization ******************************************************************************/ -@@ -5081,6 +5295,7 @@ void lru_gen_init_lruvec(struct lruvec * +@@ -5093,6 +5307,7 @@ void lru_gen_init_lruvec(struct lruvec * struct lru_gen_struct *lrugen = &lruvec->lrugen; lrugen->max_seq = MIN_NR_GENS + 1; @@ -463,7 +463,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515 for_each_gen_type_zone(gen, type, zone) INIT_LIST_HEAD(&lrugen->lists[gen][type][zone]); -@@ -5120,6 +5335,9 @@ static int __init init_lru_gen(void) +@@ -5132,6 +5347,9 @@ static int __init init_lru_gen(void) BUILD_BUG_ON(MIN_NR_GENS + 1 >= MAX_NR_GENS); BUILD_BUG_ON(BIT(LRU_GEN_WIDTH) <= MAX_NR_GENS); diff --git a/target/linux/generic/backport-6.0/110-mm-multi-gen-LRU-thrashing-prevention.patch b/target/linux/generic/backport-6.0/110-mm-multi-gen-LRU-thrashing-prevention.patch index 58492dcff..8793d089b 100644 --- a/target/linux/generic/backport-6.0/110-mm-multi-gen-LRU-thrashing-prevention.patch +++ b/target/linux/generic/backport-6.0/110-mm-multi-gen-LRU-thrashing-prevention.patch @@ -57,7 +57,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e /* the multi-gen LRU sizes, eventually consistent */ --- a/mm/vmscan.c +++ b/mm/vmscan.c -@@ -4293,6 +4293,7 @@ static void inc_max_seq(struct lruvec *l +@@ -4305,6 +4305,7 @@ static void inc_max_seq(struct lruvec *l for (type = 0; type < ANON_AND_FILE; type++) reset_ctrl_pos(lruvec, type, false); @@ -65,7 +65,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e /* make sure preceding modifications appear */ smp_store_release(&lrugen->max_seq, lrugen->max_seq + 1); -@@ -4420,7 +4421,7 @@ static bool should_run_aging(struct lruv +@@ -4432,7 +4433,7 @@ static bool should_run_aging(struct lruv return false; } @@ -74,7 +74,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e { bool need_aging; unsigned long nr_to_scan; -@@ -4434,16 +4435,36 @@ static void age_lruvec(struct lruvec *lr +@@ -4446,16 +4447,36 @@ static void age_lruvec(struct lruvec *lr mem_cgroup_calculate_protection(NULL, memcg); if (mem_cgroup_below_min(memcg)) @@ -112,7 +112,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e VM_WARN_ON_ONCE(!current_is_kswapd()); -@@ -4466,12 +4487,32 @@ static void lru_gen_age_node(struct pgli +@@ -4478,12 +4499,32 @@ static void lru_gen_age_node(struct pgli do { struct lruvec *lruvec = mem_cgroup_lruvec(memcg, pgdat); @@ -146,7 +146,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e } /* -@@ -5228,6 +5269,28 @@ unlock: +@@ -5240,6 +5281,28 @@ unlock: * sysfs interface ******************************************************************************/ @@ -175,7 +175,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e static ssize_t show_enabled(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { unsigned int caps = 0; -@@ -5276,6 +5339,7 @@ static struct kobj_attribute lru_gen_ena +@@ -5288,6 +5351,7 @@ static struct kobj_attribute lru_gen_ena ); static struct attribute *lru_gen_attrs[] = { @@ -183,7 +183,7 @@ Change-Id: I007499d7e47374b59fd620e8c3962940bc9f788e &lru_gen_enabled_attr.attr, NULL }; -@@ -5291,12 +5355,16 @@ static struct attribute_group lru_gen_at +@@ -5303,12 +5367,16 @@ static struct attribute_group lru_gen_at void lru_gen_init_lruvec(struct lruvec *lruvec) { diff --git a/target/linux/generic/backport-6.0/111-mm-multi-gen-LRU-debugfs-interface.patch b/target/linux/generic/backport-6.0/111-mm-multi-gen-LRU-debugfs-interface.patch index 2c63332f9..4d8be03fd 100644 --- a/target/linux/generic/backport-6.0/111-mm-multi-gen-LRU-debugfs-interface.patch +++ b/target/linux/generic/backport-6.0/111-mm-multi-gen-LRU-debugfs-interface.patch @@ -62,7 +62,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab #include #include -@@ -4197,12 +4198,40 @@ static void clear_mm_walk(void) +@@ -4209,12 +4210,40 @@ static void clear_mm_walk(void) kfree(walk); } @@ -104,7 +104,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab } static bool try_to_inc_min_seq(struct lruvec *lruvec, bool can_swap) -@@ -4248,7 +4277,7 @@ next: +@@ -4260,7 +4289,7 @@ next: return success; } @@ -113,7 +113,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab { int prev, next; int type, zone; -@@ -4262,9 +4291,13 @@ static void inc_max_seq(struct lruvec *l +@@ -4274,9 +4303,13 @@ static void inc_max_seq(struct lruvec *l if (get_nr_gens(lruvec, type) != MAX_NR_GENS) continue; @@ -129,7 +129,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab } /* -@@ -4301,7 +4334,7 @@ static void inc_max_seq(struct lruvec *l +@@ -4313,7 +4346,7 @@ static void inc_max_seq(struct lruvec *l } static bool try_to_inc_max_seq(struct lruvec *lruvec, unsigned long max_seq, @@ -138,7 +138,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab { bool success; struct lru_gen_mm_walk *walk; -@@ -4322,7 +4355,7 @@ static bool try_to_inc_max_seq(struct lr +@@ -4334,7 +4367,7 @@ static bool try_to_inc_max_seq(struct lr * handful of PTEs. Spreading the work out over a period of time usually * is less efficient, but it avoids bursty page faults. */ @@ -147,7 +147,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab success = iterate_mm_list_nowalk(lruvec, max_seq); goto done; } -@@ -4336,7 +4369,7 @@ static bool try_to_inc_max_seq(struct lr +@@ -4348,7 +4381,7 @@ static bool try_to_inc_max_seq(struct lr walk->lruvec = lruvec; walk->max_seq = max_seq; walk->can_swap = can_swap; @@ -156,7 +156,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab do { success = iterate_mm_list(lruvec, walk, &mm); -@@ -4356,7 +4389,7 @@ done: +@@ -4368,7 +4401,7 @@ done: VM_WARN_ON_ONCE(max_seq != READ_ONCE(lrugen->max_seq)); @@ -165,7 +165,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab /* either this sees any waiters or they will see updated max_seq */ if (wq_has_sleeper(&lruvec->mm_state.wait)) wake_up_all(&lruvec->mm_state.wait); -@@ -4452,7 +4485,7 @@ static bool age_lruvec(struct lruvec *lr +@@ -4464,7 +4497,7 @@ static bool age_lruvec(struct lruvec *lr } if (need_aging) @@ -174,7 +174,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab return true; } -@@ -5011,7 +5044,7 @@ static unsigned long get_nr_to_scan(stru +@@ -5023,7 +5056,7 @@ static unsigned long get_nr_to_scan(stru if (current_is_kswapd()) return 0; @@ -183,7 +183,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab return nr_to_scan; done: return min_seq[!can_swap] + MIN_NR_GENS <= max_seq ? nr_to_scan : 0; -@@ -5350,6 +5383,361 @@ static struct attribute_group lru_gen_at +@@ -5362,6 +5395,361 @@ static struct attribute_group lru_gen_at }; /****************************************************************************** @@ -545,7 +545,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab * initialization ******************************************************************************/ -@@ -5406,6 +5794,9 @@ static int __init init_lru_gen(void) +@@ -5418,6 +5806,9 @@ static int __init init_lru_gen(void) if (sysfs_create_group(mm_kobj, &lru_gen_attr_group)) pr_err("lru_gen: failed to create sysfs group\n"); diff --git a/target/linux/generic/backport-6.0/112-mm-multi-gen-LRU-admin-guide.patch b/target/linux/generic/backport-6.0/112-mm-multi-gen-LRU-admin-guide.patch index bbf418b84..1220f96bf 100644 --- a/target/linux/generic/backport-6.0/112-mm-multi-gen-LRU-admin-guide.patch +++ b/target/linux/generic/backport-6.0/112-mm-multi-gen-LRU-admin-guide.patch @@ -219,7 +219,7 @@ Change-Id: I1902178bcbb5adfa0a748c4d284a6456059bdd7e bool "Enable by default" --- a/mm/vmscan.c +++ b/mm/vmscan.c -@@ -5307,6 +5307,7 @@ static ssize_t show_min_ttl(struct kobje +@@ -5319,6 +5319,7 @@ static ssize_t show_min_ttl(struct kobje return sprintf(buf, "%u\n", jiffies_to_msecs(READ_ONCE(lru_gen_min_ttl))); } @@ -227,7 +227,7 @@ Change-Id: I1902178bcbb5adfa0a748c4d284a6456059bdd7e static ssize_t store_min_ttl(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t len) { -@@ -5340,6 +5341,7 @@ static ssize_t show_enabled(struct kobje +@@ -5352,6 +5353,7 @@ static ssize_t show_enabled(struct kobje return snprintf(buf, PAGE_SIZE, "0x%04x\n", caps); } @@ -235,7 +235,7 @@ Change-Id: I1902178bcbb5adfa0a748c4d284a6456059bdd7e static ssize_t store_enabled(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t len) { -@@ -5487,6 +5489,7 @@ static void lru_gen_seq_show_full(struct +@@ -5499,6 +5501,7 @@ static void lru_gen_seq_show_full(struct seq_putc(m, '\n'); } @@ -243,7 +243,7 @@ Change-Id: I1902178bcbb5adfa0a748c4d284a6456059bdd7e static int lru_gen_seq_show(struct seq_file *m, void *v) { unsigned long seq; -@@ -5645,6 +5648,7 @@ done: +@@ -5657,6 +5660,7 @@ done: return err; } diff --git a/target/linux/generic/config-6.0 b/target/linux/generic/config-6.0 index f5bb5afa8..e244e0526 100644 --- a/target/linux/generic/config-6.0 +++ b/target/linux/generic/config-6.0 @@ -2666,6 +2666,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_INA2XX_ADC is not set # CONFIG_INDIRECT_PIO is not set CONFIG_INET=y +CONFIG_INET_TABLE_PERTURB_ORDER=16 # CONFIG_INET6_AH is not set # CONFIG_INET6_ESP is not set # CONFIG_INET6_ESPINTCP is not set diff --git a/target/linux/generic/hack-6.0/410-block-fit-partition-parser.patch b/target/linux/generic/hack-6.0/410-block-fit-partition-parser.patch index 38856ded7..235ebd641 100644 --- a/target/linux/generic/hack-6.0/410-block-fit-partition-parser.patch +++ b/target/linux/generic/hack-6.0/410-block-fit-partition-parser.patch @@ -1,6 +1,6 @@ --- a/block/blk.h +++ b/block/blk.h -@@ -406,6 +406,8 @@ void blk_free_ext_minor(unsigned int min +@@ -407,6 +407,8 @@ void blk_free_ext_minor(unsigned int min #define ADDPART_FLAG_NONE 0 #define ADDPART_FLAG_RAID 1 #define ADDPART_FLAG_WHOLEDISK 2 diff --git a/target/linux/generic/hack-6.0/645-netfilter-connmark-introduce-set-dscpmark.patch b/target/linux/generic/hack-6.0/645-netfilter-connmark-introduce-set-dscpmark.patch index 2d3fe01a7..c368c4ae3 100644 --- a/target/linux/generic/hack-6.0/645-netfilter-connmark-introduce-set-dscpmark.patch +++ b/target/linux/generic/hack-6.0/645-netfilter-connmark-introduce-set-dscpmark.patch @@ -109,7 +109,7 @@ Signed-off-by: Kevin Darbyshire-Bryant __u8 invert; --- a/net/netfilter/xt_connmark.c +++ b/net/netfilter/xt_connmark.c -@@ -24,12 +24,13 @@ MODULE_ALIAS("ipt_connmark"); +@@ -24,13 +24,13 @@ MODULE_ALIAS("ipt_connmark"); MODULE_ALIAS("ip6t_connmark"); static unsigned int @@ -120,20 +120,22 @@ Signed-off-by: Kevin Darbyshire-Bryant u_int32_t new_targetmark; struct nf_conn *ct; u_int32_t newmark; +- u_int32_t oldmark; + u_int8_t dscp; ct = nf_ct_get(skb, &ctinfo); if (ct == NULL) -@@ -37,12 +38,24 @@ connmark_tg_shift(struct sk_buff *skb, c +@@ -38,13 +38,24 @@ connmark_tg_shift(struct sk_buff *skb, c switch (info->mode) { case XT_CONNMARK_SET: -- newmark = (ct->mark & ~info->ctmask) ^ info->ctmark; +- oldmark = READ_ONCE(ct->mark); +- newmark = (oldmark & ~info->ctmask) ^ info->ctmark; - if (info->shift_dir == D_SHIFT_RIGHT) - newmark >>= info->shift_bits; - else - newmark <<= info->shift_bits; -+ newmark = ct->mark; ++ newmark = READ_ONCE(ct->mark); + if (info->func & XT_CONNMARK_VALUE) { + newmark = (newmark & ~info->ctmask) ^ info->ctmark; + if (info->shift_dir == D_SHIFT_RIGHT) @@ -151,10 +153,10 @@ Signed-off-by: Kevin Darbyshire-Bryant + newmark = (newmark & ~info->ctmark) | + (info->ctmask | (dscp << info->shift_bits)); + } - if (ct->mark != newmark) { - ct->mark = newmark; + if (READ_ONCE(ct->mark) != newmark) { + WRITE_ONCE(ct->mark, newmark); nf_conntrack_event_cache(IPCT_MARK, ct); -@@ -81,20 +94,36 @@ static unsigned int +@@ -83,20 +94,36 @@ static unsigned int connmark_tg(struct sk_buff *skb, const struct xt_action_param *par) { const struct xt_connmark_tginfo1 *info = par->targinfo; @@ -193,7 +195,7 @@ Signed-off-by: Kevin Darbyshire-Bryant return connmark_tg_shift(skb, info); } -@@ -165,6 +194,16 @@ static struct xt_target connmark_tg_reg[ +@@ -167,6 +194,16 @@ static struct xt_target connmark_tg_reg[ .targetsize = sizeof(struct xt_connmark_tginfo2), .destroy = connmark_tg_destroy, .me = THIS_MODULE, diff --git a/target/linux/generic/hack-6.0/902-debloat_proc.patch b/target/linux/generic/hack-6.0/902-debloat_proc.patch index 2f6e483a9..427b7c374 100644 --- a/target/linux/generic/hack-6.0/902-debloat_proc.patch +++ b/target/linux/generic/hack-6.0/902-debloat_proc.patch @@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -3029,11 +3029,13 @@ static const struct seq_operations fib_r +@@ -3031,11 +3031,13 @@ static const struct seq_operations fib_r int __net_init fib_proc_init(struct net *net) { @@ -357,7 +357,7 @@ Signed-off-by: Felix Fietkau fib_triestat_seq_show, NULL)) goto out2; -@@ -3044,17 +3046,21 @@ int __net_init fib_proc_init(struct net +@@ -3046,17 +3048,21 @@ int __net_init fib_proc_init(struct net return 0; out3: diff --git a/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch b/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch index 6e03eb808..a5a329d48 100644 --- a/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch +++ b/target/linux/generic/hack-6.0/904-debloat_dma_buf.patch @@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau +dma-shared-buffer-objs := $(dma-buf-objs-y) --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c -@@ -1578,4 +1578,5 @@ static void __exit dma_buf_deinit(void) +@@ -1589,4 +1589,5 @@ static void __exit dma_buf_deinit(void) kern_unmount(dma_buf_mnt); dma_buf_uninit_sysfs_statistics(); } diff --git a/target/linux/generic/hack-6.0/952-add-net-conntrack-events-support-multiple-registrant.patch b/target/linux/generic/hack-6.0/952-add-net-conntrack-events-support-multiple-registrant.patch index 8c9cd95bb..0123a1e69 100644 --- a/target/linux/generic/hack-6.0/952-add-net-conntrack-events-support-multiple-registrant.patch +++ b/target/linux/generic/hack-6.0/952-add-net-conntrack-events-support-multiple-registrant.patch @@ -319,7 +319,7 @@ Signed-off-by: Zhi Chen struct nf_conn *ct = item->ct; struct sk_buff *skb; unsigned int type; -@@ -3745,11 +3752,17 @@ static int ctnetlink_stat_exp_cpu(struct +@@ -3749,11 +3756,17 @@ static int ctnetlink_stat_exp_cpu(struct } #ifdef CONFIG_NF_CONNTRACK_EVENTS @@ -337,7 +337,7 @@ Signed-off-by: Zhi Chen static const struct nfnl_callback ctnl_cb[IPCTNL_MSG_MAX] = { [IPCTNL_MSG_CT_NEW] = { -@@ -3848,8 +3861,12 @@ static int __net_init ctnetlink_net_init +@@ -3852,8 +3865,12 @@ static int __net_init ctnetlink_net_init static void ctnetlink_net_pre_exit(struct net *net) { #ifdef CONFIG_NF_CONNTRACK_EVENTS diff --git a/target/linux/generic/hack-6.0/982-add-bcm-fullconenat-support.patch b/target/linux/generic/hack-6.0/982-add-bcm-fullconenat-support.patch index 41b16c36d..446f6bba5 100644 --- a/target/linux/generic/hack-6.0/982-add-bcm-fullconenat-support.patch +++ b/target/linux/generic/hack-6.0/982-add-bcm-fullconenat-support.patch @@ -10,7 +10,7 @@ struct masq_dev_work { struct work_struct work; -@@ -23,6 +26,129 @@ static DEFINE_MUTEX(masq_mutex); +@@ -24,6 +27,129 @@ static DEFINE_MUTEX(masq_mutex); static unsigned int masq_refcnt __read_mostly; static atomic_t masq_worker_count __read_mostly; @@ -140,7 +140,7 @@ unsigned int nf_nat_masquerade_ipv4(struct sk_buff *skb, unsigned int hooknum, const struct nf_nat_range2 *range, -@@ -60,6 +186,72 @@ nf_nat_masquerade_ipv4(struct sk_buff *s +@@ -61,6 +187,72 @@ nf_nat_masquerade_ipv4(struct sk_buff *s if (nat) nat->masq_index = out->ifindex; @@ -213,7 +213,7 @@ /* Transfer from original range. */ memset(&newrange.min_addr, 0, sizeof(newrange.min_addr)); memset(&newrange.max_addr, 0, sizeof(newrange.max_addr)); -@@ -347,6 +539,7 @@ EXPORT_SYMBOL_GPL(nf_nat_masquerade_inet +@@ -352,6 +544,7 @@ EXPORT_SYMBOL_GPL(nf_nat_masquerade_inet void nf_nat_masquerade_inet_unregister_notifiers(void) { diff --git a/target/linux/generic/pending-6.0/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch b/target/linux/generic/pending-6.0/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch index a2fd96a95..eb0373341 100644 --- a/target/linux/generic/pending-6.0/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch +++ b/target/linux/generic/pending-6.0/120-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch @@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -7838,7 +7838,7 @@ static void __init alloc_node_mem_map(st +@@ -7841,7 +7841,7 @@ static void __init alloc_node_mem_map(st if (pgdat == NODE_DATA(0)) { mem_map = NODE_DATA(0)->node_mem_map; if (page_to_pfn(mem_map) != pgdat->node_start_pfn) diff --git a/target/linux/generic/pending-6.0/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-6.0/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index f9d00e3bb..4db488655 100644 --- a/target/linux/generic/pending-6.0/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/pending-6.0/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski static void rt_fibinfo_free(struct rtable __rcu **rtp) --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c -@@ -2776,6 +2776,7 @@ static const char *const rtn_type_names[ +@@ -2778,6 +2778,7 @@ static const char *const rtn_type_names[ [RTN_THROW] = "THROW", [RTN_NAT] = "NAT", [RTN_XRESOLVE] = "XRESOLVE", diff --git a/target/linux/generic/pending-6.0/735-net-phy-at803x-fix-at8033-sgmii-mode.patch b/target/linux/generic/pending-6.0/735-net-phy-at803x-fix-at8033-sgmii-mode.patch index 8fc90aeb9..9cbf047a3 100644 --- a/target/linux/generic/pending-6.0/735-net-phy-at803x-fix-at8033-sgmii-mode.patch +++ b/target/linux/generic/pending-6.0/735-net-phy-at803x-fix-at8033-sgmii-mode.patch @@ -21,7 +21,7 @@ Signed-off-by: Roman Yeryomin #define AT803X_DEBUG_ADDR 0x1D #define AT803X_DEBUG_DATA 0x1E -@@ -946,6 +947,27 @@ static int at803x_smarteee_config(struct +@@ -948,6 +949,27 @@ static int at803x_smarteee_config(struct struct at803x_priv *priv = phydev->priv; u16 mask = 0, val = 0; int ret; diff --git a/target/linux/rockchip/patches-6.0/020-v6.2-net-phy-Add-driver-for-Motorcomm-yt8521.patch b/target/linux/rockchip/patches-6.0/020-v6.2-net-phy-Add-driver-for-Motorcomm-yt8521.patch index a91099640..ed912a94b 100644 --- a/target/linux/rockchip/patches-6.0/020-v6.2-net-phy-Add-driver-for-Motorcomm-yt8521.patch +++ b/target/linux/rockchip/patches-6.0/020-v6.2-net-phy-Add-driver-for-Motorcomm-yt8521.patch @@ -503,7 +503,7 @@ Signed-off-by: David S. Miller static int yt8511_read_page(struct phy_device *phydev) { return __phy_read(phydev, YT8511_PAGE_SELECT); -@@ -111,6 +548,1181 @@ static int yt8511_config_init(struct phy_device *phydev) +@@ -111,6 +548,1181 @@ err_restore_page: return phy_restore_page(phydev, oldpage, ret); } @@ -1685,7 +1685,7 @@ Signed-off-by: David S. Miller static struct phy_driver motorcomm_phy_drvs[] = { { PHY_ID_MATCH_EXACT(PHY_ID_YT8511), -@@ -121,16 +1733,35 @@ static struct phy_driver motorcomm_phy_drvs[] = { +@@ -121,16 +1733,35 @@ static struct phy_driver motorcomm_phy_d .read_page = yt8511_read_page, .write_page = yt8511_write_page, }, diff --git a/target/linux/rockchip/patches-6.0/021-v6.2-net-phy-add-Motorcomm-YT8531S-phy-id.patch b/target/linux/rockchip/patches-6.0/021-v6.2-net-phy-add-Motorcomm-YT8531S-phy-id.patch index 7ec6867ea..95c65bd57 100644 --- a/target/linux/rockchip/patches-6.0/021-v6.2-net-phy-add-Motorcomm-YT8531S-phy-id.patch +++ b/target/linux/rockchip/patches-6.0/021-v6.2-net-phy-add-Motorcomm-YT8531S-phy-id.patch @@ -41,12 +41,10 @@ Signed-off-by: David S. Miller * * Author: Peter Geis * Author: Frank -@@ -12,9 +12,10 @@ - #include +@@ -13,8 +13,9 @@ #define PHY_ID_YT8511 0x0000010a --#define PHY_ID_YT8521 0x0000011A -+#define PHY_ID_YT8521 0x0000011A + #define PHY_ID_YT8521 0x0000011A +#define PHY_ID_YT8531S 0x4F51E91A -/* YT8521 Register Overview @@ -73,11 +71,10 @@ Signed-off-by: David S. Miller /* Extended Register end */ struct yt8521_priv { -@@ -647,6 +651,26 @@ static int yt8521_probe(struct phy_device *phydev) - return 0; +@@ -648,6 +652,26 @@ static int yt8521_probe(struct phy_devic } -+/** + /** + * yt8531s_probe() - read chip config then set suitable polling_mode + * @phydev: a pointer to a &struct phy_device + * @@ -97,10 +94,11 @@ Signed-off-by: David S. Miller + return yt8521_probe(phydev); +} + - /** ++/** * ytphy_utp_read_lpa() - read LPA then setup lp_advertising for utp * @phydev: a pointer to a &struct phy_device -@@ -1750,11 +1774,28 @@ static struct phy_driver motorcomm_phy_drvs[] = { + * +@@ -1750,11 +1774,28 @@ static struct phy_driver motorcomm_phy_d .suspend = yt8521_suspend, .resume = yt8521_resume, }, diff --git a/target/linux/rockchip/patches-6.0/108-net-phy-Add-driver-for-Motorcomm-yt8531-gigabit.patch b/target/linux/rockchip/patches-6.0/108-net-phy-Add-driver-for-Motorcomm-yt8531-gigabit.patch index 358295459..0071047f1 100644 --- a/target/linux/rockchip/patches-6.0/108-net-phy-Add-driver-for-Motorcomm-yt8531-gigabit.patch +++ b/target/linux/rockchip/patches-6.0/108-net-phy-Add-driver-for-Motorcomm-yt8531-gigabit.patch @@ -57,7 +57,7 @@ Signed-off-by: Frank /* Extended Register end */ struct yt8521_priv { -@@ -479,6 +483,77 @@ static int ytphy_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) +@@ -479,6 +483,77 @@ err_restore_page: return phy_restore_page(phydev, old_page, ret); } @@ -135,11 +135,10 @@ Signed-off-by: Frank static int yt8511_read_page(struct phy_device *phydev) { return __phy_read(phydev, YT8511_PAGE_SELECT); -@@ -651,6 +726,19 @@ static int yt8521_probe(struct phy_device *phydev) - return 0; +@@ -652,6 +727,19 @@ static int yt8521_probe(struct phy_devic } -+/** + /** + * yt8531_probe() - Now only disable SyncE clock output + * @phydev: a pointer to a &struct phy_device + * @@ -152,14 +151,14 @@ Signed-off-by: Frank + YT8531_SCR_SYNCE_ENABLE, 0); +} + - /** ++/** * yt8531s_probe() - read chip config then set suitable polling_mode * @phydev: a pointer to a &struct phy_device -@@ -1192,6 +1280,59 @@ static int yt8521_config_init(struct phy_device *phydev) - return phy_restore_page(phydev, old_page, ret); + * +@@ -1193,6 +1281,59 @@ err_restore_page: } -+/** + /** + * yt8531_config_init() - called to initialize the PHY + * @phydev: a pointer to a &struct phy_device + * @@ -212,14 +211,14 @@ Signed-off-by: Frank + YT8521_CGR_RX_CLK_EN, 0); +} + - /** ++/** * yt8521_prepare_fiber_features() - A small helper function that setup * fiber's features. -@@ -1774,6 +1915,16 @@ static struct phy_driver motorcomm_phy_drvs[] = { - .suspend = yt8521_suspend, + * @phydev: a pointer to a &struct phy_device +@@ -1775,6 +1916,16 @@ static struct phy_driver motorcomm_phy_d .resume = yt8521_resume, }, -+ { + { + PHY_ID_MATCH_EXACT(PHY_ID_YT8531), + .name = "YT8531 Gigabit Ethernet", + .probe = yt8531_probe, @@ -229,10 +228,11 @@ Signed-off-by: Frank + .get_wol = ytphy_get_wol, + .set_wol = yt8531_set_wol, + }, - { ++ { PHY_ID_MATCH_EXACT(PHY_ID_YT8531S), .name = "YT8531S Gigabit Ethernet", -@@ -1795,7 +1946,7 @@ static struct phy_driver motorcomm_phy_drvs[] = { + .get_features = yt8521_get_features, +@@ -1795,7 +1946,7 @@ static struct phy_driver motorcomm_phy_d module_phy_driver(motorcomm_phy_drvs); diff --git a/target/linux/rockchip/patches-6.0/182-crypto-rockchip-add-myself-as-maintainer.patch b/target/linux/rockchip/patches-6.0/182-crypto-rockchip-add-myself-as-maintainer.patch index adab9faa6..90a5a8626 100644 --- a/target/linux/rockchip/patches-6.0/182-crypto-rockchip-add-myself-as-maintainer.patch +++ b/target/linux/rockchip/patches-6.0/182-crypto-rockchip-add-myself-as-maintainer.patch @@ -14,7 +14,7 @@ Signed-off-by: Corentin Labbe --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -17569,6 +17569,13 @@ F: Documentation/ABI/*/sysfs-driver-hid- +@@ -17570,6 +17570,13 @@ F: Documentation/ABI/*/sysfs-driver-hid- F: drivers/hid/hid-roccat* F: include/linux/hid-roccat* diff --git a/target/linux/rockchip/patches-6.0/203-MAINTAINERS-add-new-dt-binding-doc-to-the-right-entr.patch b/target/linux/rockchip/patches-6.0/203-MAINTAINERS-add-new-dt-binding-doc-to-the-right-entr.patch index a52394500..9e9e2b88b 100644 --- a/target/linux/rockchip/patches-6.0/203-MAINTAINERS-add-new-dt-binding-doc-to-the-right-entr.patch +++ b/target/linux/rockchip/patches-6.0/203-MAINTAINERS-add-new-dt-binding-doc-to-the-right-entr.patch @@ -12,7 +12,7 @@ Signed-off-by: Corentin Labbe --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -17574,6 +17574,7 @@ M: Corentin Labbe +@@ -17575,6 +17575,7 @@ M: Corentin Labbe L: linux-crypto@vger.kernel.org S: Maintained F: Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml