};
/* Uart divisor latch read */
-@@ -2889,6 +2897,12 @@ serial8250_do_set_termios(struct uart_po
+@@ -2888,6 +2896,12 @@ serial8250_do_set_termios(struct uart_po
serial8250_set_divisor(port, baud, quot, frac);
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1348,6 +1349,7 @@ static int spinand_probe(struct spi_mem
+@@ -1351,6 +1352,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1355,6 +1357,7 @@ static int spinand_probe(struct spi_mem
+@@ -1358,6 +1360,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1373,6 +1376,7 @@ static int spinand_remove(struct spi_mem
+@@ -1376,6 +1379,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
/* called during probe() after chip reset completes */
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -162,6 +162,49 @@ int xhci_start(struct xhci_hcd *xhci)
+@@ -163,6 +163,49 @@ int xhci_start(struct xhci_hcd *xhci)
return ret;
}
+ }
+
+ /* Free virt device */
-+ xhci_free_virt_device(xhci, slot_id);
++ xhci_disable_and_free_slot(xhci, slot_id);
+
+ /* We're done if controller is already running */
+ if (readl(&xhci->op_regs->command) & CMD_RUN)
/*
* Reset a halted HC.
*
-@@ -498,6 +541,15 @@ static int xhci_run_finished(struct xhci
+@@ -500,6 +543,15 @@ static int xhci_run_finished(struct xhci
return -ENODEV;
}
+++ /dev/null
-From 5a821e2d69e26b51b7f3740b6b0c3462b8cacaff Mon Sep 17 00:00:00 2001
-From: Michal Suchanek <msuchanek@suse.de>
-Date: Mon, 31 Mar 2025 12:57:19 +0200
-Subject: [PATCH] powerpc/boot: Fix build with gcc 15
-
-Similar to x86 the ppc boot code does not build with GCC 15.
-
-Copy the fix from
-commit ee2ab467bddf ("x86/boot: Use '-std=gnu11' to fix build with GCC 15")
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
-Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
-Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
-Link: https://patch.msgid.link/20250331105722.19709-1-msuchanek@suse.de
----
- arch/powerpc/boot/Makefile | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -72,6 +72,7 @@ BOOTCPPFLAGS := -nostdinc $(LINUXINCLUDE
- BOOTCPPFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
-
- BOOTCFLAGS := $(BOOTTARGETFLAGS) \
-+ -std=gnu11 \
- -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
- -fno-strict-aliasing -O2 \
- -msoft-float -mno-altivec -mno-vsx \
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -940,6 +940,7 @@ static const struct spinand_manufacturer
+@@ -943,6 +943,7 @@ static const struct spinand_manufacturer
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1287,6 +1287,7 @@ static int spinand_init(struct spinand_d
+@@ -1290,6 +1290,7 @@ static int spinand_init(struct spinand_d
/* Propagate ECC information to mtd_info */
mtd->ecc_strength = nanddev_get_ecc_conf(nand)->strength;
mtd->ecc_step_size = nanddev_get_ecc_conf(nand)->step_size;
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -4514,13 +4514,7 @@ static inline void ____napi_schedule(str
+@@ -4526,13 +4526,7 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
wake_up_process(thread);
return;
}
-@@ -6676,8 +6670,6 @@ static int napi_poll(struct napi_struct
+@@ -6688,8 +6682,6 @@ static int napi_poll(struct napi_struct
static int napi_thread_wait(struct napi_struct *napi)
{
set_current_state(TASK_INTERRUPTIBLE);
while (!kthread_should_stop()) {
-@@ -6686,15 +6678,13 @@ static int napi_thread_wait(struct napi_
+@@ -6698,15 +6690,13 @@ static int napi_thread_wait(struct napi_
* Testing SCHED bit is not enough because SCHED bit might be
* set by some other busy poll thread or by napi_disable().
*/
static inline void rps_lock_irqsave(struct softnet_data *sd,
unsigned long *flags)
{
-@@ -4482,6 +4508,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
+@@ -4494,6 +4520,7 @@ EXPORT_SYMBOL(__dev_direct_xmit);
/*************************************************************************
* Receiver routines
*************************************************************************/
int netdev_max_backlog __read_mostly = 1000;
EXPORT_SYMBOL(netdev_max_backlog);
-@@ -4514,12 +4541,16 @@ static inline void ____napi_schedule(str
+@@ -4526,12 +4553,16 @@ static inline void ____napi_schedule(str
*/
thread = READ_ONCE(napi->thread);
if (thread) {
list_add_tail(&napi->poll_list, &sd->poll_list);
WRITE_ONCE(napi->list_owner, smp_processor_id());
/* If not called from net_rx_action()
-@@ -4765,6 +4796,11 @@ static void napi_schedule_rps(struct sof
+@@ -4777,6 +4808,11 @@ static void napi_schedule_rps(struct sof
#ifdef CONFIG_RPS
if (sd != mysd) {
sd->rps_ipi_next = mysd->rps_ipi_list;
mysd->rps_ipi_list = sd;
-@@ -5988,7 +6024,7 @@ static void net_rps_action_and_irq_enabl
+@@ -6000,7 +6036,7 @@ static void net_rps_action_and_irq_enabl
#ifdef CONFIG_RPS
struct softnet_data *remsd = sd->rps_ipi_list;
sd->rps_ipi_list = NULL;
local_irq_enable();
-@@ -6003,7 +6039,7 @@ static void net_rps_action_and_irq_enabl
+@@ -6015,7 +6051,7 @@ static void net_rps_action_and_irq_enabl
static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
{
#ifdef CONFIG_RPS
#else
return false;
#endif
-@@ -6047,7 +6083,7 @@ static int process_backlog(struct napi_s
+@@ -6059,7 +6095,7 @@ static int process_backlog(struct napi_s
* We can use a plain write instead of clear_bit(),
* and we dont need an smp_mb() memory barrier.
*/
again = false;
} else {
skb_queue_splice_tail_init(&sd->input_pkt_queue,
-@@ -6713,43 +6749,48 @@ static void skb_defer_free_flush(struct
+@@ -6725,43 +6761,48 @@ static void skb_defer_free_flush(struct
}
}
return 0;
}
-@@ -11334,7 +11375,7 @@ static int dev_cpu_dead(unsigned int old
+@@ -11346,7 +11387,7 @@ static int dev_cpu_dead(unsigned int old
list_del_init(&napi->poll_list);
if (napi->poll == process_backlog)
else
____napi_schedule(sd, napi);
}
-@@ -11342,12 +11383,14 @@ static int dev_cpu_dead(unsigned int old
+@@ -11354,12 +11395,14 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
/* Process offline CPU's input_pkt_queue */
while ((skb = __skb_dequeue(&oldsd->process_queue))) {
-@@ -11610,6 +11653,38 @@ static struct pernet_operations __net_in
+@@ -11622,6 +11665,38 @@ static struct pernet_operations __net_in
*
*/
/*
* This is called single threaded during boot, so no need
* to take the rtnl semaphore.
-@@ -11660,7 +11735,10 @@ static int __init net_dev_init(void)
+@@ -11672,7 +11747,10 @@ static int __init net_dev_init(void)
init_gro_hash(&sd->backlog);
sd->backlog.poll = process_backlog;
sd->backlog.weight = weight_p;
spin_unlock_irq(&sd->input_pkt_queue.lock);
else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
local_irq_enable();
-@@ -4815,6 +4815,23 @@ static void napi_schedule_rps(struct sof
+@@ -4827,6 +4827,23 @@ static void napi_schedule_rps(struct sof
__napi_schedule_irqoff(&mysd->backlog);
}
{
if (IS_ENABLED(CONFIG_RPS) || use_backlog_threads())
spin_unlock_irq(&sd->input_pkt_queue.lock);
-@@ -4820,12 +4820,12 @@ void kick_defer_list_purge(struct softne
+@@ -4832,12 +4832,12 @@ void kick_defer_list_purge(struct softne
unsigned long flags;
if (use_backlog_threads()) {
} else if (!cmpxchg(&sd->defer_ipi_scheduled, 0, 1)) {
smp_call_function_single_async(cpu, &sd->defer_csd);
-@@ -4887,7 +4887,7 @@ static int enqueue_to_backlog(struct sk_
+@@ -4899,7 +4899,7 @@ static int enqueue_to_backlog(struct sk_
reason = SKB_DROP_REASON_NOT_SPECIFIED;
sd = &per_cpu(softnet_data, cpu);
if (!netif_running(skb->dev))
goto drop;
qlen = skb_queue_len(&sd->input_pkt_queue);
-@@ -4896,7 +4896,7 @@ static int enqueue_to_backlog(struct sk_
+@@ -4908,7 +4908,7 @@ static int enqueue_to_backlog(struct sk_
enqueue:
__skb_queue_tail(&sd->input_pkt_queue, skb);
input_queue_tail_incr_save(sd, qtail);
return NET_RX_SUCCESS;
}
-@@ -4911,7 +4911,7 @@ enqueue:
+@@ -4923,7 +4923,7 @@ enqueue:
drop:
sd->dropped++;
dev_core_stats_rx_dropped_inc(skb->dev);
kfree_skb_reason(skb, reason);
-@@ -5942,7 +5942,7 @@ static void flush_backlog(struct work_st
+@@ -5954,7 +5954,7 @@ static void flush_backlog(struct work_st
local_bh_disable();
sd = this_cpu_ptr(&softnet_data);
skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
__skb_unlink(skb, &sd->input_pkt_queue);
-@@ -5950,7 +5950,7 @@ static void flush_backlog(struct work_st
+@@ -5962,7 +5962,7 @@ static void flush_backlog(struct work_st
input_queue_head_incr(sd);
}
}
skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
if (skb->dev->reg_state == NETREG_UNREGISTERING) {
-@@ -5968,14 +5968,14 @@ static bool flush_required(int cpu)
+@@ -5980,14 +5980,14 @@ static bool flush_required(int cpu)
struct softnet_data *sd = &per_cpu(softnet_data, cpu);
bool do_flush;
return do_flush;
#endif
-@@ -6090,7 +6090,7 @@ static int process_backlog(struct napi_s
+@@ -6102,7 +6102,7 @@ static int process_backlog(struct napi_s
}
if (skb_queue_empty(&sd->input_pkt_queue)) {
/*
* Inline a custom version of __napi_complete().
-@@ -6106,7 +6106,7 @@ static int process_backlog(struct napi_s
+@@ -6118,7 +6118,7 @@ static int process_backlog(struct napi_s
skb_queue_splice_tail_init(&sd->input_pkt_queue,
&sd->process_queue);
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -9796,6 +9796,15 @@ static void netdev_sync_lower_features(s
+@@ -9808,6 +9808,15 @@ static void netdev_sync_lower_features(s
}
}
static netdev_features_t netdev_fix_features(struct net_device *dev,
netdev_features_t features)
{
-@@ -9877,15 +9886,9 @@ static netdev_features_t netdev_fix_feat
+@@ -9889,15 +9898,9 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_LRO;
}
}
if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
-@@ -9893,6 +9896,11 @@ static netdev_features_t netdev_fix_feat
+@@ -9905,6 +9908,11 @@ static netdev_features_t netdev_fix_feat
features &= ~NETIF_F_HW_TLS_RX;
}
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -10703,6 +10703,8 @@ struct rtnl_link_stats64 *dev_get_stats(
+@@ -10715,6 +10715,8 @@ struct rtnl_link_stats64 *dev_get_stats(
ops->ndo_get_stats64(dev, storage);
} else if (ops->ndo_get_stats) {
netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
-@@ -3500,6 +3500,10 @@ ppp_connect_channel(struct channel *pch,
+@@ -3504,6 +3504,10 @@ ppp_connect_channel(struct channel *pch,
ret = -ENOTCONN;
goto outl;
}
unsigned char name_assign_type,
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -10390,25 +10390,12 @@ err_free_name:
+@@ -10402,25 +10402,12 @@ err_free_name:
}
EXPORT_SYMBOL(register_netdevice);
/* make sure we BUG if trying to hit standard
* register/unregister code path
*/
-@@ -10428,12 +10415,32 @@ int init_dummy_netdev(struct net_device
+@@ -10440,12 +10427,32 @@ int init_dummy_netdev(struct net_device
* because users of this 'device' dont need to change
* its refcount.
*/
/**
* register_netdev - register a network device
* @dev: device to register
-@@ -11027,6 +11034,19 @@ void free_netdev(struct net_device *dev)
+@@ -11039,6 +11046,19 @@ void free_netdev(struct net_device *dev)
EXPORT_SYMBOL(free_netdev);
/**
phy_unlock_mdio_bus(phydev);
--- a/drivers/net/phy/mscc/mscc.h
+++ b/drivers/net/phy/mscc/mscc.h
-@@ -416,6 +416,11 @@ struct vsc8531_private {
+@@ -428,6 +428,11 @@ struct vsc8531_private {
* gpio_lock: used for PHC operations. Common for all PHYs as the load/save GPIO
* is shared.
*/
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -198,10 +198,10 @@ mtk_flow_set_output_device(struct mtk_et
+@@ -200,10 +200,10 @@ mtk_flow_set_output_device(struct mtk_et
if (mtk_is_netsys_v2_or_greater(eth)) {
switch (info.wdma_idx) {
case 0:
return -EOPNOTSUPP;
switch (type) {
-@@ -1916,9 +1916,9 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1915,9 +1915,9 @@ void mtk_wed_add_hw(struct device_node *
hw->wdma = wdma;
hw->index = index;
hw->irq = irq;
return -ENOMEM;
wdma_w32(dev, MTK_WDMA_RING_TX(idx) + MTK_WED_RING_OFS_BASE,
-@@ -1930,7 +1937,12 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1929,7 +1936,12 @@ void mtk_wed_add_hw(struct device_node *
hw->irq = irq;
hw->version = eth->soc->version;
hw->mirror = syscon_regmap_lookup_by_phandle(eth_np,
"mediatek,pcie-mirror");
hw->hifsys = syscon_regmap_lookup_by_phandle(eth_np,
-@@ -1944,6 +1956,8 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1943,6 +1955,8 @@ void mtk_wed_add_hw(struct device_node *
regmap_write(hw->mirror, 0, 0);
regmap_write(hw->mirror, 4, 0);
}
};
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -203,6 +203,9 @@ mtk_flow_set_output_device(struct mtk_et
+@@ -205,6 +205,9 @@ mtk_flow_set_output_device(struct mtk_et
case 1:
pse_port = PSE_WDMA1_PORT;
break;
val = wed_r32(dev, MTK_WED_EXT_INT_STATUS);
wed_w32(dev, MTK_WED_EXT_INT_STATUS, val);
-@@ -1941,6 +2132,9 @@ void mtk_wed_add_hw(struct device_node *
+@@ -1940,6 +2131,9 @@ void mtk_wed_add_hw(struct device_node *
case 2:
hw->soc = &mt7986_data;
break;
int mtk_foe_entry_commit(struct mtk_ppe *ppe, struct mtk_flow_entry *entry);
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -113,6 +113,7 @@ mtk_flow_get_wdma_info(struct net_device
+@@ -115,6 +115,7 @@ mtk_flow_get_wdma_info(struct net_device
info->queue = path->mtk_wdma.queue;
info->bss = path->mtk_wdma.bss;
info->wcid = path->mtk_wdma.wcid;
return 0;
}
-@@ -194,7 +195,7 @@ mtk_flow_set_output_device(struct mtk_et
+@@ -196,7 +197,7 @@ mtk_flow_set_output_device(struct mtk_et
if (mtk_flow_get_wdma_info(dev, dest_mac, &info) == 0) {
mtk_foe_entry_set_wdma(eth, foe, info.wdma_idx, info.queue,
int mtk_flow_offload_cmd(struct mtk_eth *eth, struct flow_cls_offload *cls,
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -247,10 +247,10 @@ mtk_flow_offload_replace(struct mtk_eth
+@@ -249,10 +249,10 @@ mtk_flow_offload_replace(struct mtk_eth
int ppe_index)
{
struct flow_rule *rule = flow_cls_offload_flow_rule(f);
struct mtk_flow_entry *entry;
int offload_type = 0;
int wed_index = -1;
-@@ -266,6 +266,17 @@ mtk_flow_offload_replace(struct mtk_eth
+@@ -268,6 +268,17 @@ mtk_flow_offload_replace(struct mtk_eth
struct flow_match_meta match;
flow_rule_match_meta(rule, &match);
} else {
return -EOPNOTSUPP;
}
-@@ -633,7 +644,9 @@ int mtk_eth_setup_tc(struct net_device *
+@@ -635,7 +646,9 @@ int mtk_eth_setup_tc(struct net_device *
}
}
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -268,7 +268,7 @@ mtk_flow_offload_replace(struct mtk_eth
+@@ -270,7 +270,7 @@ mtk_flow_offload_replace(struct mtk_eth
flow_rule_match_meta(rule, &match);
if (mtk_is_netsys_v2_or_greater(eth)) {
idev = __dev_get_by_index(&init_net, match.key->ingress_ifindex);
/**
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -6643,7 +6643,7 @@ static int __napi_poll(struct napi_struc
+@@ -6655,7 +6655,7 @@ static int __napi_poll(struct napi_struc
* accidentally calling ->poll() when NAPI is not scheduled.
*/
work = 0;
MODULE_LICENSE("GPL v2");
--- a/drivers/usb/host/xhci-pci-renesas.c
+++ b/drivers/usb/host/xhci-pci-renesas.c
-@@ -627,4 +627,5 @@ exit:
+@@ -628,4 +628,5 @@ exit:
}
EXPORT_SYMBOL_GPL(renesas_xhci_check_request_fw);
firmware. Make sure you have the firmware for the device and
--- a/drivers/usb/host/xhci-pci-renesas.c
+++ b/drivers/usb/host/xhci-pci-renesas.c
-@@ -50,6 +50,8 @@
- #define RENESAS_RETRY 10000
- #define RENESAS_DELAY 10
+@@ -51,6 +51,8 @@
+ #define RENESAS_CHIP_ERASE_RETRY 500000 /* 500000 * RENESAS_DELAY ~= 5s */
+ #define RENESAS_DELAY 10
+#define RENESAS_FW_NAME "renesas_usb_fw.mem"
+
static int renesas_fw_download_image(struct pci_dev *dev,
const u32 *fw, size_t step, bool rom)
{
-@@ -573,12 +575,10 @@ exit:
+@@ -574,12 +576,10 @@ exit:
return err;
}
const struct firmware *fw;
bool has_rom;
int err;
-@@ -625,7 +625,41 @@ exit:
+@@ -626,7 +626,41 @@ exit:
release_firmware(fw);
return err;
}
--- a/drivers/leds/trigger/ledtrig-netdev.c
+++ b/drivers/leds/trigger/ledtrig-netdev.c
-@@ -104,6 +104,18 @@ static void set_baseline_state(struct le
+@@ -99,6 +99,18 @@ static void set_baseline_state(struct le
trigger_data->link_speed == SPEED_1000)
blink_on = true;
if (test_bit(TRIGGER_NETDEV_HALF_DUPLEX, &trigger_data->mode) &&
trigger_data->duplex == DUPLEX_HALF)
blink_on = true;
-@@ -294,6 +306,9 @@ static ssize_t netdev_led_attr_show(stru
+@@ -289,6 +301,9 @@ static ssize_t netdev_led_attr_show(stru
case TRIGGER_NETDEV_LINK_10:
case TRIGGER_NETDEV_LINK_100:
case TRIGGER_NETDEV_LINK_1000:
case TRIGGER_NETDEV_HALF_DUPLEX:
case TRIGGER_NETDEV_FULL_DUPLEX:
case TRIGGER_NETDEV_TX:
-@@ -324,6 +339,9 @@ static ssize_t netdev_led_attr_store(str
+@@ -319,6 +334,9 @@ static ssize_t netdev_led_attr_store(str
case TRIGGER_NETDEV_LINK_10:
case TRIGGER_NETDEV_LINK_100:
case TRIGGER_NETDEV_LINK_1000:
case TRIGGER_NETDEV_HALF_DUPLEX:
case TRIGGER_NETDEV_FULL_DUPLEX:
case TRIGGER_NETDEV_TX:
-@@ -342,7 +360,10 @@ static ssize_t netdev_led_attr_store(str
+@@ -337,7 +355,10 @@ static ssize_t netdev_led_attr_store(str
if (test_bit(TRIGGER_NETDEV_LINK, &mode) &&
(test_bit(TRIGGER_NETDEV_LINK_10, &mode) ||
test_bit(TRIGGER_NETDEV_LINK_100, &mode) ||
return -EINVAL;
cancel_delayed_work_sync(&trigger_data->work);
-@@ -372,6 +393,9 @@ DEFINE_NETDEV_TRIGGER(link, TRIGGER_NETD
+@@ -367,6 +388,9 @@ DEFINE_NETDEV_TRIGGER(link, TRIGGER_NETD
DEFINE_NETDEV_TRIGGER(link_10, TRIGGER_NETDEV_LINK_10);
DEFINE_NETDEV_TRIGGER(link_100, TRIGGER_NETDEV_LINK_100);
DEFINE_NETDEV_TRIGGER(link_1000, TRIGGER_NETDEV_LINK_1000);
DEFINE_NETDEV_TRIGGER(half_duplex, TRIGGER_NETDEV_HALF_DUPLEX);
DEFINE_NETDEV_TRIGGER(full_duplex, TRIGGER_NETDEV_FULL_DUPLEX);
DEFINE_NETDEV_TRIGGER(tx, TRIGGER_NETDEV_TX);
-@@ -435,6 +459,9 @@ static struct attribute *netdev_trig_att
+@@ -425,6 +449,9 @@ static struct attribute *netdev_trig_att
&dev_attr_link_10.attr,
&dev_attr_link_100.attr,
&dev_attr_link_1000.attr,
&dev_attr_full_duplex.attr,
&dev_attr_half_duplex.attr,
&dev_attr_rx.attr,
-@@ -532,6 +559,9 @@ static void netdev_trig_work(struct work
+@@ -522,6 +549,9 @@ static void netdev_trig_work(struct work
test_bit(TRIGGER_NETDEV_LINK_10, &trigger_data->mode) ||
test_bit(TRIGGER_NETDEV_LINK_100, &trigger_data->mode) ||
test_bit(TRIGGER_NETDEV_LINK_1000, &trigger_data->mode) ||
+++ /dev/null
-From 26f732791f2bcab18f59c61915bbe35225f30136 Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel@makrotopia.org>
-Date: Sat, 12 Jul 2025 16:39:21 +0100
-Subject: [PATCH] Revert "leds: trigger: netdev: Configure LED blink interval
- for HW offload"
-
-This reverts commit c629c972b310af41e9e072febb6dae9a299edde6.
-
-While .led_blink_set() would previously put an LED into an unconditional
-permanently blinking state, the offending commit now uses same operation
-to (also?) set the blink timing of the netdev trigger when offloading.
-
-This breaks many if not all of the existing PHY drivers which offer
-offloading LED operations, as those drivers would just put the LED into
-blinking state after .led_blink_set() has been called.
-
-Unfortunately the change even made it into stable kernels for unknown
-reasons, so it should be reverted there as well.
-
-Fixes: c629c972b310a ("leds: trigger: netdev: Configure LED blink interval for HW offload")
-Link: https://lore.kernel.org/linux-leds/c6134e26-2e45-4121-aa15-58aaef327201@lunn.ch/T/#m9d6fe81bbcb273e59f12bbedbd633edd32118387
-Suggested-by: Andrew Lunn <andrew@lunn.ch>
-Cc: stable@vger.kernel.org
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
-Reviewed-by: Andrew Lunn <andrew@lunn.ch>
-Link: https://lore.kernel.org/r/6dcc77ee1c9676891d6250d8994850f521426a0f.1752334655.git.daniel@makrotopia.org
-Signed-off-by: Lee Jones <lee@kernel.org>
----
- drivers/leds/trigger/ledtrig-netdev.c | 16 +++-------------
- 1 file changed, 3 insertions(+), 13 deletions(-)
-
---- a/drivers/leds/trigger/ledtrig-netdev.c
-+++ b/drivers/leds/trigger/ledtrig-netdev.c
-@@ -54,7 +54,6 @@ struct led_netdev_data {
- unsigned int last_activity;
-
- unsigned long mode;
-- unsigned long blink_delay;
- int link_speed;
- u8 duplex;
-
-@@ -70,10 +69,6 @@ static void set_baseline_state(struct le
- /* Already validated, hw control is possible with the requested mode */
- if (trigger_data->hw_control) {
- led_cdev->hw_control_set(led_cdev, trigger_data->mode);
-- if (led_cdev->blink_set) {
-- led_cdev->blink_set(led_cdev, &trigger_data->blink_delay,
-- &trigger_data->blink_delay);
-- }
-
- return;
- }
-@@ -415,11 +410,10 @@ static ssize_t interval_store(struct dev
- size_t size)
- {
- struct led_netdev_data *trigger_data = led_trigger_get_drvdata(dev);
-- struct led_classdev *led_cdev = trigger_data->led_cdev;
- unsigned long value;
- int ret;
-
-- if (trigger_data->hw_control && !led_cdev->blink_set)
-+ if (trigger_data->hw_control)
- return -EINVAL;
-
- ret = kstrtoul(buf, 0, &value);
-@@ -428,13 +422,9 @@ static ssize_t interval_store(struct dev
-
- /* impose some basic bounds on the timer interval */
- if (value >= 5 && value <= 10000) {
-- if (trigger_data->hw_control) {
-- trigger_data->blink_delay = value;
-- } else {
-- cancel_delayed_work_sync(&trigger_data->work);
-+ cancel_delayed_work_sync(&trigger_data->work);
-
-- atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
-- }
-+ atomic_set(&trigger_data->interval, msecs_to_jiffies(value));
- set_baseline_state(trigger_data); /* resets timer */
- }
-
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -11020,7 +11020,8 @@ void free_netdev(struct net_device *dev)
+@@ -11032,7 +11032,8 @@ void free_netdev(struct net_device *dev)
dev->xdp_bulkq = NULL;
/* Compatibility with error handling in drivers */
--- a/crypto/jitterentropy-kcapi.c
+++ b/crypto/jitterentropy-kcapi.c
-@@ -245,7 +245,7 @@ static int jent_kcapi_init(struct crypto
+@@ -246,7 +246,7 @@ static int jent_kcapi_init(struct crypto
crypto_shash_init(sdesc);
rng->sdesc = sdesc;
if (!rng->entropy_collector) {
ret = -ENOMEM;
goto err;
-@@ -334,7 +334,7 @@ static int __init jent_mod_init(void)
+@@ -335,7 +335,7 @@ static int __init jent_mod_init(void)
desc->tfm = tfm;
crypto_shash_init(desc);
depends on CRYPTO_JITTERENTROPY
--- a/crypto/jitterentropy-kcapi.c
+++ b/crypto/jitterentropy-kcapi.c
-@@ -256,7 +256,9 @@ static int jent_kcapi_init(struct crypto
+@@ -257,7 +257,9 @@ static int jent_kcapi_init(struct crypto
crypto_shash_init(sdesc);
rng->sdesc = sdesc;
if (!rng->entropy_collector) {
ret = -ENOMEM;
goto err;
-@@ -345,7 +347,7 @@ static int __init jent_mod_init(void)
+@@ -346,7 +348,7 @@ static int __init jent_mod_init(void)
desc->tfm = tfm;
crypto_shash_init(desc);
--- a/crypto/jitterentropy-kcapi.c
+++ b/crypto/jitterentropy-kcapi.c
-@@ -347,7 +347,7 @@ static int __init jent_mod_init(void)
+@@ -348,7 +348,7 @@ static int __init jent_mod_init(void)
desc->tfm = tfm;
crypto_shash_init(desc);
endif # MODULES
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
-@@ -997,6 +997,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
+@@ -999,6 +999,7 @@ size_t modinfo_attrs_count = ARRAY_SIZE(
static const char vermagic[] = VERMAGIC_STRING;
int try_to_force_load(struct module *mod, const char *reason)
{
#ifdef CONFIG_MODULE_FORCE_LOAD
-@@ -1008,6 +1009,7 @@ int try_to_force_load(struct module *mod
+@@ -1010,6 +1011,7 @@ int try_to_force_load(struct module *mod
return -ENOEXEC;
#endif
}
/* Parse tag=value strings from .modinfo section */
char *module_next_tag_pair(char *string, unsigned long *secsize)
-@@ -2075,9 +2077,11 @@ static void module_augment_kernel_taints
+@@ -2077,9 +2079,11 @@ static void module_augment_kernel_taints
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL;
-@@ -2091,6 +2095,7 @@ static int check_modinfo(struct module *
+@@ -2093,6 +2097,7 @@ static int check_modinfo(struct module *
info->name, modmagic, vermagic);
return -ENOEXEC;
}
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3628,6 +3628,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3640,6 +3640,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
u32));
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
-@@ -2242,9 +2259,11 @@ static void __sk_free(struct sock *sk)
+@@ -2258,9 +2275,11 @@ static void __sk_free(struct sock *sk)
if (likely(sk->sk_net_refcnt))
sock_inuse_add(sock_net(sk), -1);
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -4143,6 +4143,8 @@ static __net_initdata struct pernet_oper
+@@ -4160,6 +4160,8 @@ static __net_initdata struct pernet_oper
static int __init proto_init(void)
{
-LINUX_VERSION-6.6 = .102
-LINUX_KERNEL_HASH-6.6.102 = 80d2feb7334c30bacbe1e7dafa9ea415efb2c0ea4f4740ecbd1467cf5d94de5c
+LINUX_VERSION-6.6 = .103
+LINUX_KERNEL_HASH-6.6.103 = d288dd38c3e62ba576ba6b3ad2a84cfba65cd43b702f6c50d1f701aee942b18e
#endif /* __KERNEL__ */
/**
-@@ -258,6 +260,4 @@ static inline void *offset_to_ptr(const
+@@ -250,6 +252,4 @@ static inline void *offset_to_ptr(const
*/
#define prevent_tail_call_optimization() mb()
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -940,6 +940,7 @@ static const struct spinand_manufacturer
+@@ -943,6 +943,7 @@ static const struct spinand_manufacturer
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
return features;
--- a/net/core/sock.c
+++ b/net/core/sock.c
-@@ -2444,7 +2444,7 @@ void sk_setup_caps(struct sock *sk, stru
+@@ -2461,7 +2461,7 @@ void sk_setup_caps(struct sock *sk, stru
if (sk_is_tcp(sk))
sk->sk_route_caps |= NETIF_F_GSO;
if (sk->sk_route_caps & NETIF_F_GSO)
seq_printf(m, "%05x %s %7s", i,
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -516,24 +516,21 @@ static int
+@@ -518,24 +518,21 @@ static int
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
{
struct mtk_flow_entry *entry;
--- a/drivers/bus/mhi/host/main.c
+++ b/drivers/bus/mhi/host/main.c
-@@ -906,6 +906,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -916,6 +916,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
switch (event) {
case MHI_EE_SBL:
st = DEV_ST_TRANSITION_SBL;
return 0;
err_reset_phy:
-@@ -1457,14 +1456,16 @@ static const struct imx6_pcie_drvdata dr
+@@ -1458,14 +1457,16 @@ static const struct imx6_pcie_drvdata dr
},
[IMX8MM] = {
.variant = IMX8MM,