-LINUX_VERSION-5.15 = .139
-LINUX_KERNEL_HASH-5.15.139 = 9c68c10dfe18e59b892e940436dea6a18d167160d55e62563cf7282244d8044e
+LINUX_VERSION-5.15 = .140
+LINUX_KERNEL_HASH-5.15.140 = be2bee8b346f3ccb35879f16c80a323edda571e36190403805c14a9ea24e4a47
VM_BUG_ON_PAGE(tail > 2 && page_tail->mapping != TAIL_MAPPING,
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
-@@ -5178,6 +5178,7 @@ static void __mem_cgroup_free(struct mem
+@@ -5179,6 +5179,7 @@ static void __mem_cgroup_free(struct mem
static void mem_cgroup_free(struct mem_cgroup *memcg)
{
memcg_wb_domain_exit(memcg);
__mem_cgroup_free(memcg);
}
-@@ -5241,6 +5242,7 @@ static struct mem_cgroup *mem_cgroup_all
+@@ -5242,6 +5243,7 @@ static struct mem_cgroup *mem_cgroup_all
memcg->deferred_split_queue.split_queue_len = 0;
#endif
idr_replace(&mem_cgroup_idr, memcg, memcg->id.id);
/* will mmdrop() in finish_task_switch(). */
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
-@@ -6212,6 +6212,30 @@ static void mem_cgroup_move_task(void)
+@@ -6213,6 +6213,30 @@ static void mem_cgroup_move_task(void)
}
#endif
static int seq_puts_memcg_tunable(struct seq_file *m, unsigned long value)
{
if (value == PAGE_COUNTER_MAX)
-@@ -6555,6 +6579,7 @@ struct cgroup_subsys memory_cgrp_subsys
+@@ -6556,6 +6580,7 @@ struct cgroup_subsys memory_cgrp_subsys
.css_reset = mem_cgroup_css_reset,
.css_rstat_flush = mem_cgroup_css_rstat_flush,
.can_attach = mem_cgroup_can_attach,
mctz = soft_limit_tree_from_page(page);
if (!mctz)
return;
-@@ -3433,6 +3443,9 @@ unsigned long mem_cgroup_soft_limit_recl
+@@ -3434,6 +3444,9 @@ unsigned long mem_cgroup_soft_limit_recl
unsigned long excess;
unsigned long nr_scanned;
if (order > 0)
return 0;
-@@ -5321,6 +5334,7 @@ static int mem_cgroup_css_online(struct
+@@ -5322,6 +5335,7 @@ static int mem_cgroup_css_online(struct
if (unlikely(mem_cgroup_is_root(memcg)))
queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
2UL*HZ);
return 0;
}
-@@ -5347,6 +5361,7 @@ static void mem_cgroup_css_offline(struc
+@@ -5348,6 +5362,7 @@ static void mem_cgroup_css_offline(struc
memcg_offline_kmem(memcg);
reparent_shrinker_deferred(memcg);
wb_memcg_offline(memcg);
drain_all_stock(memcg);
-@@ -5358,6 +5373,7 @@ static void mem_cgroup_css_released(stru
+@@ -5359,6 +5374,7 @@ static void mem_cgroup_css_released(stru
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
invalidate_reclaim_iterators(memcg);
pl = kzalloc(sizeof(*pl), GFP_KERNEL);
if (!pl)
return ERR_PTR(-ENOMEM);
-@@ -946,9 +987,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
+@@ -947,9 +988,10 @@ EXPORT_SYMBOL_GPL(phylink_create);
* @pl: a pointer to a &struct phylink returned from phylink_create()
* @pcs: a pointer to the &struct phylink_pcs
*
*
* Please note that there are behavioural changes with the mac_config()
* callback if a PCS is present (denoting a newer setup) so removing a PCS
-@@ -959,6 +1001,14 @@ void phylink_set_pcs(struct phylink *pl,
+@@ -960,6 +1002,14 @@ void phylink_set_pcs(struct phylink *pl,
{
pl->pcs = pcs;
pl->pcs_ops = pcs->ops;
phy_interface_empty(config->supported_interfaces)) {
dev_err(config->dev,
"phylink: error: empty supported_interfaces but mac_select_pcs() method present\n");
-@@ -1220,6 +1227,7 @@ struct phylink *phylink_create(struct ph
+@@ -1221,6 +1228,7 @@ struct phylink *phylink_create(struct ph
return ERR_PTR(-EINVAL);
}
if (pl->pcs_ops) {
err = pl->pcs_ops->pcs_config(pl->pcs, pl->cur_link_an_mode,
state->interface,
-@@ -1260,6 +1285,7 @@ struct phylink *phylink_create(struct ph
+@@ -1261,6 +1286,7 @@ struct phylink *phylink_create(struct ph
pl->link_config.speed = SPEED_UNKNOWN;
pl->link_config.duplex = DUPLEX_UNKNOWN;
pl->link_config.an_enabled = true;
pl->mac_ops = mac_ops;
__set_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
timer_setup(&pl->link_poll, phylink_fixed_poll, 0);
-@@ -1651,6 +1677,8 @@ void phylink_start(struct phylink *pl)
+@@ -1652,6 +1678,8 @@ void phylink_start(struct phylink *pl)
if (pl->netdev)
netif_carrier_off(pl->netdev);
/* Apply the link configuration to the MAC when starting. This allows
* a fixed-link to start with the correct parameters, and also
* ensures that we set the appropriate advertisement for Serdes links.
-@@ -1661,6 +1689,8 @@ void phylink_start(struct phylink *pl)
+@@ -1662,6 +1690,8 @@ void phylink_start(struct phylink *pl)
*/
phylink_mac_initial_config(pl, true);
clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
phylink_run_resolve(pl);
-@@ -1680,16 +1710,9 @@ void phylink_start(struct phylink *pl)
+@@ -1681,16 +1711,9 @@ void phylink_start(struct phylink *pl)
poll = true;
}
if (poll)
mod_timer(&pl->link_poll, jiffies + HZ);
if (pl->phydev)
-@@ -1726,6 +1749,10 @@ void phylink_stop(struct phylink *pl)
+@@ -1727,6 +1750,10 @@ void phylink_stop(struct phylink *pl)
}
phylink_run_resolve_and_disable(pl, PHYLINK_DISABLE_STOPPED);
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
-@@ -2275,6 +2275,23 @@ struct btmtk_section_map {
+@@ -2287,6 +2287,23 @@ struct btmtk_section_map {
};
} __packed;
static void btusb_mtk_wmt_recv(struct urb *urb)
{
struct hci_dev *hdev = urb->context;
-@@ -3926,6 +3943,7 @@ static int btusb_probe(struct usb_interf
+@@ -3941,6 +3958,7 @@ static int btusb_probe(struct usb_interf
hdev->shutdown = btusb_mtk_shutdown;
hdev->manufacturer = 70;
hdev->cmd_timeout = btusb_mtk_cmd_timeout;
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
-@@ -2280,7 +2280,7 @@ static int btusb_set_bdaddr_mtk(struct h
+@@ -2292,7 +2292,7 @@ static int btusb_set_bdaddr_mtk(struct h
struct sk_buff *skb;
long ret;
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
-@@ -464,6 +464,9 @@ static const struct usb_device_id blackl
+@@ -476,6 +476,9 @@ static const struct usb_device_id blackl
{ USB_DEVICE(0x13d3, 0x3564), .driver_info = BTUSB_MEDIATEK |
BTUSB_WIDEBAND_SPEECH |
BTUSB_VALID_LE_STATES },
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
-@@ -455,6 +455,9 @@ static const struct usb_device_id blackl
+@@ -467,6 +467,9 @@ static const struct usb_device_id blackl
BTUSB_VALID_LE_STATES },
/* Additional MediaTek MT7921 Bluetooth devices */
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
-@@ -473,6 +473,9 @@ static const struct usb_device_id blackl
+@@ -485,6 +485,9 @@ static const struct usb_device_id blackl
{ USB_DEVICE(0x0489, 0xe0cd), .driver_info = BTUSB_MEDIATEK |
BTUSB_WIDEBAND_SPEECH |
BTUSB_VALID_LE_STATES },
static void phylink_mac_pcs_get_state(struct phylink *pl,
struct phylink_link_state *state)
{
-@@ -3014,6 +3013,52 @@ void phylink_mii_c22_pcs_get_state(struc
+@@ -3015,6 +3014,52 @@ void phylink_mii_c22_pcs_get_state(struc
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_get_state);
/**
* phylink_mii_c22_pcs_set_advertisement() - configure the clause 37 PCS
* advertisement
* @pcs: a pointer to a &struct mdio_device.
-@@ -3085,6 +3130,46 @@ int phylink_mii_c22_pcs_set_advertisemen
+@@ -3086,6 +3131,46 @@ int phylink_mii_c22_pcs_set_advertisemen
EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_set_advertisement);
/**
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -7703,7 +7703,7 @@ static int nft_register_flowtable_net_ho
+@@ -7708,7 +7708,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
/*
* Some chips power-up with all sectors locked by default.
-@@ -1703,6 +1707,7 @@ static int cfi_intelext_write_words (str
+@@ -1719,6 +1723,7 @@ static int cfi_intelext_write_words (str
}
static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
unsigned long adr, const struct kvec **pvec,
unsigned long *pvec_seek, int len)
-@@ -1931,6 +1936,7 @@ static int cfi_intelext_write_buffers (s
+@@ -1947,6 +1952,7 @@ static int cfi_intelext_write_buffers (s
return cfi_intelext_writev(mtd, &vec, 1, to, retlen);
}
priv->adap.algo = &hix5hd2_i2c_algorithm;
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
-@@ -1111,7 +1111,7 @@ static void dmi_check_onboard_device(u8
+@@ -1110,7 +1110,7 @@ static void dmi_check_onboard_device(u8
memset(&info, 0, sizeof(struct i2c_board_info));
info.addr = dmi_devices[i].i2c_addr;
i2c_new_client_device(adap, &info);
break;
}
-@@ -1267,7 +1267,7 @@ static void register_dell_lis3lv02d_i2c_
+@@ -1266,7 +1266,7 @@ static void register_dell_lis3lv02d_i2c_
memset(&info, 0, sizeof(struct i2c_board_info));
info.addr = dell_lis3lv02d_devices[i].i2c_addr;
/* Slow down if we can't sense SCL */
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
-@@ -1403,7 +1403,7 @@ static int i2c_pxa_probe(struct platform
+@@ -1463,7 +1463,7 @@ static int i2c_pxa_probe(struct platform
spin_lock_init(&i2c->lock);
init_waitqueue_head(&i2c->wait);
* managed to set the command line, unless CONFIG_CMDLINE_FORCE
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -2057,6 +2057,14 @@ config CMDLINE_FORCE
+@@ -2059,6 +2059,14 @@ config CMDLINE_FORCE
endchoice
+++ /dev/null
-From ea8444b6fa5955c16b713dc83310882b93b44e62 Mon Sep 17 00:00:00 2001
-From: Robert Marko <robert.marko@sartura.hr>
-Date: Fri, 10 Nov 2023 10:10:29 +0100
-Subject: [PATCH] Revert "i2c: pxa: move to generic GPIO recovery"
-
-This reverts commit 0b01392c18b9993a584f36ace1d61118772ad0ca.
-
-Conversion of PXA to generic I2C recovery, makes the I2C bus completely
-lock up if recovery pinctrl is present in the DT and I2C recovery is
-enabled.
-
-So, until the generic I2C recovery can also work with PXA lets revert
-to have working I2C and I2C recovery again.
-
-Signed-off-by: Robert Marko <robert.marko@sartura.hr>
-Cc: stable@vger.kernel.org # 5.11+
----
- drivers/i2c/busses/i2c-pxa.c | 76 ++++++++++++++++++++++++++++++++----
- 1 file changed, 68 insertions(+), 8 deletions(-)
-
---- a/drivers/i2c/busses/i2c-pxa.c
-+++ b/drivers/i2c/busses/i2c-pxa.c
-@@ -264,6 +264,9 @@ struct pxa_i2c {
- u32 hs_mask;
-
- struct i2c_bus_recovery_info recovery;
-+ struct pinctrl *pinctrl;
-+ struct pinctrl_state *pinctrl_default;
-+ struct pinctrl_state *pinctrl_recovery;
- };
-
- #define _IBMR(i2c) ((i2c)->reg_ibmr)
-@@ -1302,12 +1305,13 @@ static void i2c_pxa_prepare_recovery(str
- */
- gpiod_set_value(i2c->recovery.scl_gpiod, ibmr & IBMR_SCLS);
- gpiod_set_value(i2c->recovery.sda_gpiod, ibmr & IBMR_SDAS);
-+
-+ WARN_ON(pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_recovery));
- }
-
- static void i2c_pxa_unprepare_recovery(struct i2c_adapter *adap)
- {
- struct pxa_i2c *i2c = adap->algo_data;
-- struct i2c_bus_recovery_info *bri = adap->bus_recovery_info;
- u32 isr;
-
- /*
-@@ -1321,7 +1325,7 @@ static void i2c_pxa_unprepare_recovery(s
- i2c_pxa_do_reset(i2c);
- }
-
-- WARN_ON(pinctrl_select_state(bri->pinctrl, bri->pins_default));
-+ WARN_ON(pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_default));
-
- dev_dbg(&i2c->adap.dev, "recovery: IBMR 0x%08x ISR 0x%08x\n",
- readl(_IBMR(i2c)), readl(_ISR(i2c)));
-@@ -1343,20 +1347,76 @@ static int i2c_pxa_init_recovery(struct
- if (IS_ENABLED(CONFIG_I2C_PXA_SLAVE))
- return 0;
-
-- bri->pinctrl = devm_pinctrl_get(dev);
-- if (PTR_ERR(bri->pinctrl) == -ENODEV) {
-- bri->pinctrl = NULL;
-+ i2c->pinctrl = devm_pinctrl_get(dev);
-+ if (PTR_ERR(i2c->pinctrl) == -ENODEV)
-+ i2c->pinctrl = NULL;
-+ if (IS_ERR(i2c->pinctrl))
-+ return PTR_ERR(i2c->pinctrl);
-+
-+ if (!i2c->pinctrl)
-+ return 0;
-+
-+ i2c->pinctrl_default = pinctrl_lookup_state(i2c->pinctrl,
-+ PINCTRL_STATE_DEFAULT);
-+ i2c->pinctrl_recovery = pinctrl_lookup_state(i2c->pinctrl, "recovery");
-+
-+ if (IS_ERR(i2c->pinctrl_default) || IS_ERR(i2c->pinctrl_recovery)) {
-+ dev_info(dev, "missing pinmux recovery information: %ld %ld\n",
-+ PTR_ERR(i2c->pinctrl_default),
-+ PTR_ERR(i2c->pinctrl_recovery));
-+ return 0;
-+ }
-+
-+ /*
-+ * Claiming GPIOs can influence the pinmux state, and may glitch the
-+ * I2C bus. Do this carefully.
-+ */
-+ bri->scl_gpiod = devm_gpiod_get(dev, "scl", GPIOD_OUT_HIGH_OPEN_DRAIN);
-+ if (bri->scl_gpiod == ERR_PTR(-EPROBE_DEFER))
-+ return -EPROBE_DEFER;
-+ if (IS_ERR(bri->scl_gpiod)) {
-+ dev_info(dev, "missing scl gpio recovery information: %pe\n",
-+ bri->scl_gpiod);
-+ return 0;
-+ }
-+
-+ /*
-+ * We have SCL. Pull SCL low and wait a bit so that SDA glitches
-+ * have no effect.
-+ */
-+ gpiod_direction_output(bri->scl_gpiod, 0);
-+ udelay(10);
-+ bri->sda_gpiod = devm_gpiod_get(dev, "sda", GPIOD_OUT_HIGH_OPEN_DRAIN);
-+
-+ /* Wait a bit in case of a SDA glitch, and then release SCL. */
-+ udelay(10);
-+ gpiod_direction_output(bri->scl_gpiod, 1);
-+
-+ if (bri->sda_gpiod == ERR_PTR(-EPROBE_DEFER))
-+ return -EPROBE_DEFER;
-+
-+ if (IS_ERR(bri->sda_gpiod)) {
-+ dev_info(dev, "missing sda gpio recovery information: %pe\n",
-+ bri->sda_gpiod);
- return 0;
- }
-- if (IS_ERR(bri->pinctrl))
-- return PTR_ERR(bri->pinctrl);
-
- bri->prepare_recovery = i2c_pxa_prepare_recovery;
- bri->unprepare_recovery = i2c_pxa_unprepare_recovery;
-+ bri->recover_bus = i2c_generic_scl_recovery;
-
- i2c->adap.bus_recovery_info = bri;
-
-- return 0;
-+ /*
-+ * Claiming GPIOs can change the pinmux state, which confuses the
-+ * pinctrl since pinctrl's idea of the current setting is unaffected
-+ * by the pinmux change caused by claiming the GPIO. Work around that
-+ * by switching pinctrl to the GPIO state here. We do it this way to
-+ * avoid glitching the I2C bus.
-+ */
-+ pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_recovery);
-+
-+ return pinctrl_select_state(i2c->pinctrl, i2c->pinctrl_default);
- }
-
- static int i2c_pxa_probe(struct platform_device *dev)
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
-@@ -5858,3 +5859,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5879,3 +5880,34 @@ static void nvidia_ion_ahci_fixup(struct
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
phydev->mii_ts->link_state(phydev->mii_ts, phydev);
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -1369,7 +1369,8 @@ void phylink_destroy(struct phylink *pl)
+@@ -1370,7 +1370,8 @@ void phylink_destroy(struct phylink *pl)
}
EXPORT_SYMBOL_GPL(phylink_destroy);
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -1990,6 +1990,11 @@ int phylink_ethtool_ksettings_set(struct
+@@ -1991,6 +1991,11 @@ int phylink_ethtool_ksettings_set(struct
* the presence of a PHY, this should not be changed as that
* should be determined from the media side advertisement.
*/
return phy_ethtool_ksettings_set(pl->phydev, kset);
}
-@@ -2293,8 +2298,11 @@ int phylink_ethtool_get_eee(struct phyli
+@@ -2294,8 +2299,11 @@ int phylink_ethtool_get_eee(struct phyli
ASSERT_RTNL();
return ret;
}
-@@ -2311,8 +2319,11 @@ int phylink_ethtool_set_eee(struct phyli
+@@ -2312,8 +2320,11 @@ int phylink_ethtool_set_eee(struct phyli
ASSERT_RTNL();