[openwrt/openwrt] kernel: bump 6.12 to 6.12.35

LEDE Commits lede-commits at lists.infradead.org
Sat Jun 28 13:48:25 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/9ddeb304998671376e52111afb42688506e48356

commit 9ddeb304998671376e52111afb42688506e48356
Author: Shiji Yang <yangshiji66 at outlook.com>
AuthorDate: Fri Jun 27 22:30:02 2025 +0800

    kernel: bump 6.12 to 6.12.35
    
    Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.35
    
    Remove upstreamed patches:
      bcm27xx/patches-6.12/950-0961-media-imx335-Use-correct-register-width-for-HNUM.patch [1]
      bcm27xx/patches-6.12/950-1003-drivers-media-i2c-imx335-Fix-frame-size-enumeration.patch [2]
      gemini/patches-6.12/0001-net-ethernet-cortina-Use-TOE-TSO-on-all-TCP.patch [3]
      generic/backport-6.12/300-v6.16-mips-Add-std-flag-specified.patch [4]
      mvebu/patches-6.12/0004-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch [5]
      mvebu/patches-6.12/0005-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch [6]
      mvebu/patches-6.12/0006-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch [7]
      mvebu/patches-6.12/0007-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch [8]
    
    Manually rebased patches:
      bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch [9]
    
    All other patches are automatically refreshed.
    
    [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=b93864e0865f235a791e69dc9ef4f896e559ef77
    [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=1f78790d988c9d55cf8d4b4d511d4b3e38ecb81d
    [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=2bd434bb0eeb680c2b3dd6c68ca319b30cb8d47f
    [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=6dbda47fe8bd6aa978c150bc9d321a286d2cc3f4
    [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=2cd2022c38fa26257cc6eec100ae122de9c1541c
    [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=133f17922b3dbae44fe583fb898b92b03558a657
    [7] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=aefe45843ea667366e35df4fcfef5ff9051a86c9
    [8] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=461d5a73ae45fbe6c300a6e64600f9792684eb52
    [9] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.35&id=3f2098f4fba7718eb2501207ca6e99d22427f25a
    
    Signed-off-by: Shiji Yang <yangshiji66 at outlook.com>
    Link: https://github.com/openwrt/openwrt/pull/19249
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 .../patches-6.12/900-unaligned_access_hacks.patch  |  12 +-
 ...950-0057-MMC-added-alternative-MMC-driver.patch |   6 +-
 ...-0347-net-macb-Also-set-DMA-coherent-mask.patch |   6 +-
 ...-client-to-request-a-particular-dev-fbN-n.patch |  21 ++--
 ...s-mmc-add-SD-support-for-Command-Queueing.patch |   6 +-
 ...-preallocate-a-block-for-SD-extension-reg.patch |  22 ++--
 ...-export-SD-extension-register-read-write-.patch |  22 ++--
 ...-be-more-cautious-when-manipulating-Comma.patch |   2 +-
 ...-add-debugfs-entries-for-SD-extension-reg.patch |   6 +-
 ...-handle-1024-byte-SD-General-Info-lengths.patch |   4 +-
 ...t-posted-write-counts-for-SD-cards-in-CQ-.patch |   6 +-
 ...-disable-write-caching-on-Samsung-2023-mo.patch |   8 +-
 ...disable-cache-on-more-known-bad-Sandisk-c.patch |   2 +-
 ...add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch |   2 +-
 ...er-card-CQ-support-based-on-an-allow-list.patch |  10 +-
 ..._QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch |   4 +-
 ...nstream-DT-property-to-modify-CQE-and-or-.patch |   2 +-
 .../950-0777-drm-v3d-Remove-v3d-cpu_job.patch      |   2 +-
 ...-job-pointer-to-NULL-when-the-job-s-fence.patch |   8 +-
 ...ociate-a-V3D-tech-revision-to-all-support.patch |   4 +-
 ...-work-around-VL805-firmware-ASPM-meddling.patch |   2 +-
 ...0-0959-media-imx335-Support-vertical-flip.patch |   4 +-
 ...mx335-Use-correct-register-width-for-HNUM.patch |  24 ----
 ...dia-i2c-imx335-Fix-frame-size-enumeration.patch |  34 ------
 ...t-ethernet-cortina-Use-TOE-TSO-on-all-TCP.patch | 122 ---------------------
 .../300-v6.16-mips-Add-std-flag-specified.patch    |  44 --------
 ...td-rawnand-qcom-cleanup-qcom_nandc-driver.patch |   2 +-
 ...awnand-qcom-Add-qcom-prefix-to-common-api.patch |   2 +-
 ...ol-try-to-free-deferred-skbs-while-waitin.patch |   4 +-
 .../800-GPIO-add-named-gpio-exports.patch          |   2 +-
 .../linux/generic/hack-6.12/902-debloat_proc.patch |   2 +-
 target/linux/generic/kernel-6.12                   |   4 +-
 .../generic/pending-6.12/532-jffs2_eofdetect.patch |   2 +-
 ...ada-37xx-propagate-error-from-armada_37xx.patch |   2 +-
 ...ada-37xx-propagate-error-from-armada_37xx.patch |  36 ------
 ...ada-37xx-propagate-error-from-armada_37xx.patch |  42 -------
 ...ada-37xx-propagate-error-from-armada_37xx.patch |  35 ------
 ...ada-37xx-propagate-error-from-armada_37xx.patch |  31 ------
 .../810-uvc-add-iPassion-iP2970-support.patch      |   2 +-
 .../1011-net-stmmac-use-GFP_DMA32.patch            |   2 +-
 40 files changed, 96 insertions(+), 457 deletions(-)

diff --git a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch
index 224b8097e2..ea51478fd0 100644
--- a/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch
+++ b/target/linux/ath79/patches-6.12/900-unaligned_access_hacks.patch
@@ -623,7 +623,7 @@ SVN-Revision: 35130
  
  /*
   * Jumbo payload option, as described in RFC 2675 2.
-@@ -651,8 +651,8 @@ static inline void __ipv6_addr_set_half(
+@@ -642,8 +642,8 @@ static inline void __ipv6_addr_set_half(
  	}
  #endif
  #endif
@@ -634,7 +634,7 @@ SVN-Revision: 35130
  }
  
  static inline void ipv6_addr_set(struct in6_addr *addr,
-@@ -711,6 +711,8 @@ static inline bool ipv6_prefix_equal(con
+@@ -702,6 +702,8 @@ static inline bool ipv6_prefix_equal(con
  	const __be32 *a1 = addr1->s6_addr32;
  	const __be32 *a2 = addr2->s6_addr32;
  	unsigned int pdw, pbi;
@@ -643,7 +643,7 @@ SVN-Revision: 35130
  
  	/* check complete u32 in prefix */
  	pdw = prefixlen >> 5;
-@@ -719,7 +721,9 @@ static inline bool ipv6_prefix_equal(con
+@@ -710,7 +712,9 @@ static inline bool ipv6_prefix_equal(con
  
  	/* check incomplete u32 in prefix */
  	pbi = prefixlen & 0x1f;
@@ -654,7 +654,7 @@ SVN-Revision: 35130
  		return false;
  
  	return true;
-@@ -836,13 +840,13 @@ static inline void ipv6_addr_set_v4mappe
+@@ -827,13 +831,13 @@ static inline void ipv6_addr_set_v4mappe
   */
  static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
  {
@@ -670,7 +670,7 @@ SVN-Revision: 35130
  		if (xb)
  			return i * 32 + 31 - __fls(ntohl(xb));
  	}
-@@ -1037,17 +1041,18 @@ static inline u32 ip6_multipath_hash_fie
+@@ -1028,17 +1032,18 @@ static inline u32 ip6_multipath_hash_fie
  static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
  				__be32 flowlabel)
  {
@@ -750,7 +750,7 @@ SVN-Revision: 35130
  EXPORT_SYMBOL(xfrm_parse_spi);
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -4329,14 +4329,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -4338,14 +4338,16 @@ static bool tcp_parse_aligned_timestamp(
  {
  	const __be32 *ptr = (const __be32 *)(th + 1);
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch b/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch
index 57f8f2f970..8535111890 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch
@@ -344,7 +344,7 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  }
 --- a/drivers/mmc/core/quirks.h
 +++ b/drivers/mmc/core/quirks.h
-@@ -143,6 +143,14 @@ static const struct mmc_fixup __maybe_un
+@@ -153,6 +153,14 @@ static const struct mmc_fixup __maybe_un
  	MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
  		  MMC_QUIRK_BROKEN_SD_DISCARD),
  
@@ -2011,10 +2011,10 @@ Signed-off-by: Phil Elwell <phil at raspberrypi.com>
  		sdhci_dumpregs(host);
 --- a/include/linux/mmc/card.h
 +++ b/include/linux/mmc/card.h
-@@ -295,6 +295,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_SD_CACHE	(1<<15)	/* Disable broken SD cache support */
+@@ -296,6 +296,7 @@ struct mmc_card {
  #define MMC_QUIRK_BROKEN_CACHE_FLUSH	(1<<16)	/* Don't flush cache until the write has occurred */
  #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY	(1<<17) /* Disable broken SD poweroff notify support */
+ #define MMC_QUIRK_NO_UHS_DDR50_TUNING	(1<<18) /* Disable DDR50 tuning */
 +#define MMC_QUIRK_ERASE_BROKEN	(1<<31)		/* Skip erase */
  
  	bool			written_flag;	/* Indicates eMMC has been written since power on */
diff --git a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch
index 6b4058b725..d275ee438a 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0347-net-macb-Also-set-DMA-coherent-mask.patch
@@ -367,7 +367,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	spin_lock_init(&bp->lock);
  	spin_lock_init(&bp->stats_lock);
  
-@@ -5165,6 +5284,21 @@ static int macb_probe(struct platform_de
+@@ -5169,6 +5288,21 @@ static int macb_probe(struct platform_de
  	else
  		bp->phy_interface = interface;
  
@@ -389,7 +389,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/* IP specific init */
  	err = init(pdev);
  	if (err)
-@@ -5239,6 +5373,19 @@ static void macb_remove(struct platform_
+@@ -5243,6 +5377,19 @@ static void macb_remove(struct platform_
  	}
  }
  
@@ -409,7 +409,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  static int __maybe_unused macb_suspend(struct device *dev)
  {
  	struct net_device *netdev = dev_get_drvdata(dev);
-@@ -5492,6 +5639,7 @@ static const struct dev_pm_ops macb_pm_o
+@@ -5496,6 +5643,7 @@ static const struct dev_pm_ops macb_pm_o
  static struct platform_driver macb_driver = {
  	.probe		= macb_probe,
  	.remove_new	= macb_remove,
diff --git a/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch b/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch
index 12b86534ce..9322cedab0 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0392-fbdev-Allow-client-to-request-a-particular-dev-fbN-n.patch
@@ -22,33 +22,40 @@ Signed-off-by: Dave Stevenson <dave.stevenson at raspberrypi.com>
  #define for_each_registered_fb(i)		\
  	for (i = 0; i < FB_MAX; i++)		\
  		if (!registered_fb[i]) {} else
-@@ -398,10 +399,12 @@ static int do_register_framebuffer(struc
+@@ -399,9 +400,12 @@ static int do_register_framebuffer(struc
+ 	if (num_registered_fb == FB_MAX)
  		return -ENXIO;
  
- 	num_registered_fb++;
 -	for (i = 0 ; i < FB_MAX; i++)
 -		if (!registered_fb[i])
 -			break;
--	fb_info->node = i;
 +	if (!fb_info->custom_fb_num || fb_info->node >= FB_MAX || registered_fb[fb_info->node]) {
 +		for (i = min_dynamic_fb ; i < FB_MAX; i++)
 +			if (!registered_fb[i])
 +				break;
 +		fb_info->node = i;
 +	}
+ 
+ 	if (!fb_info->modelist.prev || !fb_info->modelist.next)
+ 		INIT_LIST_HEAD(&fb_info->modelist);
+@@ -411,7 +415,6 @@ static int do_register_framebuffer(struc
+ 	if (err < 0)
+ 		return err;
+ 
+-	fb_info->node = i;
  	refcount_set(&fb_info->count, 1);
  	mutex_init(&fb_info->lock);
  	mutex_init(&fb_info->mm_lock);
-@@ -436,7 +439,7 @@ static int do_register_framebuffer(struc
+@@ -442,7 +445,7 @@ static int do_register_framebuffer(struc
+ 		pm_vt_switch_required(fb_info->device, true);
  
- 	fb_var_to_videomode(&mode, &fb_info->var);
- 	fb_add_videomode(&mode, &fb_info->modelist);
+ 	num_registered_fb++;
 -	registered_fb[i] = fb_info;
 +	registered_fb[fb_info->node] = fb_info;
  
  #ifdef CONFIG_GUMSTIX_AM200EPD
  	{
-@@ -497,6 +500,12 @@ static void do_unregister_framebuffer(st
+@@ -503,6 +506,12 @@ static void do_unregister_framebuffer(st
  	put_fb_info(fb_info);
  }
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0427-drivers-mmc-add-SD-support-for-Command-Queueing.patch b/target/linux/bcm27xx/patches-6.12/950-0427-drivers-mmc-add-SD-support-for-Command-Queueing.patch
index 99aa00e319..550264ef6f 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0427-drivers-mmc-add-SD-support-for-Command-Queueing.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0427-drivers-mmc-add-SD-support-for-Command-Queueing.patch
@@ -91,7 +91,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	cmd.flags       &= ~MMC_RSP_CRC; /* Ignore CRC */
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1011,8 +1011,8 @@ static bool mmc_sd_card_using_v18(struct
+@@ -1027,8 +1027,8 @@ static bool mmc_sd_card_using_v18(struct
  	       (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
  }
  
@@ -102,7 +102,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  {
  	struct mmc_host *host = card->host;
  	struct mmc_request mrq = {};
-@@ -1170,8 +1170,14 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1186,8 +1186,14 @@ static int sd_parse_ext_reg_perf(struct
  		card->ext_perf.feature_support |= SD_EXT_PERF_CACHE;
  
  	/* Command queue support indicated via queue depth bits (0 to 4). */
@@ -118,7 +118,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  	card->ext_perf.fno = fno;
  	card->ext_perf.page = page;
-@@ -1558,13 +1564,41 @@ cont:
+@@ -1574,13 +1580,41 @@ cont:
  			goto free_card;
  	}
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0428-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch b/target/linux/bcm27xx/patches-6.12/950-0428-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch
index 554606f83f..0cf6030c76 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0428-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0428-drivers-mmc-preallocate-a-block-for-SD-extension-reg.patch
@@ -30,7 +30,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	kfree(card);
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1021,9 +1021,8 @@ int sd_write_ext_reg(struct mmc_card *ca
+@@ -1037,9 +1037,8 @@ int sd_write_ext_reg(struct mmc_card *ca
  	struct scatterlist sg;
  	u8 *reg_buf;
  
@@ -42,7 +42,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  	mrq.cmd = &cmd;
  	mrq.data = &data;
-@@ -1055,8 +1054,6 @@ int sd_write_ext_reg(struct mmc_card *ca
+@@ -1071,8 +1070,6 @@ int sd_write_ext_reg(struct mmc_card *ca
  	mmc_set_data_timeout(&data, card);
  	mmc_wait_for_req(host, &mrq);
  
@@ -51,7 +51,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/*
  	 * Note that, the SD card is allowed to signal busy on DAT0 up to 1s
  	 * after the CMD49. Although, let's leave this to be managed by the
-@@ -1097,9 +1094,7 @@ static int sd_parse_ext_reg_power(struct
+@@ -1113,9 +1110,7 @@ static int sd_parse_ext_reg_power(struct
  	int err;
  	u8 *reg_buf;
  
@@ -62,7 +62,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  	/* Read the extension register for power management function. */
  	err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
-@@ -1129,7 +1124,6 @@ static int sd_parse_ext_reg_power(struct
+@@ -1145,7 +1140,6 @@ static int sd_parse_ext_reg_power(struct
  	card->ext_power.offset = offset;
  
  out:
@@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	return err;
  }
  
-@@ -1139,9 +1133,7 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1155,9 +1149,7 @@ static int sd_parse_ext_reg_perf(struct
  	int err;
  	u8 *reg_buf;
  
@@ -81,7 +81,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  	err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
  	if (err) {
-@@ -1184,7 +1176,6 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1200,7 +1192,6 @@ static int sd_parse_ext_reg_perf(struct
  	card->ext_perf.offset = offset;
  
  out:
@@ -89,7 +89,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	return err;
  }
  
-@@ -1255,6 +1246,12 @@ static int sd_read_ext_regs(struct mmc_c
+@@ -1271,6 +1262,12 @@ static int sd_read_ext_regs(struct mmc_c
  	if (!gen_info_buf)
  		return -ENOMEM;
  
@@ -102,7 +102,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/*
  	 * Read 512 bytes of general info, which is found at function number 0,
  	 * at page 0 and with no offset.
-@@ -1321,9 +1318,7 @@ static int sd_flush_cache(struct mmc_hos
+@@ -1337,9 +1334,7 @@ static int sd_flush_cache(struct mmc_hos
  	if (!sd_cache_enabled(host))
  		return 0;
  
@@ -113,7 +113,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  	/*
  	 * Set Flush Cache at bit 0 in the performance enhancement register at
-@@ -1359,21 +1354,15 @@ static int sd_flush_cache(struct mmc_hos
+@@ -1375,21 +1370,15 @@ static int sd_flush_cache(struct mmc_hos
  	if (reg_buf[0] & BIT(0))
  		err = -ETIMEDOUT;
  out:
@@ -135,7 +135,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	/*
  	 * Set Cache Enable at bit 0 in the performance enhancement register at
  	 * 260 bytes offset.
-@@ -1392,7 +1381,6 @@ static int sd_enable_cache(struct mmc_ca
+@@ -1408,7 +1397,6 @@ static int sd_enable_cache(struct mmc_ca
  		card->ext_perf.feature_enabled |= SD_EXT_PERF_CACHE;
  
  out:
@@ -145,7 +145,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
 --- a/include/linux/mmc/card.h
 +++ b/include/linux/mmc/card.h
-@@ -320,6 +320,7 @@ struct mmc_card {
+@@ -321,6 +321,7 @@ struct mmc_card {
  	struct sd_switch_caps	sw_caps;	/* switch (CMD6) caps */
  	struct sd_ext_reg	ext_power;	/* SD extension reg for PM */
  	struct sd_ext_reg	ext_perf;	/* SD extension reg for PERF */
diff --git a/target/linux/bcm27xx/patches-6.12/950-0432-drivers-mmc-export-SD-extension-register-read-write-.patch b/target/linux/bcm27xx/patches-6.12/950-0432-drivers-mmc-export-SD-extension-register-read-write-.patch
index 0f0a18e47f..b513205512 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0432-drivers-mmc-export-SD-extension-register-read-write-.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0432-drivers-mmc-export-SD-extension-register-read-write-.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1011,83 +1011,6 @@ static bool mmc_sd_card_using_v18(struct
+@@ -1027,83 +1027,6 @@ static bool mmc_sd_card_using_v18(struct
  	       (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
  }
  
@@ -100,7 +100,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
  				  u16 offset)
  {
-@@ -1097,7 +1020,7 @@ static int sd_parse_ext_reg_power(struct
+@@ -1113,7 +1036,7 @@ static int sd_parse_ext_reg_power(struct
  	reg_buf = card->ext_reg_buf;
  
  	/* Read the extension register for power management function. */
@@ -109,7 +109,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (err) {
  		pr_warn("%s: error %d reading PM func of ext reg\n",
  			mmc_hostname(card->host), err);
-@@ -1135,7 +1058,7 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1151,7 +1074,7 @@ static int sd_parse_ext_reg_perf(struct
  
  	reg_buf = card->ext_reg_buf;
  
@@ -118,7 +118,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (err) {
  		pr_warn("%s: error %d reading PERF func of ext reg\n",
  			mmc_hostname(card->host), err);
-@@ -1230,7 +1153,7 @@ static int sd_parse_ext_reg(struct mmc_c
+@@ -1246,7 +1169,7 @@ static int sd_parse_ext_reg(struct mmc_c
  	return 0;
  }
  
@@ -127,7 +127,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  {
  	int err, i;
  	u8 num_ext, *gen_info_buf;
-@@ -1256,7 +1179,7 @@ static int sd_read_ext_regs(struct mmc_c
+@@ -1272,7 +1195,7 @@ static int sd_read_ext_regs(struct mmc_c
  	 * Read 512 bytes of general info, which is found at function number 0,
  	 * at page 0 and with no offset.
  	 */
@@ -136,7 +136,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (err) {
  		pr_err("%s: error %d reading general info of SD ext reg\n",
  			mmc_hostname(card->host), err);
-@@ -1328,7 +1251,7 @@ static int sd_flush_cache(struct mmc_hos
+@@ -1344,7 +1267,7 @@ static int sd_flush_cache(struct mmc_hos
  	page = card->ext_perf.page;
  	offset = card->ext_perf.offset + 261;
  
@@ -145,7 +145,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (err) {
  		pr_warn("%s: error %d writing Cache Flush bit\n",
  			mmc_hostname(host), err);
-@@ -1344,7 +1267,7 @@ static int sd_flush_cache(struct mmc_hos
+@@ -1360,7 +1283,7 @@ static int sd_flush_cache(struct mmc_hos
  	 * Read the Flush Cache bit. The card shall reset it, to confirm that
  	 * it's has completed the flushing of the cache.
  	 */
@@ -154,7 +154,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (err) {
  		pr_warn("%s: error %d reading Cache Flush bit\n",
  			mmc_hostname(host), err);
-@@ -1367,7 +1290,7 @@ static int sd_enable_cache(struct mmc_ca
+@@ -1383,7 +1306,7 @@ static int sd_enable_cache(struct mmc_ca
  	 * Set Cache Enable at bit 0 in the performance enhancement register at
  	 * 260 bytes offset.
  	 */
@@ -163,7 +163,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			       card->ext_perf.offset + 260, BIT(0));
  	if (err) {
  		pr_warn("%s: error %d writing Cache Enable bit\n",
-@@ -1540,7 +1463,7 @@ retry:
+@@ -1556,7 +1479,7 @@ retry:
  cont:
  	if (!oldcard) {
  		/* Read/parse the extension registers. */
@@ -172,7 +172,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  		if (err)
  			goto free_card;
  	}
-@@ -1667,7 +1590,7 @@ static int sd_busy_poweroff_notify_cb(vo
+@@ -1683,7 +1606,7 @@ static int sd_busy_poweroff_notify_cb(vo
  	 * one byte offset and is one byte long. The Power Off Notification
  	 * Ready is bit 0.
  	 */
@@ -181,7 +181,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  			      card->ext_power.offset + 1, 1, data->reg_buf);
  	if (err) {
  		pr_warn("%s: error %d reading status reg of PM func\n",
-@@ -1693,7 +1616,7 @@ static int sd_poweroff_notify(struct mmc
+@@ -1709,7 +1632,7 @@ static int sd_poweroff_notify(struct mmc
  	 * Set the Power Off Notification bit in the power management settings
  	 * register at 2 bytes offset.
  	 */
diff --git a/target/linux/bcm27xx/patches-6.12/950-0433-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch b/target/linux/bcm27xx/patches-6.12/950-0433-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch
index f9ae83fd9f..29a1d329a0 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0433-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0433-drivers-mmc-be-more-cautious-when-manipulating-Comma.patch
@@ -17,7 +17,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1084,8 +1084,12 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1100,8 +1100,12 @@ static int sd_parse_ext_reg_perf(struct
  	if ((reg_buf[4] & BIT(0)) && !mmc_card_broken_sd_cache(card))
  		card->ext_perf.feature_support |= SD_EXT_PERF_CACHE;
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0434-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch b/target/linux/bcm27xx/patches-6.12/950-0434-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch
index a4c5f419d4..eafdd01140 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0434-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0434-drivers-mmc-add-debugfs-entries-for-SD-extension-reg.patch
@@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  				pr_info("%s: Host Software Queue enabled\n",
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -710,7 +710,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->ci
+@@ -726,7 +726,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->ci
  MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
  MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
  MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
@@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
  static ssize_t mmc_dsr_show(struct device *dev, struct device_attribute *attr,
  			    char *buf)
-@@ -772,6 +773,8 @@ static struct attribute *sd_std_attrs[]
+@@ -788,6 +789,8 @@ static struct attribute *sd_std_attrs[]
  	&dev_attr_ocr.attr,
  	&dev_attr_rca.attr,
  	&dev_attr_dsr.attr,
@@ -45,7 +45,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	NULL,
  };
  
-@@ -1507,8 +1510,8 @@ cont:
+@@ -1523,8 +1526,8 @@ cont:
  			host->cqe_enabled = true;
  
  			if (card->ext_csd.cmdq_en) {
diff --git a/target/linux/bcm27xx/patches-6.12/950-0435-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch b/target/linux/bcm27xx/patches-6.12/950-0435-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch
index 180dc5b08c..0755d4e590 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0435-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0435-drivers-mmc-handle-1024-byte-SD-General-Info-lengths.patch
@@ -13,7 +13,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1172,7 +1172,7 @@ static int mmc_sd_read_ext_regs(struct m
+@@ -1188,7 +1188,7 @@ static int mmc_sd_read_ext_regs(struct m
  	if (!(card->scr.cmds & SD_SCR_CMD48_SUPPORT))
  		return 0;
  
@@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	if (!gen_info_buf)
  		return -ENOMEM;
  
-@@ -1203,14 +1203,23 @@ static int mmc_sd_read_ext_regs(struct m
+@@ -1219,14 +1219,23 @@ static int mmc_sd_read_ext_regs(struct m
  	num_ext = gen_info_buf[4];
  
  	/*
diff --git a/target/linux/bcm27xx/patches-6.12/950-0440-mmc-restrict-posted-write-counts-for-SD-cards-in-CQ-.patch b/target/linux/bcm27xx/patches-6.12/950-0440-mmc-restrict-posted-write-counts-for-SD-cards-in-CQ-.patch
index 881921cd07..b67764f162 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0440-mmc-restrict-posted-write-counts-for-SD-cards-in-CQ-.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0440-mmc-restrict-posted-write-counts-for-SD-cards-in-CQ-.patch
@@ -145,7 +145,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	bool			busy;
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1099,6 +1099,15 @@ static int sd_parse_ext_reg_perf(struct
+@@ -1115,6 +1115,15 @@ static int sd_parse_ext_reg_perf(struct
  		pr_debug("%s: Command Queue supported depth %u\n",
  			 mmc_hostname(card->host),
  			 card->ext_csd.cmdq_depth);
@@ -161,7 +161,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  	}
  
  	card->ext_perf.fno = fno;
-@@ -1362,6 +1371,7 @@ retry:
+@@ -1378,6 +1387,7 @@ retry:
  
  		card->ocr = ocr;
  		card->type = MMC_TYPE_SD;
@@ -171,7 +171,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  
 --- a/include/linux/mmc/card.h
 +++ b/include/linux/mmc/card.h
-@@ -343,6 +343,8 @@ struct mmc_card {
+@@ -344,6 +344,8 @@ struct mmc_card {
  	unsigned int    nr_parts;
  
  	struct workqueue_struct *complete_wq;	/* Private workqueue */
diff --git a/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch b/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch
index 5dbd79f5c0..bcfc4d7dc8 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0442-drivers-mmc-disable-write-caching-on-Samsung-2023-mo.patch
@@ -26,13 +26,13 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  #define CID_MANFID_SAMSUNG      0x15
 +#define CID_MANFID_SAMSUNG_SD	0x1b
  #define CID_MANFID_APACER       0x27
+ #define CID_MANFID_SWISSBIT     0x5D
  #define CID_MANFID_KINGSTON     0x70
- #define CID_MANFID_HYNIX	0x90
 --- a/drivers/mmc/core/quirks.h
 +++ b/drivers/mmc/core/quirks.h
-@@ -34,6 +34,14 @@ static const struct mmc_fixup __maybe_un
- 		   MMC_QUIRK_BROKEN_SD_CACHE | MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY,
- 		   EXT_CSD_REV_ANY),
+@@ -44,6 +44,14 @@ static const struct mmc_fixup __maybe_un
+ 		   0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
+ 		   MMC_QUIRK_NO_UHS_DDR50_TUNING, EXT_CSD_REV_ANY),
  
 +	/*
 +	 * Samsung Pro Plus/EVO Plus/Pro Ultimate SD cards (2023) claim to cache
diff --git a/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch b/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch
index 2c21469203..d345868bf1 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0443-mmc-quirks-disable-cache-on-more-known-bad-Sandisk-c.patch
@@ -14,7 +14,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/quirks.h
 +++ b/drivers/mmc/core/quirks.h
-@@ -42,6 +42,18 @@ static const struct mmc_fixup __maybe_un
+@@ -52,6 +52,18 @@ static const struct mmc_fixup __maybe_un
  		   0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
  		   MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch b/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch
index a2688e8ff9..2939ea0636 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0445-mmc-quirks-add-MMC_QUIRK_BROKEN_ERASE-for-Phison-Int.patch
@@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/quirks.h
 +++ b/drivers/mmc/core/quirks.h
-@@ -171,6 +171,15 @@ static const struct mmc_fixup __maybe_un
+@@ -181,6 +181,15 @@ static const struct mmc_fixup __maybe_un
  	MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
  	MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch b/target/linux/bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch
index 2c21e7ca4e..d32cde6548 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch
@@ -22,8 +22,8 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/card.h
 +++ b/drivers/mmc/core/card.h
-@@ -295,4 +295,9 @@ static inline int mmc_card_broken_sd_pow
- 	return c->quirks & MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY;
+@@ -301,4 +301,9 @@ static inline int mmc_card_no_uhs_ddr50_
+ 	return c->quirks & MMC_QUIRK_NO_UHS_DDR50_TUNING;
  }
  
 +static inline int mmc_card_working_sd_cq(const struct mmc_card *c)
@@ -34,7 +34,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  #endif
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1501,6 +1501,10 @@ cont:
+@@ -1517,6 +1517,10 @@ cont:
  			goto free_card;
  	}
  
@@ -47,10 +47,10 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  		/*
 --- a/include/linux/mmc/card.h
 +++ b/include/linux/mmc/card.h
-@@ -295,6 +295,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_SD_CACHE	(1<<15)	/* Disable broken SD cache support */
+@@ -296,6 +296,7 @@ struct mmc_card {
  #define MMC_QUIRK_BROKEN_CACHE_FLUSH	(1<<16)	/* Don't flush cache until the write has occurred */
  #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY	(1<<17) /* Disable broken SD poweroff notify support */
+ #define MMC_QUIRK_NO_UHS_DDR50_TUNING	(1<<18) /* Disable DDR50 tuning */
 +#define MMC_QUIRK_WORKING_SD_CQ	(1<<30)		/* SD card has known-good CQ implementation */
  #define MMC_QUIRK_ERASE_BROKEN	(1<<31)		/* Skip erase */
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch b/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch
index 54ad128ea1..3514ff82d8 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0751-mmc-set-MMC_QUIRK_KNOWN_WORKING_SD_CQ-on-Raspberry-P.patch
@@ -16,7 +16,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/mmc/core/card.h
 +++ b/drivers/mmc/core/card.h
-@@ -93,6 +93,7 @@ struct mmc_fixup {
+@@ -94,6 +94,7 @@ struct mmc_fixup {
  #define CID_MANFID_KINGSTON     0x70
  #define CID_MANFID_HYNIX	0x90
  #define CID_MANFID_KINGSTON_SD	0x9F
@@ -26,7 +26,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  #define END_FIXUP { NULL }
 --- a/drivers/mmc/core/quirks.h
 +++ b/drivers/mmc/core/quirks.h
-@@ -66,6 +66,12 @@ static const struct mmc_fixup __maybe_un
+@@ -76,6 +76,12 @@ static const struct mmc_fixup __maybe_un
  		   0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
  		   MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0752-mmc-use-downstream-DT-property-to-modify-CQE-and-or-.patch b/target/linux/bcm27xx/patches-6.12/950-0752-mmc-use-downstream-DT-property-to-modify-CQE-and-or-.patch
index d6ab612840..0cf3c9934e 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0752-mmc-use-downstream-DT-property-to-modify-CQE-and-or-.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0752-mmc-use-downstream-DT-property-to-modify-CQE-and-or-.patch
@@ -49,7 +49,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
  		if (host->caps & MMC_CAP_NONREMOVABLE)
 --- a/drivers/mmc/core/sd.c
 +++ b/drivers/mmc/core/sd.c
-@@ -1501,8 +1501,8 @@ cont:
+@@ -1517,8 +1517,8 @@ cont:
  			goto free_card;
  	}
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch b/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch
index 677018625f..8ecf113d8e 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0777-drm-v3d-Remove-v3d-cpu_job.patch
@@ -35,7 +35,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20250113154741.67520-2-mcana
  
 --- a/drivers/gpu/drm/v3d/v3d_sched.c
 +++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -673,8 +673,6 @@ v3d_cpu_job_run(struct drm_sched_job *sc
+@@ -677,8 +677,6 @@ v3d_cpu_job_run(struct drm_sched_job *sc
  	struct v3d_cpu_job *job = to_cpu_job(sched_job);
  	struct v3d_dev *v3d = job->base.v3d;
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch b/target/linux/bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch
index a6254fe927..069cb5628e 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0859-drm-v3d-Set-job-pointer-to-NULL-when-the-job-s-fence.patch
@@ -33,7 +33,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
 
 --- a/drivers/gpu/drm/v3d/v3d_sched.c
 +++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -226,8 +226,12 @@ static struct dma_fence *v3d_bin_job_run
+@@ -230,8 +230,12 @@ static struct dma_fence *v3d_bin_job_run
  	struct dma_fence *fence;
  	unsigned long irqflags;
  
@@ -47,7 +47,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
  
  	/* Lock required around bin_job update vs
  	 * v3d_overflow_mem_work().
-@@ -281,8 +285,10 @@ static struct dma_fence *v3d_render_job_
+@@ -285,8 +289,10 @@ static struct dma_fence *v3d_render_job_
  	struct drm_device *dev = &v3d->drm;
  	struct dma_fence *fence;
  
@@ -59,7 +59,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
  
  	v3d->render_job = job;
  
-@@ -327,8 +333,10 @@ v3d_tfu_job_run(struct drm_sched_job *sc
+@@ -331,8 +337,10 @@ v3d_tfu_job_run(struct drm_sched_job *sc
  	struct drm_device *dev = &v3d->drm;
  	struct dma_fence *fence;
  
@@ -71,7 +71,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
  
  	v3d->tfu_job = job;
  
-@@ -373,8 +381,10 @@ v3d_csd_job_run(struct drm_sched_job *sc
+@@ -377,8 +385,10 @@ v3d_csd_job_run(struct drm_sched_job *sc
  	struct dma_fence *fence;
  	int i, csd_cfg0_reg;
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch b/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch
index d4ddf5a608..4ab4ac72ab 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0860-drm-v3d-Associate-a-V3D-tech-revision-to-all-support.patch
@@ -444,7 +444,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
  	}
 --- a/drivers/gpu/drm/v3d/v3d_sched.c
 +++ b/drivers/gpu/drm/v3d/v3d_sched.c
-@@ -357,11 +357,11 @@ v3d_tfu_job_run(struct drm_sched_job *sc
+@@ -361,11 +361,11 @@ v3d_tfu_job_run(struct drm_sched_job *sc
  	V3D_WRITE(V3D_TFU_ICA(v3d->ver), job->args.ica);
  	V3D_WRITE(V3D_TFU_IUA(v3d->ver), job->args.iua);
  	V3D_WRITE(V3D_TFU_IOA(v3d->ver), job->args.ioa);
@@ -458,7 +458,7 @@ Signed-off-by: Maíra Canal <mcanal at igalia.com>
  		V3D_WRITE(V3D_TFU_COEF1(v3d->ver), job->args.coef[1]);
  		V3D_WRITE(V3D_TFU_COEF2(v3d->ver), job->args.coef[2]);
  		V3D_WRITE(V3D_TFU_COEF3(v3d->ver), job->args.coef[3]);
-@@ -412,7 +412,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
+@@ -416,7 +416,7 @@ v3d_csd_job_run(struct drm_sched_job *sc
  	 *
  	 * XXX: Set the CFG7 register
  	 */
diff --git a/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch b/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch
index 2388aeb69e..e0c0cc105f 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0949-PCI-quirks-work-around-VL805-firmware-ASPM-meddling.patch
@@ -18,7 +18,7 @@ Signed-off-by: Jonathan Bell <jonathan at raspberrypi.com>
 
 --- a/drivers/pci/quirks.c
 +++ b/drivers/pci/quirks.c
-@@ -6232,6 +6232,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -6255,6 +6255,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency);
diff --git a/target/linux/bcm27xx/patches-6.12/950-0959-media-imx335-Support-vertical-flip.patch b/target/linux/bcm27xx/patches-6.12/950-0959-media-imx335-Support-vertical-flip.patch
index 8d5815ecd5..e1f0b61f72 100644
--- a/target/linux/bcm27xx/patches-6.12/950-0959-media-imx335-Support-vertical-flip.patch
+++ b/target/linux/bcm27xx/patches-6.12/950-0959-media-imx335-Support-vertical-flip.patch
@@ -153,7 +153,7 @@ Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
  	case V4L2_CID_TEST_PATTERN:
  		ret = imx335_update_test_pattern(imx335, ctrl->val);
  
-@@ -1175,7 +1235,7 @@ static int imx335_init_controls(struct i
+@@ -1176,7 +1236,7 @@ static int imx335_init_controls(struct i
  		return ret;
  
  	/* v4l2_fwnode_device_properties can add two more controls */
@@ -162,7 +162,7 @@ Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
  	if (ret)
  		return ret;
  
-@@ -1210,6 +1270,13 @@ static int imx335_init_controls(struct i
+@@ -1211,6 +1271,13 @@ static int imx335_init_controls(struct i
  
  	v4l2_ctrl_cluster(2, &imx335->exp_ctrl);
  
diff --git a/target/linux/bcm27xx/patches-6.12/950-0961-media-imx335-Use-correct-register-width-for-HNUM.patch b/target/linux/bcm27xx/patches-6.12/950-0961-media-imx335-Use-correct-register-width-for-HNUM.patch
deleted file mode 100644
index 6c432e524c..0000000000
--- a/target/linux/bcm27xx/patches-6.12/950-0961-media-imx335-Use-correct-register-width-for-HNUM.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From a8e38e0532fd0b25fcaebf771ddd14f4e04283fa Mon Sep 17 00:00:00 2001
-From: Umang Jain <umang.jain at ideasonboard.com>
-Date: Thu, 8 Aug 2024 22:11:04 +0530
-Subject: [PATCH] media: imx335: Use correct register width for HNUM
-
-CCI_REG_HNUM should be using CCI_REG16_LE() instead of CCI_REG8()
-as HNUM spans from 0x302e[0:7] to 0x302f[0:3].
-
-Signed-off-by: Umang Jain <umang.jain at ideasonboard.com>
----
- drivers/media/i2c/imx335.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/media/i2c/imx335.c
-+++ b/drivers/media/i2c/imx335.c
-@@ -31,7 +31,7 @@
- #define IMX335_REG_CPWAIT_TIME		CCI_REG8(0x300d)
- #define IMX335_REG_WINMODE		CCI_REG8(0x3018)
- #define IMX335_REG_HTRIMMING_START	CCI_REG16_LE(0x302c)
--#define IMX335_REG_HNUM			CCI_REG8(0x302e)
-+#define IMX335_REG_HNUM			CCI_REG16_LE(0x302e)
- 
- /* Lines per frame */
- #define IMX335_REG_VMAX			CCI_REG24_LE(0x3030)
diff --git a/target/linux/bcm27xx/patches-6.12/950-1003-drivers-media-i2c-imx335-Fix-frame-size-enumeration.patch b/target/linux/bcm27xx/patches-6.12/950-1003-drivers-media-i2c-imx335-Fix-frame-size-enumeration.patch
deleted file mode 100644
index 89701b06c8..0000000000
--- a/target/linux/bcm27xx/patches-6.12/950-1003-drivers-media-i2c-imx335-Fix-frame-size-enumeration.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 3dd2c2c507c271d411fab2e82a2b3b7e0b6d3f16 Mon Sep 17 00:00:00 2001
-From: Kieran Bingham <kieran.bingham at ideasonboard.com>
-Date: Mon, 28 Apr 2025 17:07:20 +0100
-Subject: [PATCH] drivers: media: i2c: imx335: Fix frame size enumeration
-
-In commit cfa49ff0558a ("media: i2c: imx335: Support 2592x1940 10-bit
-mode") the IMX335 driver was extended to support multiple output modes.
-
-This incorrectly extended the frame size enumeration to check against
-the supported mbus_codes array instead of the supported mode/frame
-array. This has the unwanted side effect of reporting the currently
-supported frame size 2592x1944 three times.
-
-Fix the check accordingly to report a frame size for each supported
-size, which is presently only a single entry.
-
-Fixes: cfa49ff0558a ("media: i2c: imx335: Support 2592x1940 10-bit mode")
-Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
----
- drivers/media/i2c/imx335.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/media/i2c/imx335.c
-+++ b/drivers/media/i2c/imx335.c
-@@ -720,7 +720,8 @@ static int imx335_enum_frame_size(struct
- 	struct imx335 *imx335 = to_imx335(sd);
- 	u32 code;
- 
--	if (fsize->index > ARRAY_SIZE(imx335_mbus_codes))
-+	/* Only a single supported_mode available. */
-+	if (fsize->index > 0)
- 		return -EINVAL;
- 
- 	code = imx335_get_format_code(imx335, fsize->code);
diff --git a/target/linux/gemini/patches-6.12/0001-net-ethernet-cortina-Use-TOE-TSO-on-all-TCP.patch b/target/linux/gemini/patches-6.12/0001-net-ethernet-cortina-Use-TOE-TSO-on-all-TCP.patch
deleted file mode 100644
index b7cf748ffe..0000000000
--- a/target/linux/gemini/patches-6.12/0001-net-ethernet-cortina-Use-TOE-TSO-on-all-TCP.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 4d5c3828a8dd0062eeeb56b7d857a76130c3683c Mon Sep 17 00:00:00 2001
-From: Linus Walleij <linus.walleij at linaro.org>
-Date: Tue, 8 Apr 2025 11:26:58 +0200
-Subject: [PATCH 1/2] net: ethernet: cortina: Use TOE/TSO on all TCP
-
-It is desireable to push the hardware accelerator to also
-process non-segmented TCP frames: we pass the skb->len
-to the "TOE/TSO" offloader and it will handle them.
-
-Without this quirk the driver becomes unstable and lock
-up and and crash.
-
-I do not know exactly why, but it is probably due to the
-TOE (TCP offload engine) feature that is coupled with the
-segmentation feature - it is not possible to turn one
-part off and not the other, either both TOE and TSO are
-active, or neither of them.
-
-Not having the TOE part active seems detrimental, as if
-that hardware feature is not really supposed to be turned
-off.
-
-The datasheet says:
-
-  "Based on packet parsing and TCP connection/NAT table
-   lookup results, the NetEngine puts the packets
-   belonging to the same TCP connection to the same queue
-   for the software to process. The NetEngine puts
-   incoming packets to the buffer or series of buffers
-   for a jumbo packet. With this hardware acceleration,
-   IP/TCP header parsing, checksum validation and
-   connection lookup are offloaded from the software
-   processing."
-
-After numerous tests with the hardware locking up after
-something between minutes and hours depending on load
-using iperf3 I have concluded this is necessary to stabilize
-the hardware.
-
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
-Link: https://patch.msgid.link/20250408-gemini-ethernet-tso-always-v1-1-e669f932359c@linaro.org
-Signed-off-by: Jakub Kicinski <kuba at kernel.org>
----
- drivers/net/ethernet/cortina/gemini.c | 37 +++++++++++++++++++++------
- 1 file changed, 29 insertions(+), 8 deletions(-)
-
---- a/drivers/net/ethernet/cortina/gemini.c
-+++ b/drivers/net/ethernet/cortina/gemini.c
-@@ -1143,6 +1143,7 @@ static int gmac_map_tx_bufs(struct net_d
- 	struct gmac_txdesc *txd;
- 	skb_frag_t *skb_frag;
- 	dma_addr_t mapping;
-+	bool tcp = false;
- 	void *buffer;
- 	u16 mss;
- 	int ret;
-@@ -1150,6 +1151,13 @@ static int gmac_map_tx_bufs(struct net_d
- 	word1 = skb->len;
- 	word3 = SOF_BIT;
- 
-+	/* Determine if we are doing TCP */
-+	if (skb->protocol == htons(ETH_P_IP))
-+		tcp = (ip_hdr(skb)->protocol == IPPROTO_TCP);
-+	else
-+		/* IPv6 */
-+		tcp = (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP);
-+
- 	mss = skb_shinfo(skb)->gso_size;
- 	if (mss) {
- 		/* This means we are dealing with TCP and skb->len is the
-@@ -1162,8 +1170,26 @@ static int gmac_map_tx_bufs(struct net_d
- 			   mss, skb->len);
- 		word1 |= TSS_MTU_ENABLE_BIT;
- 		word3 |= mss;
-+	} else if (tcp) {
-+		/* Even if we are not using TSO, use the hardware offloader
-+		 * for transferring the TCP frame: this hardware has partial
-+		 * TCP awareness (called TOE - TCP Offload Engine) and will
-+		 * according to the datasheet put packets belonging to the
-+		 * same TCP connection in the same queue for the TOE/TSO
-+		 * engine to process. The engine will deal with chopping
-+		 * up frames that exceed ETH_DATA_LEN which the
-+		 * checksumming engine cannot handle (see below) into
-+		 * manageable chunks. It flawlessly deals with quite big
-+		 * frames and frames containing custom DSA EtherTypes.
-+		 */
-+		mss = netdev->mtu + skb_tcp_all_headers(skb);
-+		mss = min(mss, skb->len);
-+		netdev_dbg(netdev, "TOE/TSO len %04x mtu %04x mss %04x\n",
-+			   skb->len, netdev->mtu, mss);
-+		word1 |= TSS_MTU_ENABLE_BIT;
-+		word3 |= mss;
- 	} else if (skb->len >= ETH_FRAME_LEN) {
--		/* Hardware offloaded checksumming isn't working on frames
-+		/* Hardware offloaded checksumming isn't working on non-TCP frames
- 		 * bigger than 1514 bytes. A hypothesis about this is that the
- 		 * checksum buffer is only 1518 bytes, so when the frames get
- 		 * bigger they get truncated, or the last few bytes get
-@@ -1180,21 +1206,16 @@ static int gmac_map_tx_bufs(struct net_d
- 	}
- 
- 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
--		int tcp = 0;
--
- 		/* We do not switch off the checksumming on non TCP/UDP
- 		 * frames: as is shown from tests, the checksumming engine
- 		 * is smart enough to see that a frame is not actually TCP
- 		 * or UDP and then just pass it through without any changes
- 		 * to the frame.
- 		 */
--		if (skb->protocol == htons(ETH_P_IP)) {
-+		if (skb->protocol == htons(ETH_P_IP))
- 			word1 |= TSS_IP_CHKSUM_BIT;
--			tcp = ip_hdr(skb)->protocol == IPPROTO_TCP;
--		} else { /* IPv6 */
-+		else
- 			word1 |= TSS_IPV6_ENABLE_BIT;
--			tcp = ipv6_hdr(skb)->nexthdr == IPPROTO_TCP;
--		}
- 
- 		word1 |= tcp ? TSS_TCP_CHKSUM_BIT : TSS_UDP_CHKSUM_BIT;
- 	}
diff --git a/target/linux/generic/backport-6.12/300-v6.16-mips-Add-std-flag-specified.patch b/target/linux/generic/backport-6.12/300-v6.16-mips-Add-std-flag-specified.patch
deleted file mode 100644
index a0d2273837..0000000000
--- a/target/linux/generic/backport-6.12/300-v6.16-mips-Add-std-flag-specified.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 0f4ae7c6ecb89bfda026d210dcf8216fb67d2333 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem at gmail.com>
-Date: Sat, 29 Mar 2025 08:39:03 -0700
-Subject: mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS
-
-GCC 15 changed the default C standard dialect from gnu17 to gnu23,
-which should not have impacted the kernel because it explicitly requests
-the gnu11 standard in the main Makefile. However, mips/vdso code uses
-its own CFLAGS without a '-std=' value, which break with this dialect
-change because of the kernel's own definitions of bool, false, and true
-conflicting with the C23 reserved keywords.
-
-  include/linux/stddef.h:11:9: error: cannot use keyword 'false' as enumeration constant
-     11 |         false   = 0,
-        |         ^~~~~
-  include/linux/stddef.h:11:9: note: 'false' is a keyword with '-std=c23' onwards
-  include/linux/types.h:35:33: error: 'bool' cannot be defined via 'typedef'
-     35 | typedef _Bool                   bool;
-        |                                 ^~~~
-  include/linux/types.h:35:33: note: 'bool' is a keyword with '-std=c23' onwards
-
-Add -std as specified in KBUILD_CFLAGS to the decompressor and purgatory
-CFLAGS to eliminate these errors and make the C standard version of these
-areas match the rest of the kernel.
-
-Signed-off-by: Khem Raj <raj.khem at gmail.com>
-Cc: stable at vger.kernel.org
-Signed-off-by: Thomas Bogendoerfer <tsbogend at alpha.franken.de>
----
- arch/mips/vdso/Makefile | 1 +
- 1 file changed, 1 insertion(+)
-
-(limited to 'arch/mips/vdso')
-
---- a/arch/mips/vdso/Makefile
-+++ b/arch/mips/vdso/Makefile
-@@ -27,6 +27,7 @@ endif
- # offsets.
- cflags-vdso := $(ccflags-vdso) \
- 	$(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \
-+	$(filter -std=%,$(KBUILD_CFLAGS)) \
- 	-O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \
- 	-mrelax-pic-calls $(call cc-option, -mexplicit-relocs) \
- 	-fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
diff --git a/target/linux/generic/backport-6.12/410-01-v6.14-mtd-rawnand-qcom-cleanup-qcom_nandc-driver.patch b/target/linux/generic/backport-6.12/410-01-v6.14-mtd-rawnand-qcom-cleanup-qcom_nandc-driver.patch
index 8c5457a507..95b66071ad 100644
--- a/target/linux/generic/backport-6.12/410-01-v6.14-mtd-rawnand-qcom-cleanup-qcom_nandc-driver.patch
+++ b/target/linux/generic/backport-6.12/410-01-v6.14-mtd-rawnand-qcom-cleanup-qcom_nandc-driver.patch
@@ -902,7 +902,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
 +		write_reg_dma(nandc, &nandc->regs->cmd1, NAND_DEV_CMD1, 1, NAND_BAM_NEXT_SGL);
  	}
  
- 	nandc->buf_count = len;
+ 	nandc->buf_count = 512;
 @@ -2926,9 +2877,10 @@ static int qcom_param_page_type_exec(str
  		      nandc->buf_count, 0);
  
diff --git a/target/linux/generic/backport-6.12/410-02-v6.14-mtd-rawnand-qcom-Add-qcom-prefix-to-common-api.patch b/target/linux/generic/backport-6.12/410-02-v6.14-mtd-rawnand-qcom-Add-qcom-prefix-to-common-api.patch
index 078a56cf16..f634e0442a 100644
--- a/target/linux/generic/backport-6.12/410-02-v6.14-mtd-rawnand-qcom-Add-qcom-prefix-to-common-api.patch
+++ b/target/linux/generic/backport-6.12/410-02-v6.14-mtd-rawnand-qcom-Add-qcom-prefix-to-common-api.patch
@@ -844,7 +844,7 @@ Signed-off-by: Miquel Raynal <miquel.raynal at bootlin.com>
 +		qcom_write_reg_dma(nandc, &nandc->regs->cmd1, NAND_DEV_CMD1, 1, NAND_BAM_NEXT_SGL);
  	}
  
- 	nandc->buf_count = len;
+ 	nandc->buf_count = 512;
 @@ -2873,17 +2873,17 @@ static int qcom_param_page_type_exec(str
  
  	config_nand_single_cw_page_read(chip, false, 0);
diff --git a/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch b/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch
index 697f2a64db..5db35ac9a5 100644
--- a/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch
+++ b/target/linux/generic/hack-6.12/610-net-page_pool-try-to-free-deferred-skbs-while-waitin.patch
@@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/core/page_pool.c
 +++ b/net/core/page_pool.c
-@@ -1120,7 +1120,7 @@ static void page_pool_release_retry(stru
+@@ -1124,7 +1124,7 @@ static void page_pool_release_retry(stru
  	struct delayed_work *dwq = to_delayed_work(wq);
  	struct page_pool *pool = container_of(dwq, typeof(*pool), release_dw);
  	void *netdev;
@@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	inflight = page_pool_release(pool);
  	/* In rare cases, a driver bug may cause inflight to go negative.
-@@ -1132,6 +1132,17 @@ static void page_pool_release_retry(stru
+@@ -1136,6 +1136,17 @@ static void page_pool_release_retry(stru
  	if (inflight <= 0)
  		return;
  
diff --git a/target/linux/generic/hack-6.12/800-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-6.12/800-GPIO-add-named-gpio-exports.patch
index 3bfc612c13..bf75cedafd 100644
--- a/target/linux/generic/hack-6.12/800-GPIO-add-named-gpio-exports.patch
+++ b/target/linux/generic/hack-6.12/800-GPIO-add-named-gpio-exports.patch
@@ -15,7 +15,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  
  #include "gpiolib.h"
  #include "gpiolib-of.h"
-@@ -1189,3 +1191,73 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -1198,3 +1200,73 @@ void of_gpiochip_remove(struct gpio_chip
  {
  	of_node_put(dev_of_node(&chip->gpiodev->dev));
  }
diff --git a/target/linux/generic/hack-6.12/902-debloat_proc.patch b/target/linux/generic/hack-6.12/902-debloat_proc.patch
index a135684460..2bc77873fd 100644
--- a/target/linux/generic/hack-6.12/902-debloat_proc.patch
+++ b/target/linux/generic/hack-6.12/902-debloat_proc.patch
@@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -378,6 +378,9 @@ static struct pernet_operations ip_rt_pr
+@@ -382,6 +382,9 @@ static struct pernet_operations ip_rt_pr
  
  static int __init ip_rt_proc_init(void)
  {
diff --git a/target/linux/generic/kernel-6.12 b/target/linux/generic/kernel-6.12
index dbe7bc8574..91260b8a1c 100644
--- a/target/linux/generic/kernel-6.12
+++ b/target/linux/generic/kernel-6.12
@@ -1,2 +1,2 @@
-LINUX_VERSION-6.12 = .34
-LINUX_KERNEL_HASH-6.12.34 = a7f3fe381f67eca4172e9b63efb61a14bd7f9e1278e03603d0ff5a93f270c24d
+LINUX_VERSION-6.12 = .35
+LINUX_KERNEL_HASH-6.12.35 = 05f4e0b01dde578c3328eb539d305cccec7b84e939f6dd5f21fdaf5f313da748
diff --git a/target/linux/generic/pending-6.12/532-jffs2_eofdetect.patch b/target/linux/generic/pending-6.12/532-jffs2_eofdetect.patch
index 744fbd0e21..88bb14a02a 100644
--- a/target/linux/generic/pending-6.12/532-jffs2_eofdetect.patch
+++ b/target/linux/generic/pending-6.12/532-jffs2_eofdetect.patch
@@ -45,7 +45,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  		if (ret < 0)
  			goto out;
-@@ -567,6 +573,17 @@ full_scan:
+@@ -569,6 +575,17 @@ full_scan:
  			return err;
  	}
  
diff --git a/target/linux/mvebu/patches-6.12/0003-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch b/target/linux/mvebu/patches-6.12/0003-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
index 2483dedfae..2d7b6b5176 100644
--- a/target/linux/mvebu/patches-6.12/0003-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
+++ b/target/linux/mvebu/patches-6.12/0003-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
@@ -18,7 +18,7 @@ Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
 
 --- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
 +++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-@@ -432,9 +432,7 @@ static int armada_37xx_gpio_direction_ou
+@@ -433,9 +433,7 @@ static int armada_37xx_gpio_direction_ou
  	reg = OUTPUT_EN;
  	armada_37xx_update_reg(&reg, &en_offset);
  
diff --git a/target/linux/mvebu/patches-6.12/0004-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch b/target/linux/mvebu/patches-6.12/0004-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
deleted file mode 100644
index 4fe9f1b7b8..0000000000
--- a/target/linux/mvebu/patches-6.12/0004-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 57273ff8bb16f3842c2597b5bbcd49e7fa12edf7 Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <j4g8y7 at gmail.com>
-Date: Wed, 14 May 2025 21:18:35 +0200
-Subject: [PATCH 4/7] pinctrl: armada-37xx: propagate error from
- armada_37xx_gpio_get()
-
-The regmap_read() function can fail, so propagate its error up to
-the stack instead of silently ignoring that.
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gabor Juhos <j4g8y7 at gmail.com>
-Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-4-07e9ac1ab737@gmail.com
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
----
- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-@@ -440,11 +440,14 @@ static int armada_37xx_gpio_get(struct g
- 	struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
- 	unsigned int reg = INPUT_VAL;
- 	unsigned int val, mask;
-+	int ret;
- 
- 	armada_37xx_update_reg(&reg, &offset);
- 	mask = BIT(offset);
- 
--	regmap_read(info->regmap, reg, &val);
-+	ret = regmap_read(info->regmap, reg, &val);
-+	if (ret)
-+		return ret;
- 
- 	return (val & mask) != 0;
- }
diff --git a/target/linux/mvebu/patches-6.12/0005-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch b/target/linux/mvebu/patches-6.12/0005-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
deleted file mode 100644
index 2395a0665f..0000000000
--- a/target/linux/mvebu/patches-6.12/0005-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From bfa0ff804ffa8b1246ade8be08de98c9eb19d16f Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <j4g8y7 at gmail.com>
-Date: Wed, 14 May 2025 21:18:36 +0200
-Subject: [PATCH 5/7] pinctrl: armada-37xx: propagate error from
- armada_37xx_pmx_gpio_set_direction()
-
-The armada_37xx_gpio_direction_{in,out}put() functions can fail, so
-propagate their error values back to the stack instead of silently
-ignoring those.
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gabor Juhos <j4g8y7 at gmail.com>
-Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-5-07e9ac1ab737@gmail.com
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
----
- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-@@ -472,16 +472,17 @@ static int armada_37xx_pmx_gpio_set_dire
- {
- 	struct armada_37xx_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
- 	struct gpio_chip *chip = range->gc;
-+	int ret;
- 
- 	dev_dbg(info->dev, "gpio_direction for pin %u as %s-%d to %s\n",
- 		offset, range->name, offset, input ? "input" : "output");
- 
- 	if (input)
--		armada_37xx_gpio_direction_input(chip, offset);
-+		ret = armada_37xx_gpio_direction_input(chip, offset);
- 	else
--		armada_37xx_gpio_direction_output(chip, offset, 0);
-+		ret = armada_37xx_gpio_direction_output(chip, offset, 0);
- 
--	return 0;
-+	return ret;
- }
- 
- static int armada_37xx_gpio_request_enable(struct pinctrl_dev *pctldev,
diff --git a/target/linux/mvebu/patches-6.12/0006-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch b/target/linux/mvebu/patches-6.12/0006-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
deleted file mode 100644
index 9aac2e58e1..0000000000
--- a/target/linux/mvebu/patches-6.12/0006-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 6481c0a83367b0672951ccc876fbae7ee37b594b Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <j4g8y7 at gmail.com>
-Date: Wed, 14 May 2025 21:18:37 +0200
-Subject: [PATCH 6/7] pinctrl: armada-37xx: propagate error from
- armada_37xx_gpio_get_direction()
-
-The regmap_read() function can fail, so propagate its error up to
-the stack instead of silently ignoring that.
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gabor Juhos <j4g8y7 at gmail.com>
-Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-6-07e9ac1ab737@gmail.com
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
----
- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-@@ -402,10 +402,13 @@ static int armada_37xx_gpio_get_directio
- 	struct armada_37xx_pinctrl *info = gpiochip_get_data(chip);
- 	unsigned int reg = OUTPUT_EN;
- 	unsigned int val, mask;
-+	int ret;
- 
- 	armada_37xx_update_reg(&reg, &offset);
- 	mask = BIT(offset);
--	regmap_read(info->regmap, reg, &val);
-+	ret = regmap_read(info->regmap, reg, &val);
-+	if (ret)
-+		return ret;
- 
- 	if (val & mask)
- 		return GPIO_LINE_DIRECTION_OUT;
diff --git a/target/linux/mvebu/patches-6.12/0007-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch b/target/linux/mvebu/patches-6.12/0007-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
deleted file mode 100644
index 6c14e50b4a..0000000000
--- a/target/linux/mvebu/patches-6.12/0007-v6.16-pinctrl-armada-37xx-propagate-error-from-armada_37xx.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4229c28323db141eda69cb99427be75d3edba071 Mon Sep 17 00:00:00 2001
-From: Gabor Juhos <j4g8y7 at gmail.com>
-Date: Wed, 14 May 2025 21:18:38 +0200
-Subject: [PATCH 7/7] pinctrl: armada-37xx: propagate error from
- armada_37xx_pmx_set_by_name()
-
-The regmap_update_bits() function can fail, so propagate its error
-up to the stack instead of silently ignoring that.
-
-Signed-off-by: Imre Kaloz <kaloz at openwrt.org>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gabor Juhos <j4g8y7 at gmail.com>
-Link: https://lore.kernel.org/20250514-pinctrl-a37xx-fixes-v2-7-07e9ac1ab737@gmail.com
-Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
----
- drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
---- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
-@@ -358,9 +358,7 @@ static int armada_37xx_pmx_set_by_name(s
- 
- 	val = grp->val[func];
- 
--	regmap_update_bits(info->regmap, reg, mask, val);
--
--	return 0;
-+	return regmap_update_bits(info->regmap, reg, mask, val);
- }
- 
- static int armada_37xx_pmx_set(struct pinctrl_dev *pctldev,
diff --git a/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch
index 75fd136829..0ab9517d88 100644
--- a/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch
+++ b/target/linux/ramips/patches-6.12/810-uvc-add-iPassion-iP2970-support.patch
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 
 --- a/drivers/media/usb/uvc/uvc_driver.c
 +++ b/drivers/media/usb/uvc/uvc_driver.c
-@@ -3174,6 +3174,18 @@ static const struct usb_device_id uvc_id
+@@ -3185,6 +3185,18 @@ static const struct usb_device_id uvc_id
  	  .bInterfaceSubClass	= 1,
  	  .bInterfaceProtocol	= 0,
  	  .driver_info		= UVC_INFO_META(V4L2_META_FMT_D4XX) },
diff --git a/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch b/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch
index 9aa09b3c95..b40a7e9e58 100644
--- a/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch
+++ b/target/linux/starfive/patches-6.12/1011-net-stmmac-use-GFP_DMA32.patch
@@ -19,7 +19,7 @@ Signed-off-by: Matteo Croce <mcroce at microsoft.com>
  
  	if (priv->dma_cap.host_dma_width <= 32)
  		gfp |= GFP_DMA32;
-@@ -4795,7 +4795,7 @@ static inline void stmmac_rx_refill(stru
+@@ -4792,7 +4792,7 @@ static inline void stmmac_rx_refill(stru
  	struct stmmac_rx_queue *rx_q = &priv->dma_conf.rx_queue[queue];
  	int dirty = stmmac_rx_dirty(priv, queue);
  	unsigned int entry = rx_q->dirty_rx;




More information about the lede-commits mailing list