Explorar o código

kernel: bump 6.6 to 6.6.33 and adjust subarches

This commit accomplishes three goals:
1. bump 6.6 to 6.6.33
2. kernel: modules: video: change package definition for fb for
   upstream changes[1]
3. kernel/multiple subtargets: add CONFIG_FB_IOMEM_FOPS=y to all
   subtargets which also set CONFIG_FB_CORE=y.

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.33

Removed upstreamed:
	pending-6.6/195-block-fix-and-simplify-blkdevparts-cmdline-parsing.patch[2]
	gemini/patches-6.6/0003-net-ethernet-cortina-Locking-fixes.patch[3]

Manually rebased:
	ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=c00e8fd749502c02085534c60b1edca4fc479c91
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.33&id=99bbbd9aea059f8a206736dc601be2ae61d366fb
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.6.33&id=8f6f82d6a205ceb3aba8d279f9ff6eeea0b1689b

Build system: x86/64
Build-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3
Run-tested: x86/64/AMD Cezanne, flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3

Tested-by: Stijn Segers <[email protected]>
Signed-off-by: John Audia <[email protected]>
John Audia hai 1 ano
pai
achega
f34620f146
Modificáronse 27 ficheiros con 37 adicións e 318 borrados
  1. 2 2
      include/kernel-6.6
  2. 2 1
      package/kernel/linux/modules/video.mk
  3. 1 1
      target/linux/ath79/patches-6.6/900-unaligned_access_hacks.patch
  4. 1 0
      target/linux/gemini/config-6.6
  5. 1 1
      target/linux/gemini/patches-6.6/0001-net-ethernet-cortina-Drop-TSO-support.patch
  6. 0 73
      target/linux/gemini/patches-6.6/0003-net-ethernet-cortina-Locking-fixes.patch
  7. 1 1
      target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch
  8. 1 1
      target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch
  9. 0 217
      target/linux/generic/pending-6.6/195-block-fix-and-simplify-blkdevparts-cmdline-parsing.patch
  10. 1 1
      target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch
  11. 3 3
      target/linux/generic/pending-6.6/630-packet_socket_type.patch
  12. 1 1
      target/linux/generic/pending-6.6/680-net-add-TCP-fraglist-GRO-support.patch
  13. 1 1
      target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch
  14. 2 2
      target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch
  15. 1 1
      target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch
  16. 1 1
      target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
  17. 1 1
      target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch
  18. 1 0
      target/linux/layerscape/armv8_64b/config-6.6
  19. 1 0
      target/linux/loongarch64/config-6.6
  20. 1 0
      target/linux/mediatek/mt7623/config-6.6
  21. 1 1
      target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch
  22. 3 3
      target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch
  23. 6 6
      target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch
  24. 1 0
      target/linux/tegra/config-6.6
  25. 1 0
      target/linux/x86/64/config-6.6
  26. 1 0
      target/linux/x86/generic/config-6.6
  27. 1 0
      target/linux/x86/legacy/config-6.6

+ 2 - 2
include/kernel-6.6

@@ -1,2 +1,2 @@
-LINUX_VERSION-6.6 = .32
-LINUX_KERNEL_HASH-6.6.32 = aaa824eaf07f61911d22b75ff090a403c3dd0bd73e23933e0bba8b5971436ce1
+LINUX_VERSION-6.6 = .33
+LINUX_KERNEL_HASH-6.6.33 = a13ebc20dc2a75722699949af74aa86a4ce5d544d6daaa6a7de4e8c81b40de97

+ 2 - 1
package/kernel/linux/modules/video.mk

@@ -106,7 +106,8 @@ define KernelPackage/fb
 	CONFIG_VT_CONSOLE=y \
 	CONFIG_VT_HW_CONSOLE_BINDING=y
   FILES:=$(LINUX_DIR)/drivers/video/fbdev/core/fb.ko \
-	$(LINUX_DIR)/lib/fonts/font.ko
+	$(LINUX_DIR)/lib/fonts/font.ko \
+	$(LINUX_DIR)/drivers/video/fbdev/core/[email protected]
   AUTOLOAD:=$(call AutoLoad,06,fb font)
 endef
 

+ 1 - 1
target/linux/ath79/patches-6.6/900-unaligned_access_hacks.patch

@@ -337,7 +337,7 @@ SVN-Revision: 35130
  #endif /* _LINUX_TYPES_H */
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1506,8 +1506,8 @@ struct sk_buff *inet_gro_receive(struct
+@@ -1508,8 +1508,8 @@ struct sk_buff *inet_gro_receive(struct
  		goto out;
  
  	NAPI_GRO_CB(skb)->proto = proto;

+ 1 - 0
target/linux/gemini/config-6.6

@@ -162,6 +162,7 @@ CONFIG_FB=y
 CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DMAMEM_HELPERS=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_SYSMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
 CONFIG_FB_SYS_COPYAREA=y

+ 1 - 1
target/linux/gemini/patches-6.6/0001-net-ethernet-cortina-Drop-TSO-support.patch

@@ -51,7 +51,7 @@ Signed-off-by: David S. Miller <[email protected]>
  
  /**
   * struct gmac_queue_page - page buffer per-page info
-@@ -1143,23 +1142,13 @@ static int gmac_map_tx_bufs(struct net_d
+@@ -1148,23 +1147,13 @@ static int gmac_map_tx_bufs(struct net_d
  	struct gmac_txdesc *txd;
  	skb_frag_t *skb_frag;
  	dma_addr_t mapping;

+ 0 - 73
target/linux/gemini/patches-6.6/0003-net-ethernet-cortina-Locking-fixes.patch

@@ -1,73 +0,0 @@
-From 81889eb2b37bc21df4ff259441e8fc12d4f27cd9 Mon Sep 17 00:00:00 2001
-From: Linus Walleij <[email protected]>
-Date: Thu, 9 May 2024 08:48:31 +0200
-Subject: [PATCH] net: ethernet: cortina: Locking fixes
-
-This fixes a probably long standing problem in the Cortina
-Gemini ethernet driver: there are some paths in the code
-where the IRQ registers are written without taking the proper
-locks.
-
-Fixes: 4d5ae32f5e1e ("net: ethernet: Add a driver for Gemini gigabit ethernet")
-Signed-off-by: Linus Walleij <[email protected]>
----
- drivers/net/ethernet/cortina/gemini.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/cortina/gemini.c
-+++ b/drivers/net/ethernet/cortina/gemini.c
-@@ -1107,10 +1107,13 @@ static void gmac_tx_irq_enable(struct ne
- {
- 	struct gemini_ethernet_port *port = netdev_priv(netdev);
- 	struct gemini_ethernet *geth = port->geth;
-+	unsigned long flags;
- 	u32 val, mask;
- 
- 	netdev_dbg(netdev, "%s device %d\n", __func__, netdev->dev_id);
- 
-+	spin_lock_irqsave(&geth->irq_lock, flags);
-+
- 	mask = GMAC0_IRQ0_TXQ0_INTS << (6 * netdev->dev_id + txq);
- 
- 	if (en)
-@@ -1119,6 +1122,8 @@ static void gmac_tx_irq_enable(struct ne
- 	val = readl(geth->base + GLOBAL_INTERRUPT_ENABLE_0_REG);
- 	val = en ? val | mask : val & ~mask;
- 	writel(val, geth->base + GLOBAL_INTERRUPT_ENABLE_0_REG);
-+
-+	spin_unlock_irqrestore(&geth->irq_lock, flags);
- }
- 
- static void gmac_tx_irq(struct net_device *netdev, unsigned int txq_num)
-@@ -1415,15 +1420,19 @@ static unsigned int gmac_rx(struct net_d
- 	union gmac_rxdesc_3 word3;
- 	struct page *page = NULL;
- 	unsigned int page_offs;
-+	unsigned long flags;
- 	unsigned short r, w;
- 	union dma_rwptr rw;
- 	dma_addr_t mapping;
- 	int frag_nr = 0;
- 
-+	spin_lock_irqsave(&geth->irq_lock, flags);
- 	rw.bits32 = readl(ptr_reg);
- 	/* Reset interrupt as all packages until here are taken into account */
- 	writel(DEFAULT_Q0_INT_BIT << netdev->dev_id,
- 	       geth->base + GLOBAL_INTERRUPT_STATUS_1_REG);
-+	spin_unlock_irqrestore(&geth->irq_lock, flags);
-+
- 	r = rw.bits.rptr;
- 	w = rw.bits.wptr;
- 
-@@ -1726,10 +1735,9 @@ static irqreturn_t gmac_irq(int irq, voi
- 		gmac_update_hw_stats(netdev);
- 
- 	if (val & (GMAC0_RX_OVERRUN_INT_BIT << (netdev->dev_id * 8))) {
-+		spin_lock(&geth->irq_lock);
- 		writel(GMAC0_RXDERR_INT_BIT << (netdev->dev_id * 8),
- 		       geth->base + GLOBAL_INTERRUPT_STATUS_4_REG);
--
--		spin_lock(&geth->irq_lock);
- 		u64_stats_update_begin(&port->ir_stats_syncp);
- 		++port->stats.rx_fifo_errors;
- 		u64_stats_update_end(&port->ir_stats_syncp);

+ 1 - 1
target/linux/generic/hack-6.6/402-mtd-blktrans-call-add-disks-after-mtd-device.patch

@@ -91,7 +91,7 @@ Signed-off-by: Daniel Golle <[email protected]>
  
  #include "mtdcore.h"
  
-@@ -1125,6 +1126,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1127,6 +1128,8 @@ int mtd_device_parse_register(struct mtd
  		register_reboot_notifier(&mtd->reboot_notifier);
  	}
  

+ 1 - 1
target/linux/generic/hack-6.6/711-net-dsa-mv88e6xxx-disable-ATU-violation.patch

@@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
 
 --- a/drivers/net/dsa/mv88e6xxx/chip.c
 +++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -3365,6 +3365,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -3375,6 +3375,9 @@ static int mv88e6xxx_setup_port(struct m
  	else
  		reg = 1 << port;
  

+ 0 - 217
target/linux/generic/pending-6.6/195-block-fix-and-simplify-blkdevparts-cmdline-parsing.patch

@@ -1,217 +0,0 @@
-From patchwork Sun Apr 21 07:39:52 2024
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: INAGAKI Hiroshi <[email protected]>
-X-Patchwork-Id: 13637306
-From: INAGAKI Hiroshi <[email protected]>
-To: [email protected]
-Cc: [email protected],
-	[email protected],
-	[email protected],
-	[email protected],
-	[email protected],
-	INAGAKI Hiroshi <[email protected]>,
-	Naohiro Aota <[email protected]>
-Subject: [PATCH] block: fix and simplify blkdevparts= cmdline parsing
-Date: Sun, 21 Apr 2024 16:39:52 +0900
-Message-ID: <[email protected]>
-X-Mailer: git-send-email 2.42.0.windows.2
-Precedence: bulk
-X-Mailing-List: [email protected]
-List-Id: <linux-block.vger.kernel.org>
-List-Subscribe: <mailto:[email protected]>
-List-Unsubscribe: <mailto:[email protected]>
-MIME-Version: 1.0
-
-Fix the cmdline parsing of the "blkdevparts=" parameter using strsep(),
-which makes the code simpler.
-
-Before commit 146afeb235cc ("block: use strscpy() to instead of
-strncpy()"), we used a strncpy() to copy a block device name and partition
-names. The commit simply replaced a strncpy() and NULL termination with
-a strscpy(). It did not update calculations of length passed to strscpy().
-While the length passed to strncpy() is just a length of valid characters
-without NULL termination ('\0'), strscpy() takes it as a length of the
-destination buffer, including a NULL termination.
-
-Since the source buffer is not necessarily NULL terminated, the current
-code copies "length - 1" characters and puts a NULL character in the
-destination buffer. It replaces the last character with NULL and breaks
-the parsing.
-
-As an example, that buffer will be passed to parse_parts() and breaks
-parsing sub-partitions due to the missing ')' at the end, like the
-following.
-
-example (Check Point V-80 & OpenWrt):
-
-- Linux Kernel 6.6
-
-  [    0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
-  ...
-  [    0.884016] mmc1: new HS200 MMC card at address 0001
-  [    0.889951] mmcblk1: mmc1:0001 004GA0 3.69 GiB
-  [    0.895043] cmdline partition format is invalid.
-  [    0.895704]  mmcblk1: p1
-  [    0.903447] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB
-  [    0.908667] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB
-  [    0.913765] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0)
-
-  1. "48M@10M(kernel-1),..." is passed to strscpy() with length=17
-     from parse_parts()
-  2. strscpy() returns -E2BIG and the destination buffer has
-     "48M@10M(kernel-1\0"
-  3. "48M@10M(kernel-1\0" is passed to parse_subpart()
-  4. parse_subpart() fails to find ')' when parsing a partition name,
-     and returns error
-
-- Linux Kernel 6.1
-
-  [    0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
-  ...
-  [    0.953142] mmc1: new HS200 MMC card at address 0001
-  [    0.959114] mmcblk1: mmc1:0001 004GA0 3.69 GiB
-  [    0.964259]  mmcblk1: p1(kernel-1) p2(dtb-1) p3(rootfs-1) p4(kernel-2) p5(dtb-2) 6(rootfs-2) p7(default_sw) p8(logs) p9(preset_cfg) p10(adsl) p11(storage)
-  [    0.979174] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB
-  [    0.984674] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB
-  [    0.989926] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0
-
-By the way, strscpy() takes a length of destination buffer and it is
-often confusing when copying characters with a specified length. Using
-strsep() helps to separate the string by the specified character. Then,
-we can use strscpy() naturally with the size of the destination buffer.
-
-Separating the string on the fly is also useful to omit the redundant
-string copy, reducing memory usage and improve the code readability.
-
-Fixes: 146afeb235cc ("block: use strscpy() to instead of strncpy()")
-Suggested-by: Naohiro Aota <[email protected]>
-Signed-off-by: INAGAKI Hiroshi <[email protected]>
-Reviewed-by: Daniel Golle <[email protected]>
----
- block/partitions/cmdline.c | 49 ++++++++++----------------------------
- 1 file changed, 12 insertions(+), 37 deletions(-)
-
---- a/block/partitions/cmdline.c
-+++ b/block/partitions/cmdline.c
-@@ -70,8 +70,8 @@ static int parse_subpart(struct cmdline_
- 	}
- 
- 	if (*partdef == '(') {
--		int length;
--		char *next = strchr(++partdef, ')');
-+		partdef++;
-+		char *next = strsep(&partdef, ")");
- 
- 		if (!next) {
- 			pr_warn("cmdline partition format is invalid.");
-@@ -79,11 +79,7 @@ static int parse_subpart(struct cmdline_
- 			goto fail;
- 		}
- 
--		length = min_t(int, next - partdef,
--			       sizeof(new_subpart->name) - 1);
--		strscpy(new_subpart->name, partdef, length);
--
--		partdef = ++next;
-+		strscpy(new_subpart->name, next, sizeof(new_subpart->name));
- 	} else
- 		new_subpart->name[0] = '\0';
- 
-@@ -117,14 +113,12 @@ static void free_subpart(struct cmdline_
- 	}
- }
- 
--static int parse_parts(struct cmdline_parts **parts, const char *bdevdef)
-+static int parse_parts(struct cmdline_parts **parts, char *bdevdef)
- {
- 	int ret = -EINVAL;
- 	char *next;
--	int length;
- 	struct cmdline_subpart **next_subpart;
- 	struct cmdline_parts *newparts;
--	char buf[BDEVNAME_SIZE + 32 + 4];
- 
- 	*parts = NULL;
- 
-@@ -132,28 +126,19 @@ static int parse_parts(struct cmdline_pa
- 	if (!newparts)
- 		return -ENOMEM;
- 
--	next = strchr(bdevdef, ':');
-+	next = strsep(&bdevdef, ":");
- 	if (!next) {
- 		pr_warn("cmdline partition has no block device.");
- 		goto fail;
- 	}
- 
--	length = min_t(int, next - bdevdef, sizeof(newparts->name) - 1);
--	strscpy(newparts->name, bdevdef, length);
-+	strscpy(newparts->name, next, sizeof(newparts->name));
- 	newparts->nr_subparts = 0;
- 
- 	next_subpart = &newparts->subpart;
- 
--	while (next && *(++next)) {
--		bdevdef = next;
--		next = strchr(bdevdef, ',');
--
--		length = (!next) ? (sizeof(buf) - 1) :
--			min_t(int, next - bdevdef, sizeof(buf) - 1);
--
--		strscpy(buf, bdevdef, length);
--
--		ret = parse_subpart(next_subpart, buf);
-+	while ((next = strsep(&bdevdef, ","))) {
-+		ret = parse_subpart(next_subpart, next);
- 		if (ret)
- 			goto fail;
- 
-@@ -199,24 +184,17 @@ static int cmdline_parts_parse(struct cm
- 
- 	*parts = NULL;
- 
--	next = pbuf = buf = kstrdup(cmdline, GFP_KERNEL);
-+	pbuf = buf = kstrdup(cmdline, GFP_KERNEL);
- 	if (!buf)
- 		return -ENOMEM;
- 
- 	next_parts = parts;
- 
--	while (next && *pbuf) {
--		next = strchr(pbuf, ';');
--		if (next)
--			*next = '\0';
--
--		ret = parse_parts(next_parts, pbuf);
-+	while ((next = strsep(&pbuf, ";"))) {
-+		ret = parse_parts(next_parts, next);
- 		if (ret)
- 			goto fail;
- 
--		if (next)
--			pbuf = ++next;
--
- 		next_parts = &(*next_parts)->next_parts;
- 	}
- 
-@@ -250,7 +228,6 @@ static struct cmdline_parts *bdev_parts;
- static int add_part(int slot, struct cmdline_subpart *subpart,
- 		struct parsed_partitions *state)
- {
--	int label_min;
- 	struct partition_meta_info *info;
- 	char tmp[sizeof(info->volname) + 4];
- 
-@@ -262,9 +239,7 @@ static int add_part(int slot, struct cmd
- 
- 	info = &state->parts[slot].info;
- 
--	label_min = min_t(int, sizeof(info->volname) - 1,
--			  sizeof(subpart->name));
--	strscpy(info->volname, subpart->name, label_min);
-+	strscpy(info->volname, subpart->name, sizeof(info->volname));
- 
- 	snprintf(tmp, sizeof(tmp), "(%s)", info->volname);
- 	strlcat(state->pp_buf, tmp, PAGE_SIZE);

+ 1 - 1
target/linux/generic/pending-6.6/510-block-add-uImage.FIT-subimage-block-driver.patch

@@ -36,7 +36,7 @@ Signed-off-by: Daniel Golle <[email protected]>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -22006,6 +22006,12 @@ F:	Documentation/filesystems/ubifs-authe
+@@ -22014,6 +22014,12 @@ F:	Documentation/filesystems/ubifs-authe
  F:	Documentation/filesystems/ubifs.rst
  F:	fs/ubifs/
  

+ 3 - 3
target/linux/generic/pending-6.6/630-packet_socket_type.patch

@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3386,6 +3388,7 @@ static int packet_create(struct net *net
+@@ -3385,6 +3387,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -4035,6 +4038,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -4034,6 +4037,16 @@ packet_setsockopt(struct socket *sock, i
  		packet_sock_flag_set(po, PACKET_SOCK_QDISC_BYPASS, val);
  		return 0;
  	}
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -4094,6 +4107,13 @@ static int packet_getsockopt(struct sock
+@@ -4093,6 +4106,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR_SZ:
  		val = READ_ONCE(po->vnet_hdr_sz);
  		break;

+ 1 - 1
target/linux/generic/pending-6.6/680-net-add-TCP-fraglist-GRO-support.patch

@@ -31,7 +31,7 @@ Signe-off-by: Felix Fietkau <[email protected]>
  static inline void gro_normal_list(struct napi_struct *napi)
 --- a/include/net/tcp.h
 +++ b/include/net/tcp.h
-@@ -2082,7 +2082,10 @@ void tcp_v4_destroy_sock(struct sock *sk
+@@ -2083,7 +2083,10 @@ void tcp_v4_destroy_sock(struct sock *sk
  
  struct sk_buff *tcp_gso_segment(struct sk_buff *skb,
  				netdev_features_t features);

+ 1 - 1
target/linux/generic/pending-6.6/739-05-net-pcs-add-driver-for-MediaTek-USXGMII-PCS.patch

@@ -19,7 +19,7 @@ Signed-off-by: Daniel Golle <[email protected]>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -13348,7 +13348,9 @@ M:	Daniel Golle <[email protected]>
+@@ -13356,7 +13356,9 @@ M:	Daniel Golle <[email protected]>
  L:	[email protected]
  S:	Maintained
  F:	drivers/net/pcs/pcs-mtk-lynxi.c

+ 2 - 2
target/linux/generic/pending-6.6/760-net-core-add-optional-threading-for-backlog-processi.patch

@@ -157,7 +157,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
  			   int (*poll)(struct napi_struct *, int), int weight)
  {
-@@ -11306,6 +11377,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11307,6 +11378,9 @@ static int dev_cpu_dead(unsigned int old
  	raise_softirq_irqoff(NET_TX_SOFTIRQ);
  	local_irq_enable();
  
@@ -167,7 +167,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
  #ifdef CONFIG_RPS
  	remsd = oldsd->rps_ipi_list;
  	oldsd->rps_ipi_list = NULL;
-@@ -11621,6 +11695,7 @@ static int __init net_dev_init(void)
+@@ -11622,6 +11696,7 @@ static int __init net_dev_init(void)
  		INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
  		spin_lock_init(&sd->defer_lock);
  

+ 1 - 1
target/linux/generic/pending-6.6/768-net-dsa-mv88e6xxx-Request-assisted-learning-on-CPU-port.patch

@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <[email protected]>
 
 --- a/drivers/net/dsa/mv88e6xxx/chip.c
 +++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -6947,6 +6947,7 @@ static int mv88e6xxx_register_switch(str
+@@ -6989,6 +6989,7 @@ static int mv88e6xxx_register_switch(str
  	ds->ops = &mv88e6xxx_switch_ops;
  	ds->ageing_time_min = chip->info->age_time_coeff;
  	ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;

+ 1 - 1
target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch

@@ -32,7 +32,7 @@ Signed-off-by: Maxime Chevallier <[email protected]>
 
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -17708,6 +17708,13 @@ L:	[email protected]
+@@ -17716,6 +17716,13 @@ L:	[email protected]
  S:	Maintained
  F:	drivers/net/ethernet/qualcomm/emac/
  

+ 1 - 1
target/linux/ipq40xx/patches-6.6/701-net-dsa-add-out-of-band-tagging-protocol.patch

@@ -64,7 +64,7 @@ Signed-off-by: Maxime Chevallier <[email protected]>
  
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -17714,6 +17714,7 @@ L:	[email protected]
+@@ -17722,6 +17722,7 @@ L:	[email protected]
  S:	Maintained
  F:	Documentation/devicetree/bindings/net/qcom,ipq4019-ess-edma.yaml
  F:	drivers/net/ethernet/qualcomm/ipqess/

+ 1 - 0
target/linux/layerscape/armv8_64b/config-6.6

@@ -283,6 +283,7 @@ CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y

+ 1 - 0
target/linux/loongarch64/config-6.6

@@ -247,6 +247,7 @@ CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DEVICE=y
 CONFIG_FB_EFI=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_IOMEM_HELPERS=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_SIMPLE=y

+ 1 - 0
target/linux/mediatek/mt7623/config-6.6

@@ -217,6 +217,7 @@ CONFIG_FB=y
 CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DEVICE=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_SYSMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
 CONFIG_FB_SYS_COPYAREA=y

+ 1 - 1
target/linux/mediatek/patches-6.6/041-block-fit-partition-parser.patch

@@ -19,7 +19,7 @@ Subject: [PATCH] kernel: add block fit partition parser
 
 --- a/block/blk.h
 +++ b/block/blk.h
-@@ -423,6 +423,8 @@ void blk_free_ext_minor(unsigned int min
+@@ -424,6 +424,8 @@ void blk_free_ext_minor(unsigned int min
  #define ADDPART_FLAG_NONE	0
  #define ADDPART_FLAG_RAID	1
  #define ADDPART_FLAG_WHOLEDISK	2

+ 3 - 3
target/linux/mediatek/patches-6.6/432-drivers-spi-Add-support-for-dynamic-calibration.patch

@@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <[email protected]>
 
 --- a/drivers/spi/spi.c
 +++ b/drivers/spi/spi.c
-@@ -1366,6 +1366,70 @@ static int spi_transfer_wait(struct spi_
+@@ -1370,6 +1370,70 @@ static int spi_transfer_wait(struct spi_
  	return 0;
  }
  
@@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <[email protected]>
  static void _spi_transfer_delay_ns(u32 ns)
  {
  	if (!ns)
-@@ -2211,6 +2275,75 @@ void spi_flush_queue(struct spi_controll
+@@ -2215,6 +2279,75 @@ void spi_flush_queue(struct spi_controll
  /*-------------------------------------------------------------------------*/
  
  #if defined(CONFIG_OF)
@@ -158,7 +158,7 @@ Signed-off-by: SkyLake.Huang <[email protected]>
  static void of_spi_parse_dt_cs_delay(struct device_node *nc,
  				     struct spi_delay *delay, const char *prop)
  {
-@@ -2350,6 +2483,10 @@ of_register_spi_device(struct spi_contro
+@@ -2354,6 +2487,10 @@ of_register_spi_device(struct spi_contro
  	if (rc)
  		goto err_out;
  

+ 6 - 6
target/linux/ramips/patches-6.6/810-uvc-add-iPassion-iP2970-support.patch

@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <[email protected]>
 
 --- a/drivers/media/usb/uvc/uvc_driver.c
 +++ b/drivers/media/usb/uvc/uvc_driver.c
-@@ -3120,6 +3120,18 @@ static const struct usb_device_id uvc_id
+@@ -3151,6 +3151,18 @@ static const struct usb_device_id uvc_id
  	  .bInterfaceSubClass	= 1,
  	  .bInterfaceProtocol	= 0,
  	  .driver_info		= UVC_INFO_META(V4L2_META_FMT_D4XX) },
@@ -225,16 +225,16 @@ Signed-off-by: John Crispin <[email protected]>
  	for_each_uvc_urb(uvc_urb, stream) {
 --- a/drivers/media/usb/uvc/uvcvideo.h
 +++ b/drivers/media/usb/uvc/uvcvideo.h
-@@ -73,6 +73,8 @@
- #define UVC_QUIRK_FORCE_Y8		0x00000800
+@@ -74,6 +74,8 @@
  #define UVC_QUIRK_FORCE_BPP		0x00001000
  #define UVC_QUIRK_WAKE_AUTOSUSPEND	0x00002000
-+#define UVC_QUIRK_MOTION		0x00004000
-+#define UVC_QUIRK_SINGLE_ISO		0x00008000
+ #define UVC_QUIRK_NO_RESET_RESUME	0x00004000
++#define UVC_QUIRK_MOTION		0x00008000
++#define UVC_QUIRK_SINGLE_ISO		0x00010000
  
  /* Format flags */
  #define UVC_FMT_FLAG_COMPRESSED		0x00000001
-@@ -582,6 +584,7 @@ struct uvc_device {
+@@ -583,6 +585,7 @@ struct uvc_device {
  
  	struct input_dev *input;
  	char input_phys[64];

+ 1 - 0
target/linux/tegra/config-6.6

@@ -197,6 +197,7 @@ CONFIG_FB=y
 CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DMAMEM_HELPERS=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_SYSMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
 CONFIG_FB_SYS_COPYAREA=y

+ 1 - 0
target/linux/x86/64/config-6.6

@@ -217,6 +217,7 @@ CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DEVICE=y
 CONFIG_FB_EFI=y
 CONFIG_FB_HYPERV=y
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_IOMEM_HELPERS=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_SIMPLE=y

+ 1 - 0
target/linux/x86/generic/config-6.6

@@ -152,6 +152,7 @@ CONFIG_FB_DEVICE=y
 CONFIG_FB_EFI=y
 CONFIG_FB_HYPERV=y
 # CONFIG_FB_I810 is not set
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_IOMEM_HELPERS=y
 CONFIG_FB_SIMPLE=y
 CONFIG_FB_SYSMEM_HELPERS=y

+ 1 - 0
target/linux/x86/legacy/config-6.6

@@ -111,6 +111,7 @@ CONFIG_FB_CORE=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DEVICE=y
 # CONFIG_FB_I810 is not set
+CONFIG_FB_IOMEM_FOPS=y
 CONFIG_FB_IOMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS=y
 CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y