static inline int mmc_blk_part_switch(struct mmc_card *card,
unsigned int part_type);
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
-@@ -3321,6 +3328,8 @@ static int mmc_blk_probe(struct mmc_card
+@@ -3320,6 +3327,8 @@ static int mmc_blk_probe(struct mmc_card
{
struct mmc_blk_data *md;
int ret = 0;
/*
* Check that the card supports the command class(es) we need.
-@@ -3328,7 +3337,16 @@ static int mmc_blk_probe(struct mmc_card
+@@ -3327,7 +3336,16 @@ static int mmc_blk_probe(struct mmc_card
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
return -ENODEV;
card->complete_wq = alloc_workqueue("mmc_complete",
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
-@@ -3343,6 +3361,17 @@ static int mmc_blk_probe(struct mmc_card
+@@ -3342,6 +3360,17 @@ static int mmc_blk_probe(struct mmc_card
goto out_free;
}
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -3466,8 +3475,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3476,8 +3485,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -4452,7 +4457,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4462,7 +4467,13 @@ static int lan78xx_probe(struct usb_inte
if (ret < 0)
goto out4;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1435,6 +1435,9 @@ static int lan78xx_link_reset(struct lan
+@@ -1598,6 +1598,9 @@ static int lan78xx_link_reset(struct lan
if (unlikely(ret < 0))
return ret;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1935,6 +1935,7 @@ static const struct ethtool_ops lan78xx_
+@@ -2098,6 +2098,7 @@ static const struct ethtool_ops lan78xx_
.set_link_ksettings = lan78xx_set_link_ksettings,
.get_regs_len = lan78xx_get_regs_len,
.get_regs = lan78xx_get_regs,
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2917,6 +2917,11 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2927,6 +2927,11 @@ static int lan78xx_reset(struct lan78xx_
int ret;
u32 buf;
u8 sig;
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
if (ret < 0)
-@@ -2985,6 +2990,10 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2995,6 +3000,10 @@ static int lan78xx_reset(struct lan78xx_
buf |= HW_CFG_CLK125_EN_;
buf |= HW_CFG_REFCLK25_EN_;
ret = lan78xx_write_reg(dev, HW_CFG, buf);
if (ret < 0)
return ret;
-@@ -3087,6 +3096,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -3097,6 +3106,9 @@ static int lan78xx_reset(struct lan78xx_
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
}
}
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2674,7 +2674,7 @@ static void bcmgenet_init_tx_ring(struct
+@@ -2666,7 +2666,7 @@ static void bcmgenet_init_tx_ring(struct
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
/* Disable rate control for now */
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
TDMA_FLOW_PERIOD);
-@@ -4073,8 +4073,10 @@ static int bcmgenet_probe(struct platfor
+@@ -4066,8 +4066,10 @@ static int bcmgenet_probe(struct platfor
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
/* Set default coalescing parameters */
kref_init(&job->refcount);
return 0;
-@@ -1414,3 +1459,14 @@ fail:
+@@ -1416,3 +1461,14 @@ fail:
return ret;
}
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -65,6 +65,9 @@
+@@ -64,6 +64,9 @@
/* Forward declarations */
static void bcmgenet_set_rx_mode(struct net_device *dev);
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -2512,6 +2515,11 @@ static void reset_umac(struct bcmgenet_p
+@@ -2504,6 +2507,11 @@ static void reset_umac(struct bcmgenet_p
bcmgenet_rbuf_ctrl_set(priv, 0);
udelay(10);
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -65,7 +65,7 @@
+@@ -64,7 +64,7 @@
/* Forward declarations */
static void bcmgenet_set_rx_mode(struct net_device *dev);
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -68,6 +68,9 @@ static void bcmgenet_set_rx_mode(struct
+@@ -67,6 +67,9 @@ static void bcmgenet_set_rx_mode(struct
static bool skip_umac_reset = false;
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -3359,6 +3362,17 @@ static int bcmgenet_open(struct net_devi
+@@ -3352,6 +3355,17 @@ static int bcmgenet_open(struct net_devi
bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4961,6 +4961,7 @@ static const struct {
+@@ -4985,6 +4985,7 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
int ret = 0;
bool invalid_bdaddr;
size_t i;
-@@ -4989,7 +4990,8 @@ static int hci_dev_setup_sync(struct hci
+@@ -5013,7 +5014,8 @@ static int hci_dev_setup_sync(struct hci
test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
if (!ret) {
if (test_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks) &&
.compatible = "rockchip,rk3588-dwcmshc",
.data = &sdhci_dwcmshc_rk35xx_pdata,
},
-@@ -1470,13 +1498,32 @@ static int dwcmshc_probe(struct platform
- priv->bus_clk = devm_clk_get(dev, "bus");
- if (!IS_ERR(priv->bus_clk))
- clk_prepare_enable(priv->bus_clk);
+@@ -1473,13 +1501,32 @@ static int dwcmshc_probe(struct platform
+ if (err)
+ goto err_clk;
+ }
+
+ pltfm_host->timeout_clk = devm_clk_get(dev, "timeout");
+ if (!IS_ERR(pltfm_host->timeout_clk))
+ err = clk_prepare_enable(pltfm_host->timeout_clk);
+ if (err)
-+ goto free_pltfm;
++ goto err_bus_clk;
+
+ priv->sdio_clk = devm_clk_get_optional(&pdev->dev, "sdio");
-+ }
-+
+ }
+
+- err = mmc_of_parse(host->mmc);
+ pltfm_host->timeout_clk = devm_clk_get(&pdev->dev, "timeout");
+ if (IS_ERR(pltfm_host->timeout_clk)) {
+ err = PTR_ERR(pltfm_host->timeout_clk);
+ dev_err(&pdev->dev, "failed to get timeout clk: %d\n", err);
-+ goto free_pltfm;
- }
++ goto err_bus_clk;
++ }
+ err = clk_prepare_enable(pltfm_host->timeout_clk);
-+ if (err)
-+ goto free_pltfm;
-
- err = mmc_of_parse(host->mmc);
if (err)
- goto err_clk;
+ goto err_bus_clk;
++ err = mmc_of_parse(host->mmc);
++ if (err)
++ goto err_timeout_clk;
++
sdhci_get_of_property(pdev);
+ sdhci_enable_v4_mode(host);
priv->vendor_specific_area1 =
sdhci_readl(host, DWCMSHC_P_VENDOR_AREA1) & DWCMSHC_AREA1_MASK;
-@@ -1536,6 +1583,7 @@ err_rpm:
+@@ -1491,7 +1538,7 @@ static int dwcmshc_probe(struct platform
+ if (pltfm_data->init) {
+ err = pltfm_data->init(&pdev->dev, host, priv);
+ if (err)
+- goto err_bus_clk;
++ goto err_timeout_clk;
+ }
+
+ #ifdef CONFIG_ACPI
+@@ -1537,6 +1584,8 @@ err_setup_host:
+ err_rpm:
+ pm_runtime_disable(dev);
pm_runtime_put_noidle(dev);
++err_timeout_clk:
++ clk_disable_unprepare(pltfm_host->timeout_clk);
+ err_bus_clk:
+ clk_disable_unprepare(priv->bus_clk);
err_clk:
+@@ -1574,6 +1623,7 @@ static void dwcmshc_remove(struct platfo
+
clk_disable_unprepare(pltfm_host->clk);
-+ clk_disable_unprepare(pltfm_host->timeout_clk);
clk_disable_unprepare(priv->bus_clk);
++ clk_disable_unprepare(pltfm_host->timeout_clk);
clk_bulk_disable_unprepare(priv->num_other_clks, priv->other_clks);
- free_pltfm:
+ sdhci_pltfm_free(pdev);
+ }
--- a/drivers/mmc/host/sdhci-pltfm.c
+++ b/drivers/mmc/host/sdhci-pltfm.c
@@ -32,6 +32,14 @@ unsigned int sdhci_pltfm_clk_get_max_clo
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
-@@ -2551,6 +2551,13 @@ config SENSORS_INTEL_M10_BMC_HWMON
+@@ -2554,6 +2554,13 @@ config SENSORS_INTEL_M10_BMC_HWMON
sensors monitor various telemetry data of different components on the
card, e.g. board temperature, FPGA core temperature/voltage/current.
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2438,7 +2438,26 @@ static int lan78xx_phy_init(struct lan78
+@@ -2601,7 +2601,26 @@ static int lan78xx_phy_init(struct lan78
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1702,14 +1702,11 @@ static int lan78xx_get_eee(struct net_de
+@@ -1865,14 +1865,11 @@ static int lan78xx_get_eee(struct net_de
if (ret < 0)
goto exit;
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4961,7 +4961,8 @@ static const struct {
+@@ -4985,7 +4985,8 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
static void
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
-@@ -1050,6 +1050,11 @@ v3d_submit_cl_ioctl(struct drm_device *d
+@@ -1052,6 +1052,11 @@ v3d_submit_cl_ioctl(struct drm_device *d
goto fail;
if (args->perfmon_id) {
render->base.perfmon = v3d_perfmon_find(v3d_priv,
args->perfmon_id);
-@@ -1265,6 +1270,11 @@ v3d_submit_csd_ioctl(struct drm_device *
+@@ -1267,6 +1272,11 @@ v3d_submit_csd_ioctl(struct drm_device *
goto fail;
if (args->perfmon_id) {
+++ /dev/null
-From b35108a51cf7bab58d7eace1267d7965978bcdb8 Mon Sep 17 00:00:00 2001
-From: Easwar Hariharan <eahariha@linux.microsoft.com>
-Date: Wed, 30 Oct 2024 17:47:35 +0000
-Subject: [PATCH] jiffies: Define secs_to_jiffies()
-
-secs_to_jiffies() is defined in hci_event.c and cannot be reused by
-other call sites. Hoist it into the core code to allow conversion of the
-~1150 usages of msecs_to_jiffies() that either:
-
- - use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or
- - have timeouts that are denominated in seconds (i.e. end in 000)
-
-It's implemented as a macro to allow usage in static initializers.
-
-This will also allow conversion of yet more sites that use (sec * HZ)
-directly, and improve their readability.
-
-Suggested-by: Michael Kelley <mhklinux@outlook.com>
-Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Reviewed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
-Link: https://lore.kernel.org/all/20241030-open-coded-timeouts-v3-1-9ba123facf88@linux.microsoft.com
----
- include/linux/jiffies.h | 13 +++++++++++++
- net/bluetooth/hci_event.c | 2 --
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
---- a/include/linux/jiffies.h
-+++ b/include/linux/jiffies.h
-@@ -526,6 +526,19 @@ static __always_inline unsigned long mse
- }
- }
-
-+/**
-+ * secs_to_jiffies: - convert seconds to jiffies
-+ * @_secs: time in seconds
-+ *
-+ * Conversion is done by simple multiplication with HZ
-+ *
-+ * secs_to_jiffies() is defined as a macro rather than a static inline
-+ * function so it can be used in static initializers.
-+ *
-+ * Return: jiffies value
-+ */
-+#define secs_to_jiffies(_secs) ((_secs) * HZ)
-+
- extern unsigned long __usecs_to_jiffies(const unsigned int u);
- #if !(USEC_PER_SEC % HZ)
- static inline unsigned long _usecs_to_jiffies(const unsigned int u)
---- a/net/bluetooth/hci_event.c
-+++ b/net/bluetooth/hci_event.c
-@@ -42,8 +42,6 @@
- #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
- "\x00\x00\x00\x00\x00\x00\x00\x00"
-
--#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000)
--
- /* Handle HCI Event packets */
-
- static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff *skb,
+++ /dev/null
-From bb2784d9ab49587ba4fbff37a319fff2924db289 Mon Sep 17 00:00:00 2001
-From: Easwar Hariharan <eahariha@linux.microsoft.com>
-Date: Thu, 30 Jan 2025 19:26:58 +0000
-Subject: [PATCH] jiffies: Cast to unsigned long in secs_to_jiffies()
- conversion
-
-While converting users of msecs_to_jiffies(), lkp reported that some range
-checks would always be true because of the mismatch between the implied int
-value of secs_to_jiffies() vs the unsigned long return value of the
-msecs_to_jiffies() calls it was replacing.
-
-Fix this by casting the secs_to_jiffies() input value to unsigned long.
-
-Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
-Reported-by: kernel test robot <lkp@intel.com>
-Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Cc: stable@vger.kernel.org
-Link: https://lore.kernel.org/all/20250130192701.99626-1-eahariha@linux.microsoft.com
-Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
----
- include/linux/jiffies.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/include/linux/jiffies.h
-+++ b/include/linux/jiffies.h
-@@ -537,7 +537,7 @@ static __always_inline unsigned long mse
- *
- * Return: jiffies value
- */
--#define secs_to_jiffies(_secs) ((_secs) * HZ)
-+#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
-
- extern unsigned long __usecs_to_jiffies(const unsigned int u);
- #if !(USEC_PER_SEC % HZ)
+ if (qd->min_netlen > len)
+ qd->min_netlen = len;
- len += q->rate_overhead;
+ len = max((s32)len + q->rate_overhead, (s32)q->rate_mpu);
-@@ -1382,10 +1386,10 @@ static u32 cake_calc_overhead(struct cak
+@@ -1379,10 +1383,10 @@ static u32 cake_calc_overhead(struct cak
len += (len + 63) / 64;
}
return len;
}
-@@ -1587,7 +1591,7 @@ static unsigned int cake_drop(struct Qdi
+@@ -1584,7 +1588,7 @@ static unsigned int cake_drop(struct Qdi
b->tin_dropped++;
sch->qstats.drops++;
cake_advance_shaper(q, b, skb, now, true);
__qdisc_drop(skb, to_free);
-@@ -1657,7 +1661,8 @@ static u8 cake_handle_diffserv(struct sk
+@@ -1654,7 +1658,8 @@ static u8 cake_handle_diffserv(struct sk
static struct cake_tin_data *cake_select_tin(struct Qdisc *sch,
struct sk_buff *skb)
{
u32 tin, mark;
bool wash;
u8 dscp;
-@@ -1674,24 +1679,24 @@ static struct cake_tin_data *cake_select
+@@ -1671,24 +1676,24 @@ static struct cake_tin_data *cake_select
if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT)
tin = 0;
}
static u32 cake_classify(struct Qdisc *sch, struct cake_tin_data **t,
-@@ -1747,7 +1752,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1744,7 +1749,7 @@ static s32 cake_enqueue(struct sk_buff *
bool same_flow = false;
/* choose flow to insert into */
if (idx == 0) {
if (ret & __NET_XMIT_BYPASS)
qdisc_qstats_drop(sch);
-@@ -1782,7 +1787,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1779,7 +1784,7 @@ static s32 cake_enqueue(struct sk_buff *
if (unlikely(len > b->max_skblen))
b->max_skblen = len;
struct sk_buff *segs, *nskb;
netdev_features_t features = netif_skb_features(skb);
unsigned int slen = 0, numsegs = 0;
-@@ -1823,7 +1828,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1820,7 +1825,7 @@ static s32 cake_enqueue(struct sk_buff *
get_cobalt_cb(skb)->adjusted_len = cake_overhead(q, skb);
flow_queue_add(flow, skb);
ack = cake_ack_filter(q, flow);
if (ack) {
-@@ -1832,7 +1837,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1829,7 +1834,7 @@ static s32 cake_enqueue(struct sk_buff *
ack_pkt_len = qdisc_pkt_len(ack);
b->bytes += ack_pkt_len;
q->buffer_used += skb->truesize - ack->truesize;
cake_advance_shaper(q, b, ack, now, true);
qdisc_tree_reduce_backlog(sch, 1, ack_pkt_len);
-@@ -1855,7 +1860,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1852,7 +1857,7 @@ static s32 cake_enqueue(struct sk_buff *
cake_heapify_up(q, b->overflow_idx[idx]);
/* incoming bandwidth capacity estimate */
u64 packet_interval = \
ktime_to_ns(ktime_sub(now, q->last_packet_time));
-@@ -1887,7 +1892,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1884,7 +1889,7 @@ static s32 cake_enqueue(struct sk_buff *
if (ktime_after(now,
ktime_add_ms(q->last_reconfig_time,
250))) {
cake_reconfigure(sch);
}
}
-@@ -1907,7 +1912,7 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1904,7 +1909,7 @@ static s32 cake_enqueue(struct sk_buff *
flow->set = CAKE_SET_SPARSE;
b->sparse_flow_count++;
} else if (flow->set == CAKE_SET_SPARSE_WAIT) {
/* this flow was empty, accounted as a sparse flow, but actually
* in the bulk rotation.
-@@ -1916,8 +1921,8 @@ static s32 cake_enqueue(struct sk_buff *
+@@ -1913,8 +1918,8 @@ static s32 cake_enqueue(struct sk_buff *
b->sparse_flow_count--;
b->bulk_flow_count++;
}
if (q->buffer_used > q->buffer_max_used)
-@@ -2103,8 +2108,8 @@ retry:
+@@ -2100,8 +2105,8 @@ retry:
b->sparse_flow_count--;
b->bulk_flow_count++;
flow->set = CAKE_SET_BULK;
} else {
-@@ -2116,7 +2121,7 @@ retry:
+@@ -2113,7 +2118,7 @@ retry:
}
}
list_move_tail(&flow->flowchain, &b->old_flows);
goto retry;
-@@ -2140,8 +2145,8 @@ retry:
+@@ -2137,8 +2142,8 @@ retry:
if (flow->set == CAKE_SET_BULK) {
b->bulk_flow_count--;
b->decaying_flow_count++;
} else if (flow->set == CAKE_SET_SPARSE ||
-@@ -2159,8 +2164,8 @@ retry:
+@@ -2156,8 +2161,8 @@ retry:
else if (flow->set == CAKE_SET_BULK) {
b->bulk_flow_count--;
} else
b->decaying_flow_count--;
-@@ -2172,13 +2177,13 @@ retry:
+@@ -2169,13 +2174,13 @@ retry:
/* Last packet in queue may be marked, shouldn't be dropped */
if (!cobalt_should_drop(&flow->cvars, &b->cparams, now, skb,
(b->bulk_flow_count *
len = cake_advance_shaper(q, b, skb,
now, true);
flow->deficit -= len;
-@@ -2189,7 +2194,7 @@ retry:
+@@ -2186,7 +2191,7 @@ retry:
qdisc_tree_reduce_backlog(sch, 1, qdisc_pkt_len(skb));
qdisc_qstats_drop(sch);
kfree_skb(skb);
goto retry;
}
-@@ -2312,7 +2317,7 @@ static int cake_config_besteffort(struct
+@@ -2309,7 +2314,7 @@ static int cake_config_besteffort(struct
struct cake_sched_data *q = qdisc_priv(sch);
struct cake_tin_data *b = &q->tins[0];
u32 mtu = psched_mtu(qdisc_dev(sch));
q->tin_cnt = 1;
-@@ -2320,7 +2325,7 @@ static int cake_config_besteffort(struct
+@@ -2317,7 +2322,7 @@ static int cake_config_besteffort(struct
q->tin_order = normal_order;
cake_set_rate(b, rate, mtu,
b->tin_quantum = 65535;
return 0;
-@@ -2331,7 +2336,7 @@ static int cake_config_precedence(struct
+@@ -2328,7 +2333,7 @@ static int cake_config_precedence(struct
/* convert high-level (user visible) parameters into internal format */
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 256;
u32 i;
-@@ -2342,8 +2347,8 @@ static int cake_config_precedence(struct
+@@ -2339,8 +2344,8 @@ static int cake_config_precedence(struct
for (i = 0; i < q->tin_cnt; i++) {
struct cake_tin_data *b = &q->tins[i];
b->tin_quantum = max_t(u16, 1U, quantum);
-@@ -2420,7 +2425,7 @@ static int cake_config_diffserv8(struct
+@@ -2417,7 +2422,7 @@ static int cake_config_diffserv8(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 256;
u32 i;
-@@ -2434,8 +2439,8 @@ static int cake_config_diffserv8(struct
+@@ -2431,8 +2436,8 @@ static int cake_config_diffserv8(struct
for (i = 0; i < q->tin_cnt; i++) {
struct cake_tin_data *b = &q->tins[i];
b->tin_quantum = max_t(u16, 1U, quantum);
-@@ -2464,7 +2469,7 @@ static int cake_config_diffserv4(struct
+@@ -2461,7 +2466,7 @@ static int cake_config_diffserv4(struct
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 1024;
q->tin_cnt = 4;
-@@ -2475,13 +2480,13 @@ static int cake_config_diffserv4(struct
+@@ -2472,13 +2477,13 @@ static int cake_config_diffserv4(struct
/* class characteristics */
cake_set_rate(&q->tins[0], rate, mtu,
/* bandwidth-sharing weights */
q->tins[0].tin_quantum = quantum;
-@@ -2501,7 +2506,7 @@ static int cake_config_diffserv3(struct
+@@ -2498,7 +2503,7 @@ static int cake_config_diffserv3(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 mtu = psched_mtu(qdisc_dev(sch));
u32 quantum = 1024;
q->tin_cnt = 3;
-@@ -2512,11 +2517,11 @@ static int cake_config_diffserv3(struct
+@@ -2509,11 +2514,11 @@ static int cake_config_diffserv3(struct
/* class characteristics */
cake_set_rate(&q->tins[0], rate, mtu,
/* bandwidth-sharing weights */
q->tins[0].tin_quantum = quantum;
-@@ -2528,7 +2533,8 @@ static int cake_config_diffserv3(struct
+@@ -2525,7 +2530,8 @@ static int cake_config_diffserv3(struct
static void cake_reconfigure(struct Qdisc *sch)
{
int c, ft;
switch (q->tin_mode) {
-@@ -2554,36 +2560,37 @@ static void cake_reconfigure(struct Qdis
+@@ -2551,36 +2557,37 @@ static void cake_reconfigure(struct Qdis
break;
}
struct nlattr *tb[TCA_CAKE_MAX + 1];
u16 rate_flags;
u8 flow_mode;
-@@ -2637,19 +2644,19 @@ static int cake_change(struct Qdisc *sch
+@@ -2634,19 +2641,19 @@ static int cake_change(struct Qdisc *sch
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
rate_flags |= CAKE_FLAG_OVERHEAD;
}
if (tb[TCA_CAKE_MPU])
-@@ -2705,7 +2712,7 @@ static int cake_change(struct Qdisc *sch
+@@ -2702,7 +2709,7 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_flags, rate_flags);
WRITE_ONCE(q->flow_mode, flow_mode);
sch_tree_lock(sch);
cake_reconfigure(sch);
sch_tree_unlock(sch);
-@@ -2721,14 +2728,20 @@ static void cake_destroy(struct Qdisc *s
+@@ -2718,14 +2725,20 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
sch->limit = 10240;
q->tin_mode = CAKE_DIFFSERV_DIFFSERV3;
q->flow_mode = CAKE_FLOW_TRIPLE;
-@@ -2740,33 +2753,36 @@ static int cake_init(struct Qdisc *sch,
+@@ -2737,33 +2750,36 @@ static int cake_init(struct Qdisc *sch,
* for 5 to 10% of interval
*/
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
INIT_LIST_HEAD(&b->new_flows);
INIT_LIST_HEAD(&b->old_flows);
-@@ -2782,22 +2798,27 @@ static int cake_init(struct Qdisc *sch,
+@@ -2779,22 +2795,27 @@ static int cake_init(struct Qdisc *sch,
INIT_LIST_HEAD(&flow->flowchain);
cobalt_vars_init(&flow->cvars);
#include <net/pkt_cls.h>
#include <net/tcp.h>
#include <net/flow_dissector.h>
-@@ -3155,14 +3156,89 @@ static struct Qdisc_ops cake_qdisc_ops _
+@@ -3152,14 +3153,89 @@ static struct Qdisc_ops cake_qdisc_ops _
};
MODULE_ALIAS_NET_SCH("cake");
}
module_init(cake_module_init)
-@@ -3170,3 +3246,4 @@ module_exit(cake_module_exit)
+@@ -3167,3 +3243,4 @@ module_exit(cake_module_exit)
MODULE_AUTHOR("Jonathan Morton");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_DESCRIPTION("The CAKE shaper.");
};
struct cake_sched_data {
-@@ -2587,14 +2588,12 @@ static void cake_reconfigure(struct Qdis
+@@ -2584,14 +2585,12 @@ static void cake_reconfigure(struct Qdis
q->buffer_config_limit));
}
int err;
err = nla_parse_nested_deprecated(tb, TCA_CAKE_MAX, opt, cake_policy,
-@@ -2602,7 +2601,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2599,7 +2598,6 @@ static int cake_change(struct Qdisc *sch
if (err < 0)
return err;
if (tb[TCA_CAKE_NAT]) {
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
flow_mode &= ~CAKE_FLOW_NAT_FLAG;
-@@ -2615,6 +2613,19 @@ static int cake_change(struct Qdisc *sch
+@@ -2612,6 +2610,19 @@ static int cake_change(struct Qdisc *sch
#endif
}
if (tb[TCA_CAKE_BASE_RATE64])
WRITE_ONCE(q->rate_bps,
nla_get_u64(tb[TCA_CAKE_BASE_RATE64]));
-@@ -2623,7 +2634,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2620,7 +2631,6 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->tin_mode,
nla_get_u32(tb[TCA_CAKE_DIFFSERV_MODE]));
if (tb[TCA_CAKE_WASH]) {
if (!!nla_get_u32(tb[TCA_CAKE_WASH]))
rate_flags |= CAKE_FLAG_WASH;
-@@ -2644,20 +2654,12 @@ static int cake_change(struct Qdisc *sch
+@@ -2641,20 +2651,12 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_overhead,
nla_get_s32(tb[TCA_CAKE_OVERHEAD]));
rate_flags |= CAKE_FLAG_OVERHEAD;
}
if (tb[TCA_CAKE_MPU])
-@@ -2676,13 +2678,6 @@ static int cake_change(struct Qdisc *sch
+@@ -2673,13 +2675,6 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->target, max(target, 1U));
}
if (tb[TCA_CAKE_INGRESS]) {
if (!!nla_get_u32(tb[TCA_CAKE_INGRESS]))
rate_flags |= CAKE_FLAG_INGRESS;
-@@ -2713,6 +2708,34 @@ static int cake_change(struct Qdisc *sch
+@@ -2710,6 +2705,34 @@ static int cake_change(struct Qdisc *sch
WRITE_ONCE(q->rate_flags, rate_flags);
WRITE_ONCE(q->flow_mode, flow_mode);
if (qd->tins) {
sch_tree_lock(sch);
cake_reconfigure(sch);
-@@ -2729,7 +2752,23 @@ static void cake_destroy(struct Qdisc *s
+@@ -2726,7 +2749,23 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
}
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
-@@ -2743,17 +2782,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2740,17 +2779,9 @@ static int cake_init(struct Qdisc *sch,
if (!q)
return -ENOMEM;
qd->cur_tin = 0;
qd->cur_flow = 0;
qd->config = q;
-@@ -2816,10 +2847,21 @@ err:
+@@ -2813,10 +2844,21 @@ err:
return err;
}
struct nlattr *opts;
u16 rate_flags;
u8 flow_mode;
-@@ -2895,6 +2937,13 @@ nla_put_failure:
+@@ -2892,6 +2934,13 @@ nla_put_failure:
return -1;
}
static int cake_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
{
struct nlattr *stats = nla_nest_start_noflag(d->skb, TCA_STATS_APP);
-@@ -3158,6 +3207,7 @@ MODULE_ALIAS_NET_SCH("cake");
+@@ -3155,6 +3204,7 @@ MODULE_ALIAS_NET_SCH("cake");
struct cake_mq_sched {
struct mq_sched mq_priv; /* must be first */
};
static void cake_mq_destroy(struct Qdisc *sch)
-@@ -3168,25 +3218,68 @@ static void cake_mq_destroy(struct Qdisc
+@@ -3165,25 +3215,68 @@ static void cake_mq_destroy(struct Qdisc
static int cake_mq_init(struct Qdisc *sch, struct nlattr *opt,
struct netlink_ext_ack *extack)
{
/* http://en.wikipedia.org/wiki/Methods_of_computing_square_roots
* new_invsqrt = (invsqrt / 2) * (3 - count * invsqrt^2)
*
-@@ -2003,6 +2011,40 @@ static struct sk_buff *cake_dequeue(stru
+@@ -2000,6 +2008,40 @@ static struct sk_buff *cake_dequeue(stru
u64 delay;
u32 len;
begin:
if (!sch->q.qlen)
return NULL;
-@@ -2202,6 +2244,7 @@ retry:
+@@ -2199,6 +2241,7 @@ retry:
b->tin_ecn_mark += !!flow->cvars.ecn_marked;
qdisc_bstats_update(sch, skb);
/* collect delay stats */
delay = ktime_to_ns(ktime_sub(now, cobalt_get_enqueue_time(skb)));
-@@ -2302,6 +2345,9 @@ static void cake_set_rate(struct cake_ti
+@@ -2299,6 +2342,9 @@ static void cake_set_rate(struct cake_ti
b->tin_rate_ns = rate_ns;
b->tin_rate_shft = rate_shft;
byte_target_ns = (byte_target * rate_ns) >> rate_shft;
WRITE_ONCE(b->cparams.target,
-@@ -2769,6 +2815,7 @@ static void cake_config_init(struct cake
+@@ -2766,6 +2812,7 @@ static void cake_config_init(struct cake
*/
q->rate_flags |= CAKE_FLAG_SPLIT_GSO;
q->is_shared = is_shared;
}
static int cake_init(struct Qdisc *sch, struct nlattr *opt,
-@@ -2840,6 +2887,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2837,6 +2884,9 @@ static int cake_init(struct Qdisc *sch,
qd->avg_peak_bandwidth = q->rate_bps;
qd->min_netlen = ~0;
qd->min_adjlen = ~0;
return 0;
err:
kvfree(qd->config);
-@@ -2972,6 +3022,7 @@ static int cake_dump_stats(struct Qdisc
+@@ -2969,6 +3019,7 @@ static int cake_dump_stats(struct Qdisc
PUT_STAT_U32(MAX_ADJLEN, q->max_adjlen);
PUT_STAT_U32(MIN_NETLEN, q->min_netlen);
PUT_STAT_U32(MIN_ADJLEN, q->min_adjlen);
struct cake_heap_entry overflow_heap[CAKE_QUEUES * CAKE_MAX_TINS];
-@@ -2798,8 +2799,6 @@ static void cake_destroy(struct Qdisc *s
+@@ -2795,8 +2796,6 @@ static void cake_destroy(struct Qdisc *s
qdisc_watchdog_cancel(&q->watchdog);
tcf_block_put(q->block);
kvfree(q->tins);
}
static void cake_config_init(struct cake_sched_config *q, bool is_shared)
-@@ -2822,13 +2821,9 @@ static int cake_init(struct Qdisc *sch,
+@@ -2819,13 +2818,9 @@ static int cake_init(struct Qdisc *sch,
struct netlink_ext_ack *extack)
{
struct cake_sched_data *qd = qdisc_priv(sch);
cake_config_init(q, false);
sch->limit = 10240;
-@@ -2840,14 +2835,13 @@ static int cake_init(struct Qdisc *sch,
+@@ -2837,14 +2832,13 @@ static int cake_init(struct Qdisc *sch,
if (opt) {
err = cake_change(sch, opt, extack);
quantum_div[0] = ~0;
for (i = 1; i <= CAKE_QUEUES; i++)
-@@ -2855,10 +2849,8 @@ static int cake_init(struct Qdisc *sch,
+@@ -2852,10 +2846,8 @@ static int cake_init(struct Qdisc *sch,
qd->tins = kvcalloc(CAKE_MAX_TINS, sizeof(struct cake_tin_data),
GFP_KERNEL);
for (i = 0; i < CAKE_MAX_TINS; i++) {
struct cake_tin_data *b = qd->tins + i;
-@@ -2891,22 +2883,13 @@ static int cake_init(struct Qdisc *sch,
+@@ -2888,22 +2880,13 @@ static int cake_init(struct Qdisc *sch,
qd->last_checked_active = 0;
return 0;
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
-@@ -2012,7 +2012,8 @@ static struct sk_buff *cake_dequeue(stru
+@@ -2009,7 +2009,8 @@ static struct sk_buff *cake_dequeue(stru
u64 delay;
u32 len;
/* http://en.wikipedia.org/wiki/Methods_of_computing_square_roots
* new_invsqrt = (invsqrt / 2) * (3 - count * invsqrt^2)
*
-@@ -2039,12 +2039,9 @@ static struct sk_buff *cake_dequeue(stru
+@@ -2036,12 +2036,9 @@ static struct sk_buff *cake_dequeue(stru
if (num_active_qs > 1)
new_rate = div64_u64(q->config->rate_bps, num_active_qs);
}
begin:
-@@ -2362,12 +2359,10 @@ static void cake_set_rate(struct cake_ti
+@@ -2359,12 +2356,10 @@ static void cake_set_rate(struct cake_ti
b->cparams.p_dec = 1 << 20; /* 1/4096 */
}
q->tin_cnt = 1;
-@@ -2381,12 +2376,10 @@ static int cake_config_besteffort(struct
+@@ -2378,12 +2373,10 @@ static int cake_config_besteffort(struct
return 0;
}
u32 quantum = 256;
u32 i;
-@@ -2457,7 +2450,7 @@ static int cake_config_precedence(struct
+@@ -2454,7 +2447,7 @@ static int cake_config_precedence(struct
* Total 12 traffic classes.
*/
{
/* Pruned list of traffic classes for typical applications:
*
-@@ -2474,8 +2467,6 @@ static int cake_config_diffserv8(struct
+@@ -2471,8 +2464,6 @@ static int cake_config_diffserv8(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 256;
u32 i;
-@@ -2505,7 +2496,7 @@ static int cake_config_diffserv8(struct
+@@ -2502,7 +2493,7 @@ static int cake_config_diffserv8(struct
return 0;
}
{
/* Further pruned list of traffic classes for four-class system:
*
-@@ -2518,8 +2509,6 @@ static int cake_config_diffserv4(struct
+@@ -2515,8 +2506,6 @@ static int cake_config_diffserv4(struct
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 1024;
q->tin_cnt = 4;
-@@ -2547,7 +2536,7 @@ static int cake_config_diffserv4(struct
+@@ -2544,7 +2533,7 @@ static int cake_config_diffserv4(struct
return 0;
}
{
/* Simplified Diffserv structure with 3 tins.
* Latency Sensitive (CS7, CS6, EF, VA, TOS4)
-@@ -2555,8 +2544,6 @@ static int cake_config_diffserv3(struct
+@@ -2552,8 +2541,6 @@ static int cake_config_diffserv3(struct
* Low Priority (LE, CS1)
*/
struct cake_sched_data *q = qdisc_priv(sch);
u32 quantum = 1024;
q->tin_cnt = 3;
-@@ -2581,32 +2568,33 @@ static int cake_config_diffserv3(struct
+@@ -2578,32 +2565,33 @@ static int cake_config_diffserv3(struct
return 0;
}
break;
}
-@@ -2617,6 +2605,14 @@ static void cake_reconfigure(struct Qdis
+@@ -2614,6 +2602,14 @@ static void cake_reconfigure(struct Qdis
qd->rate_ns = qd->tins[ft].tin_rate_ns;
qd->rate_shft = qd->tins[ft].tin_rate_shft;
+++ /dev/null
-From 0b7b378ce6cafbb948786cb6f17f406d94016c8c Mon Sep 17 00:00:00 2001
-From: George Moussalem <george.moussalem@outlook.com>
-Date: Mon, 8 Jun 2026 11:22:08 +0400
-Subject: [PATCH] net: dsa: qca8k: fix led devicename when using external mdio
- bus
-
-The qca8k dsa switch can use either an external or internal mdio bus.
-This depends on whether the mdio node is defined under the switch node
-itself. Upon registering the internal mdio bus, the internal_mdio_bus
-of the dsa switch is assigned to this bus. When an external mdio bus is
-used, the driver still uses the internal_mdio_bus id which is used to
-create the device names of the leds.
-This leads to the leds being prefixed with '(efault)' as the
-internal_mii_bus is null. So let's fix this by adding a null check and
-use the devicename of the external bus instead when an external bus is
-configured.
-
-Fixes: 1e264f9d2918 ("net: dsa: qca8k: add LEDs basic support")
-Signed-off-by: George Moussalem <george.moussalem@outlook.com>
-Reviewed-by: Andrew Lunn <andrew@lunn.ch>
-Link: https://patch.msgid.link/20260608-qca8k-leds-fix-v3-1-a915bb2f37ae@outlook.com
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
- drivers/net/dsa/qca/qca8k-leds.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/net/dsa/qca/qca8k-leds.c
-+++ b/drivers/net/dsa/qca/qca8k-leds.c
-@@ -429,7 +429,8 @@ qca8k_parse_port_leds(struct qca8k_priv
- init_data.fwnode = led;
- init_data.devname_mandatory = true;
- init_data.devicename = kasprintf(GFP_KERNEL, "%s:0%d",
-- priv->internal_mdio_bus->id,
-+ priv->internal_mdio_bus ?
-+ priv->internal_mdio_bus->id : priv->bus->id,
- port_num);
- if (!init_data.devicename) {
- fwnode_handle_put(led);
int dw_pcie_allocate_domains(struct dw_pcie_rp *pp)
{
struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
-- struct fwnode_handle *fwnode = of_node_to_fwnode(pci->dev->of_node);
+- struct fwnode_handle *fwnode = dev_fwnode(pci->dev);
+ struct irq_domain_info info = {
-+ .fwnode = of_node_to_fwnode(pci->dev->of_node),
++ .fwnode = dev_fwnode(pci->dev),
+ .ops = &dw_pcie_msi_domain_ops,
+ .size = pp->num_vectors,
+ .host_data = pp,
# CONFIG_DEBUG_MISC is not set
# CONFIG_DEBUG_MUTEXES is not set
# CONFIG_DEBUG_NET is not set
+# CONFIG_DEBUG_NET_SMALL_RTNL is not set
# CONFIG_DEBUG_NOTIFIERS is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_PAGEALLOC is not set
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
-@@ -312,6 +312,9 @@ static int conf_askvalue(struct symbol *
+@@ -310,6 +310,9 @@ static int conf_askvalue(struct symbol *
}
/* fall through */
default:
fflush(stdout);
xfgets(line, sizeof(line), stdin);
break;
-@@ -470,6 +473,9 @@ static void conf_choice(struct menu *men
+@@ -468,6 +471,9 @@ static void conf_choice(struct menu *men
}
/* fall through */
case oldaskconfig:
return connmark_tg_shift(skb, info);
}
-@@ -168,6 +195,16 @@ static struct xt_target connmark_tg_reg[
+@@ -178,6 +205,16 @@ static struct xt_target connmark_tg_reg[
.destroy = connmark_tg_destroy,
.me = THIS_MODULE,
},
#if IS_ENABLED(CONFIG_IP6_NF_IPTABLES)
{
.name = "CONNMARK",
-@@ -189,6 +226,16 @@ static struct xt_target connmark_tg_reg[
+@@ -199,6 +236,16 @@ static struct xt_target connmark_tg_reg[
.destroy = connmark_tg_destroy,
.me = THIS_MODULE,
},
--- a/net/sched/sch_fq_codel.c
+++ b/net/sched/sch_fq_codel.c
-@@ -472,7 +472,11 @@ static int fq_codel_init(struct Qdisc *s
+@@ -509,7 +509,11 @@ static int fq_codel_init(struct Qdisc *s
sch->limit = 10*1024;
q->flows_cnt = 1024;
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
-@@ -2648,7 +2648,7 @@ int nf_conntrack_init_start(void)
+@@ -2605,7 +2605,7 @@ int nf_conntrack_init_start(void)
if (!nf_conntrack_htable_size) {
nf_conntrack_htable_size
/* struct cobalt_params - contains codel and blue parameters
* @interval: codel initial drop rate
-@@ -2013,7 +2016,7 @@ static struct sk_buff *cake_dequeue(stru
+@@ -2010,7 +2013,7 @@ static struct sk_buff *cake_dequeue(stru
u32 len;
if (q->config->is_shared && q->rate_ns &&
struct net_device *dev = qdisc_dev(sch);
struct cake_sched_data *other_priv;
u64 new_rate = q->config->rate_bps;
-@@ -3353,8 +3356,13 @@ static int __init cake_module_init(void)
+@@ -3350,8 +3353,13 @@ static int __init cake_module_init(void)
return ret;
ret = register_qdisc(&cake_mq_qdisc_ops);
return ret;
}
-@@ -3363,6 +3371,7 @@ static void __exit cake_module_exit(void
+@@ -3360,6 +3368,7 @@ static void __exit cake_module_exit(void
{
unregister_qdisc(&cake_qdisc_ops);
unregister_qdisc(&cake_mq_qdisc_ops);
-LINUX_VERSION-6.12 = .96
-LINUX_KERNEL_HASH-6.12.96 = 7d2e1b5d5ab36b3a01856e71782dad2a54e634fb2b37c0a42998def3bbf957c1
+LINUX_VERSION-6.12 = .97
+LINUX_KERNEL_HASH-6.12.97 = 6cbddfa3bbd2229026f7cc5e48f6b7d6b46d39742de39a9257a2f490a0f45c6f
child->size = child->part.size;
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
-@@ -10,6 +10,16 @@ menuconfig MTD_SPI_NOR
+@@ -9,6 +9,16 @@ menuconfig MTD_SPI_NOR
if MTD_SPI_NOR
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5103,7 +5133,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5106,7 +5136,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6376,6 +6407,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6379,6 +6410,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6387,6 +6420,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6390,6 +6423,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6582,6 +6616,8 @@ static int __net_init ip6_route_net_init
+@@ -6585,6 +6619,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6592,11 +6628,21 @@ static int __net_init ip6_route_net_init
+@@ -6595,11 +6631,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->dst.rt_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6623,6 +6669,8 @@ out:
+@@ -6626,6 +6672,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6642,6 +6690,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6645,6 +6693,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6725,6 +6774,9 @@ void __init ip6_route_init_special_entri
+@@ -6728,6 +6777,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
struct rtnl_link {
rtnl_doit_func doit;
-@@ -5021,7 +5021,9 @@ int ndo_dflt_bridge_getlink(struct sk_bu
+@@ -5102,7 +5102,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,
foe_flow_size = (MTK_PPE_ENTRIES / soc->hash_offset) *
@@ -928,6 +929,7 @@ struct mtk_ppe *mtk_ppe_init(struct mtk_
if (!mib)
- return NULL;
+ goto err_free_l2_flows;
+ memset(mib, 0, MTK_PPE_ENTRIES * sizeof(*mib));
ppe->mib_table = mib;
/* show configuration fields */
#define pci_config_attr(field, format_string) \
-@@ -1523,12 +1525,32 @@ static const struct attribute_group pci_
+@@ -1516,12 +1518,32 @@ static const struct attribute_group pci_
.is_visible = resource_resize_is_visible,
};
}
/**
-@@ -1549,21 +1571,23 @@ static int __init pci_sysfs_init(void)
+@@ -1542,21 +1564,23 @@ static int __init pci_sysfs_init(void)
{
struct pci_dev *pdev = NULL;
struct pci_bus *pbus = NULL;
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @qc: Metadata associated with the taskfile to build
-@@ -4812,6 +4823,9 @@ void __ata_qc_complete(struct ata_queued
+@@ -4827,6 +4838,9 @@ void __ata_qc_complete(struct ata_queued
link->active_tag = ATA_TAG_POISON;
ap->nr_active_links--;
}
/* clear exclusive status */
if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
-@@ -5541,6 +5555,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5556,6 +5570,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
ata_force_pflags(ap);
-@@ -5557,6 +5574,12 @@ void ata_port_free(struct ata_port *ap)
+@@ -5572,6 +5589,12 @@ void ata_port_free(struct ata_port *ap)
kfree(ap->pmp_link);
kfree(ap->slave_link);
ida_free(&ata_ida, ap->print_id);
kfree(ap);
}
EXPORT_SYMBOL_GPL(ata_port_free);
-@@ -5961,7 +5984,23 @@ int ata_host_register(struct ata_host *h
+@@ -5976,7 +5999,23 @@ int ata_host_register(struct ata_host *h
WARN_ON(1);
return -EINVAL;
}
+
+void *arch_alloc_bpf_trampoline(unsigned int size)
+{
-+ return bpf_prog_pack_alloc(size, jit_fill_hole);
++ return bpf_prog_pack_alloc(size, jit_fill_hole, false);
+}
+
+void arch_free_bpf_trampoline(void *image, unsigned int size)
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
-@@ -1827,6 +1827,7 @@ static const struct of_device_id qcom_pc
+@@ -1838,6 +1838,7 @@ static const struct of_device_id qcom_pc
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },