-LINUX_VERSION-6.1 = .49
-LINUX_KERNEL_HASH-6.1.49 = c9ea14231ca4ca6e3882a9339a8c3c414e4c91519d3e50af6822f47e99057a0f
+LINUX_VERSION-6.1 = .50
+LINUX_KERNEL_HASH-6.1.50 = b27ac1443eea563bc546ee1f67d9802bc8d6c0f6f18707407fba01f9f78c488c
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -6060,6 +6060,9 @@ int __init cgroup_init_early(void)
+@@ -6061,6 +6061,9 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -6093,6 +6096,12 @@ int __init cgroup_init(void)
+@@ -6094,6 +6097,12 @@ int __init cgroup_init(void)
cgroup_unlock();
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6730,6 +6739,10 @@ static int __init cgroup_disable(char *s
+@@ -6734,6 +6743,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
-@@ -6748,6 +6761,31 @@ static int __init cgroup_disable(char *s
+@@ -6752,6 +6765,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
#include <linux/phylink.h>
#include <linux/regmap.h>
#include <linux/regulator/consumer.h>
-@@ -2611,128 +2612,11 @@ static int mt7531_rgmii_setup(struct mt7
+@@ -2615,128 +2616,11 @@ static int mt7531_rgmii_setup(struct mt7
return 0;
}
static int
mt7531_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
phy_interface_t interface)
-@@ -2755,11 +2639,11 @@ mt7531_mac_config(struct dsa_switch *ds,
+@@ -2759,11 +2643,11 @@ mt7531_mac_config(struct dsa_switch *ds,
phydev = dp->slave->phydev;
return mt7531_rgmii_setup(priv, port, interface, phydev);
case PHY_INTERFACE_MODE_SGMII:
default:
return -EINVAL;
}
-@@ -2784,11 +2668,11 @@ mt753x_phylink_mac_select_pcs(struct dsa
+@@ -2788,11 +2672,11 @@ mt753x_phylink_mac_select_pcs(struct dsa
switch (interface) {
case PHY_INTERFACE_MODE_TRGMII:
default:
return NULL;
}
-@@ -3029,86 +2913,6 @@ static void mt7530_pcs_get_state(struct
+@@ -3033,86 +2917,6 @@ static void mt7530_pcs_get_state(struct
state->pause |= MLO_PAUSE_TX;
}
static int mt753x_pcs_config(struct phylink_pcs *pcs, unsigned int mode,
phy_interface_t interface,
const unsigned long *advertising,
-@@ -3128,18 +2932,57 @@ static const struct phylink_pcs_ops mt75
+@@ -3132,18 +2936,57 @@ static const struct phylink_pcs_ops mt75
.pcs_an_restart = mt7530_pcs_an_restart,
};
int i, ret;
/* Initialise the PCS devices */
-@@ -3147,8 +2990,6 @@ mt753x_setup(struct dsa_switch *ds)
+@@ -3151,8 +2994,6 @@ mt753x_setup(struct dsa_switch *ds)
priv->pcs[i].pcs.ops = priv->info->pcs_ops;
priv->pcs[i].priv = priv;
priv->pcs[i].port = i;
}
ret = priv->info->sw_setup(ds);
-@@ -3163,6 +3004,16 @@ mt753x_setup(struct dsa_switch *ds)
+@@ -3167,6 +3008,16 @@ mt753x_setup(struct dsa_switch *ds)
if (ret && priv->irq)
mt7530_free_irq_common(priv);
return ret;
}
-@@ -3254,7 +3105,7 @@ static const struct mt753x_info mt753x_t
+@@ -3258,7 +3109,7 @@ static const struct mt753x_info mt753x_t
},
[ID_MT7531] = {
.id = ID_MT7531,
.sw_setup = mt7531_setup,
.phy_read = mt7531_ind_phy_read,
.phy_write = mt7531_ind_phy_write,
-@@ -3362,7 +3213,7 @@ static void
+@@ -3366,7 +3217,7 @@ static void
mt7530_remove(struct mdio_device *mdiodev)
{
struct mt7530_priv *priv = dev_get_drvdata(&mdiodev->dev);
if (!priv)
return;
-@@ -3381,6 +3232,10 @@ mt7530_remove(struct mdio_device *mdiode
+@@ -3385,6 +3236,10 @@ mt7530_remove(struct mdio_device *mdiode
mt7530_free_irq(priv);
dsa_unregister_switch(priv->ds);
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
-@@ -369,47 +369,8 @@ enum mt7530_vlan_port_acc_frm {
+@@ -371,47 +371,8 @@ enum mt7530_vlan_port_acc_frm {
CCR_TX_OCT_CNT_BAD)
/* MT7531 SGMII register group */
/* Register for system reset */
#define MT7530_SYS_CTRL 0x7000
-@@ -708,13 +669,13 @@ struct mt7530_fdb {
+@@ -710,13 +671,13 @@ struct mt7530_fdb {
* @pm: The matrix used to show all connections with the port.
* @pvid: The VLAN specified is to be considered a PVID at ingress. Any
* untagged frames will be assigned to the related VLAN.
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -2964,26 +2964,56 @@ static const struct regmap_bus mt7531_re
+@@ -2968,26 +2968,56 @@ static const struct regmap_bus mt7531_re
.reg_update_bits = mt7530_regmap_update_bits,
};
int i, ret;
/* Initialise the PCS devices */
-@@ -3005,15 +3035,11 @@ mt753x_setup(struct dsa_switch *ds)
+@@ -3009,15 +3039,11 @@ mt753x_setup(struct dsa_switch *ds)
if (ret && priv->irq)
mt7530_free_irq_common(priv);
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -2937,7 +2937,7 @@ static int mt7530_regmap_read(void *cont
+@@ -2941,7 +2941,7 @@ static int mt7530_regmap_read(void *cont
{
struct mt7530_priv *priv = context;
return 0;
};
-@@ -2945,23 +2945,25 @@ static int mt7530_regmap_write(void *con
+@@ -2949,23 +2949,25 @@ static int mt7530_regmap_write(void *con
{
struct mt7530_priv *priv = context;
};
static int
-@@ -2987,6 +2989,9 @@ mt7531_create_sgmii(struct mt7530_priv *
+@@ -2991,6 +2993,9 @@ mt7531_create_sgmii(struct mt7530_priv *
mt7531_pcs_config[i]->reg_stride = 4;
mt7531_pcs_config[i]->reg_base = MT7531_SGMII_REG_BASE(5 + i);
mt7531_pcs_config[i]->max_register = 0x17c;
}
static void
-@@ -2933,22 +2954,6 @@ static const struct phylink_pcs_ops mt75
+@@ -2937,22 +2958,6 @@ static const struct phylink_pcs_ops mt75
.pcs_an_restart = mt7530_pcs_an_restart,
};
static void
mt7530_mdio_regmap_lock(void *mdio_lock)
{
-@@ -2961,7 +2966,7 @@ mt7530_mdio_regmap_unlock(void *mdio_loc
+@@ -2965,7 +2970,7 @@ mt7530_mdio_regmap_unlock(void *mdio_loc
mutex_unlock(mdio_lock);
}
.reg_write = mt7530_regmap_write,
.reg_read = mt7530_regmap_read,
};
-@@ -2994,7 +2999,7 @@ mt7531_create_sgmii(struct mt7530_priv *
+@@ -2998,7 +3003,7 @@ mt7531_create_sgmii(struct mt7530_priv *
mt7531_pcs_config[i]->lock_arg = &priv->bus->mdio_lock;
regmap = devm_regmap_init(priv->dev,
mt7531_pcs_config[i]);
if (IS_ERR(regmap)) {
ret = PTR_ERR(regmap);
-@@ -3159,6 +3164,7 @@ MODULE_DEVICE_TABLE(of, mt7530_of_match)
+@@ -3163,6 +3168,7 @@ MODULE_DEVICE_TABLE(of, mt7530_of_match)
static int
mt7530_probe(struct mdio_device *mdiodev)
{
struct mt7530_priv *priv;
struct device_node *dn;
-@@ -3238,6 +3244,21 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3242,6 +3248,21 @@ mt7530_probe(struct mdio_device *mdiodev
mutex_init(&priv->reg_mutex);
dev_set_drvdata(&mdiodev->dev, priv);
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
-@@ -752,6 +752,7 @@ struct mt753x_info {
+@@ -754,6 +754,7 @@ struct mt753x_info {
* @dev: The device pointer
* @ds: The pointer to the dsa core structure
* @bus: The bus used for the device and built-in PHY
* @rstc: The pointer to reset control used by MCM
* @core_pwr: The power supplied into the core
* @io_pwr: The power supplied into the I/O
-@@ -772,6 +773,7 @@ struct mt7530_priv {
+@@ -774,6 +775,7 @@ struct mt7530_priv {
struct device *dev;
struct dsa_switch *ds;
struct mii_bus *bus;
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -3045,12 +3045,6 @@ mt753x_setup(struct dsa_switch *ds)
+@@ -3049,12 +3049,6 @@ mt753x_setup(struct dsa_switch *ds)
if (ret && priv->irq)
mt7530_free_irq_common(priv);
return ret;
}
-@@ -3167,6 +3161,7 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3171,6 +3165,7 @@ mt7530_probe(struct mdio_device *mdiodev
static struct regmap_config *regmap_config;
struct mt7530_priv *priv;
struct device_node *dn;
dn = mdiodev->dev.of_node;
-@@ -3259,6 +3254,12 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3263,6 +3258,12 @@ mt7530_probe(struct mdio_device *mdiodev
if (IS_ERR(priv->regmap))
return PTR_ERR(priv->regmap);
return ret;
}
-@@ -1121,7 +1121,6 @@ static int
+@@ -1125,7 +1125,6 @@ static int
mt7530_port_change_mtu(struct dsa_switch *ds, int port, int new_mtu)
{
struct mt7530_priv *priv = ds->priv;
int length;
u32 val;
-@@ -1132,7 +1131,7 @@ mt7530_port_change_mtu(struct dsa_switch
+@@ -1136,7 +1135,7 @@ mt7530_port_change_mtu(struct dsa_switch
if (!dsa_is_cpu_port(ds, port))
return 0;
val = mt7530_mii_read(priv, MT7530_GMACCR);
val &= ~MAX_RX_PKT_LEN_MASK;
-@@ -1153,7 +1152,7 @@ mt7530_port_change_mtu(struct dsa_switch
+@@ -1157,7 +1156,7 @@ mt7530_port_change_mtu(struct dsa_switch
mt7530_mii_write(priv, MT7530_GMACCR, val);
return 0;
}
-@@ -1954,10 +1953,10 @@ mt7530_irq_thread_fn(int irq, void *dev_
+@@ -1958,10 +1957,10 @@ mt7530_irq_thread_fn(int irq, void *dev_
u32 val;
int p;
for (p = 0; p < MT7530_NUM_PHYS; p++) {
if (BIT(p) & val) {
-@@ -1993,7 +1992,7 @@ mt7530_irq_bus_lock(struct irq_data *d)
+@@ -1997,7 +1996,7 @@ mt7530_irq_bus_lock(struct irq_data *d)
{
struct mt7530_priv *priv = irq_data_get_irq_chip_data(d);
}
static void
-@@ -2002,7 +2001,7 @@ mt7530_irq_bus_sync_unlock(struct irq_da
+@@ -2006,7 +2005,7 @@ mt7530_irq_bus_sync_unlock(struct irq_da
struct mt7530_priv *priv = irq_data_get_irq_chip_data(d);
mt7530_mii_write(priv, MT7530_SYS_INT_EN, priv->irq_enable);
struct mt7530_priv *priv = ds->priv;
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
-@@ -687,24 +687,6 @@ enum p5_interface_select {
+@@ -689,24 +689,6 @@ enum p5_interface_select {
P5_INTF_SEL_GMAC5_SGMII,
};
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -3173,44 +3173,21 @@ static const struct of_device_id mt7530_
+@@ -3177,44 +3177,21 @@ static const struct of_device_id mt7530_
MODULE_DEVICE_TABLE(of, mt7530_of_match);
static int
if (!priv->info)
return -EINVAL;
-@@ -3224,23 +3201,53 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3228,23 +3205,53 @@ mt7530_probe(struct mdio_device *mdiodev
return -EINVAL;
priv->id = priv->info->id;
priv->reset = devm_gpiod_get_optional(&mdiodev->dev, "reset",
GPIOD_OUT_LOW);
if (IS_ERR(priv->reset)) {
-@@ -3249,12 +3256,15 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3253,12 +3260,15 @@ mt7530_probe(struct mdio_device *mdiodev
}
}
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -3291,6 +3291,17 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -3295,6 +3295,17 @@ mt7530_probe(struct mdio_device *mdiodev
}
static void
mt7530_remove(struct mdio_device *mdiodev)
{
struct mt7530_priv *priv = dev_get_drvdata(&mdiodev->dev);
-@@ -3309,15 +3320,10 @@ mt7530_remove(struct mdio_device *mdiode
+@@ -3313,15 +3324,10 @@ mt7530_remove(struct mdio_device *mdiode
dev_err(priv->dev, "Failed to disable io pwr: %d\n",
ret);
static u32
mt7530_mii_read(struct mt7530_priv *priv, u32 reg)
{
-@@ -2971,72 +2922,6 @@ static const struct phylink_pcs_ops mt75
+@@ -2975,72 +2926,6 @@ static const struct phylink_pcs_ops mt75
.pcs_an_restart = mt7530_pcs_an_restart,
};
static int
mt753x_setup(struct dsa_switch *ds)
{
-@@ -3095,7 +2980,7 @@ static int mt753x_set_mac_eee(struct dsa
+@@ -3099,7 +2984,7 @@ static int mt753x_set_mac_eee(struct dsa
return 0;
}
.get_tag_protocol = mtk_get_tag_protocol,
.setup = mt753x_setup,
.get_strings = mt7530_get_strings,
-@@ -3129,8 +3014,9 @@ static const struct dsa_switch_ops mt753
+@@ -3133,8 +3018,9 @@ static const struct dsa_switch_ops mt753
.get_mac_eee = mt753x_get_mac_eee,
.set_mac_eee = mt753x_set_mac_eee,
};
[ID_MT7621] = {
.id = ID_MT7621,
.pcs_ops = &mt7530_pcs_ops,
-@@ -3163,16 +3049,9 @@ static const struct mt753x_info mt753x_t
+@@ -3167,16 +3053,9 @@ static const struct mt753x_info mt753x_t
.mac_port_config = mt7531_mac_config,
},
};
mt7530_probe_common(struct mt7530_priv *priv)
{
struct device *dev = priv->dev;
-@@ -3209,88 +3088,9 @@ mt7530_probe_common(struct mt7530_priv *
+@@ -3213,88 +3092,9 @@ mt7530_probe_common(struct mt7530_priv *
return 0;
}
mt7530_remove_common(struct mt7530_priv *priv)
{
if (priv->irq)
-@@ -3300,55 +3100,7 @@ mt7530_remove_common(struct mt7530_priv
+@@ -3304,55 +3104,7 @@ mt7530_remove_common(struct mt7530_priv
mutex_destroy(&priv->reg_mutex);
}
MODULE_DESCRIPTION("Driver for Mediatek MT7530 Switch");
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
-@@ -812,4 +812,10 @@ static inline void INIT_MT7530_DUMMY_POL
+@@ -814,4 +814,10 @@ static inline void INIT_MT7530_DUMMY_POL
p->reg = reg;
}
+MODULE_LICENSE("GPL");
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -2001,6 +2001,47 @@ static const struct irq_domain_ops mt753
+@@ -2005,6 +2005,47 @@ static const struct irq_domain_ops mt753
};
static void
mt7530_setup_mdio_irq(struct mt7530_priv *priv)
{
struct dsa_switch *ds = priv->ds;
-@@ -2034,8 +2075,15 @@ mt7530_setup_irq(struct mt7530_priv *pri
+@@ -2038,8 +2079,15 @@ mt7530_setup_irq(struct mt7530_priv *pri
return priv->irq ? : -EINVAL;
}
if (!priv->irq_domain) {
dev_err(dev, "failed to create IRQ domain\n");
return -ENOMEM;
-@@ -2534,6 +2582,25 @@ static void mt7531_mac_port_get_caps(str
+@@ -2538,6 +2586,25 @@ static void mt7531_mac_port_get_caps(str
}
}
static int
mt753x_pad_setup(struct dsa_switch *ds, const struct phylink_link_state *state)
{
-@@ -2610,6 +2677,17 @@ static bool mt753x_is_mac_port(u32 port)
+@@ -2614,6 +2681,17 @@ static bool mt753x_is_mac_port(u32 port)
}
static int
mt7531_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
phy_interface_t interface)
{
-@@ -2679,7 +2757,8 @@ mt753x_phylink_mac_config(struct dsa_swi
+@@ -2683,7 +2761,8 @@ mt753x_phylink_mac_config(struct dsa_swi
switch (port) {
case 0 ... 4: /* Internal phy */
goto unsupported;
break;
case 5: /* 2nd cpu port with phy of port 0 or 4 / external phy */
-@@ -2757,7 +2836,8 @@ static void mt753x_phylink_mac_link_up(s
+@@ -2761,7 +2840,8 @@ static void mt753x_phylink_mac_link_up(s
/* MT753x MAC works in 1G full duplex mode for all up-clocked
* variants.
*/
(phy_interface_mode_is_8023z(interface))) {
speed = SPEED_1000;
duplex = DUPLEX_FULL;
-@@ -2837,6 +2917,21 @@ mt7531_cpu_port_config(struct dsa_switch
+@@ -2841,6 +2921,21 @@ mt7531_cpu_port_config(struct dsa_switch
return 0;
}
static void mt753x_phylink_get_caps(struct dsa_switch *ds, int port,
struct phylink_config *config)
{
-@@ -2982,6 +3077,27 @@ static int mt753x_set_mac_eee(struct dsa
+@@ -2986,6 +3081,27 @@ static int mt753x_set_mac_eee(struct dsa
return 0;
}
const struct dsa_switch_ops mt7530_switch_ops = {
.get_tag_protocol = mtk_get_tag_protocol,
.setup = mt753x_setup,
-@@ -3050,6 +3166,17 @@ const struct mt753x_info mt753x_table[]
+@@ -3054,6 +3170,17 @@ const struct mt753x_info mt753x_table[]
.mac_port_get_caps = mt7531_mac_port_get_caps,
.mac_port_config = mt7531_mac_config,
},
MT7531_MIRROR_MASK : MIRROR_MASK)
/* Registers for BPDU and PAE frame control*/
-@@ -300,9 +301,8 @@ enum mt7530_vlan_port_acc_frm {
+@@ -302,9 +303,8 @@ enum mt7530_vlan_port_acc_frm {
MT7531_FORCE_DPX | \
MT7531_FORCE_RX_FC | \
MT7531_FORCE_TX_FC)
}
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -3044,6 +3044,12 @@ mt753x_setup(struct dsa_switch *ds)
+@@ -3048,6 +3048,12 @@ mt753x_setup(struct dsa_switch *ds)
if (ret && priv->irq)
mt7530_free_irq_common(priv);
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
-@@ -746,10 +746,10 @@ struct mt753x_info {
+@@ -748,10 +748,10 @@ struct mt753x_info {
* registers
* @p6_interface Holding the current port 6 interface
* @p5_intf_sel: Holding the current port 5 interface select
*/
struct mt7530_priv {
struct device *dev;
-@@ -768,7 +768,6 @@ struct mt7530_priv {
+@@ -770,7 +770,6 @@ struct mt7530_priv {
unsigned int p5_intf_sel;
u8 mirror_rx;
u8 mirror_tx;
struct mt7530_port ports[MT7530_NUM_PORTS];
struct mt753x_pcs pcs[MT7530_NUM_PORTS];
/* protect among processes for registers access*/
-@@ -776,6 +775,7 @@ struct mt7530_priv {
+@@ -778,6 +777,7 @@ struct mt7530_priv {
int irq;
struct irq_domain *irq_domain;
u32 irq_enable;
* @name: name of the struct -- the string is not copied internally
--- a/net/Makefile
+++ b/net/Makefile
-@@ -51,7 +51,7 @@ obj-$(CONFIG_TIPC) += tipc/
+@@ -52,7 +52,7 @@ obj-$(CONFIG_TIPC) += tipc/
obj-$(CONFIG_NETLABEL) += netlabel/
obj-$(CONFIG_IUCV) += iucv/
obj-$(CONFIG_SMC) += smc/
if (!pe)
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
-@@ -4183,6 +4183,8 @@ static const struct seq_operations vmall
+@@ -4187,6 +4187,8 @@ static const struct seq_operations vmall
static int __init proc_vmalloc_init(void)
{
struct rtnl_link {
rtnl_doit_func doit;
-@@ -4823,7 +4823,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -4840,7 +4840,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
brport_nla_put_flag(skb, flags, mask,
IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD) ||
brport_nla_put_flag(skb, flags, mask,
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -2248,6 +2248,10 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -2252,6 +2252,10 @@ mt7530_setup(struct dsa_switch *ds)
return -ENODEV;
}
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -2138,10 +2138,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2142,10 +2142,13 @@ mt7530_setup_mdio(struct mt7530_priv *pr
{
struct dsa_switch *ds = priv->ds;
struct device *dev = priv->dev;
bus = devm_mdiobus_alloc(dev);
if (!bus)
return -ENOMEM;
-@@ -2158,7 +2161,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
+@@ -2162,7 +2165,9 @@ mt7530_setup_mdio(struct mt7530_priv *pr
if (priv->irq)
mt7530_setup_mdio_irq(priv);