kernel: bump 6.0 to 6.0.11 ()

Manually rebased:
	hack-6.0/645-netfilter-connmark-introduce-set-dscpmark.patch[1]

All other patches automatically rebased

Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
Co-authored-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
lovehackintosh 2022-12-06 15:02:11 +08:00 committed by GitHub
parent a653ef540f
commit 944341aaf2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 128 additions and 127 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);
}

View File

@ -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;
/*

View File

@ -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;
}

View File

@ -451,7 +451,7 @@ Change-Id: I1065451af34154306418510c19e03ea798dc13af
#include <asm/tlbflush.h>
#include <asm/div64.h>
@@ -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)));

View File

@ -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;

View File

@ -196,7 +196,7 @@ Change-Id: I4c909618e8fed7fb1337f6624bbe542ec920a515
#include <asm/tlbflush.h>
#include <asm/div64.h>
@@ -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);

View File

@ -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)
{

View File

@ -62,7 +62,7 @@ Change-Id: I7bb06f14e0a94901a076cc3767d0855d4f1ea3ab
#include <asm/tlbflush.h>
#include <asm/div64.h>
@@ -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");

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -109,7 +109,7 @@ Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
__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 <ldir@darbyshire-bryant.me.uk>
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 <ldir@darbyshire-bryant.me.uk>
+ 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 <ldir@darbyshire-bryant.me.uk>
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,

View File

@ -341,7 +341,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- 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 <nbd@nbd.name>
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:

View File

@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+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();
}

View File

@ -319,7 +319,7 @@ Signed-off-by: Zhi Chen <zhichen@codeaurora.org>
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 <zhichen@codeaurora.org>
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

View File

@ -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)
{

View File

@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
--- 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)

View File

@ -66,7 +66,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
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",

View File

@ -21,7 +21,7 @@ Signed-off-by: Roman Yeryomin <roman@advem.lv>
#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;

View File

@ -503,7 +503,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
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 <davem@davemloft.net>
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,
},

View File

@ -41,12 +41,10 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
*
* Author: Peter Geis <pgwipeout@gmail.com>
* Author: Frank <Frank.Sae@motor-comm.com>
@@ -12,9 +12,10 @@
#include <linux/phy.h>
@@ -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 <davem@davemloft.net>
/* 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 <davem@davemloft.net>
+ 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,
},

View File

@ -57,7 +57,7 @@ Signed-off-by: Frank <Frank.Sae@motor-comm.com>
/* 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 <Frank.Sae@motor-comm.com>
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 <Frank.Sae@motor-comm.com>
+ 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 <Frank.Sae@motor-comm.com>
+ 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 <Frank.Sae@motor-comm.com>
+ .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);

View File

@ -14,7 +14,7 @@ Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
--- 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*

View File

@ -12,7 +12,7 @@ Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -17574,6 +17574,7 @@ M: Corentin Labbe <clabbe@baylibre.com>
@@ -17575,6 +17575,7 @@ M: Corentin Labbe <clabbe@baylibre.com>
L: linux-crypto@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/crypto/rockchip,rk3288-crypto.yaml