-LINUX_VERSION-6.1 = .74
-LINUX_KERNEL_HASH-6.1.74 = b7fbd1d79faed2ce3570ef79dc1223e4e19c868b86326b14a435db56ebbb2022
+LINUX_VERSION-6.1 = .75
+LINUX_KERNEL_HASH-6.1.75 = 6cd19410330c13ec4c18fd28a83d3e40fc12a152815fb7c3e1b0764329093a56
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -873,6 +873,17 @@ source "drivers/leds/flash/Kconfig"
+@@ -874,6 +874,17 @@ source "drivers/leds/flash/Kconfig"
comment "RGB LED drivers"
source "drivers/leds/rgb/Kconfig"
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
-@@ -97,9 +91,24 @@ static unsigned int bcm2835_wdt_get_time
+@@ -98,9 +92,24 @@ static unsigned int bcm2835_wdt_get_time
return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET);
}
/* use a timeout of 10 ticks (~150us) */
writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG);
-@@ -117,7 +126,13 @@ static int bcm2835_restart(struct watchd
+@@ -118,7 +127,13 @@ static int bcm2835_restart(struct watchd
{
struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
return 0;
}
-@@ -152,19 +167,9 @@ static struct watchdog_device bcm2835_wd
+@@ -153,19 +168,9 @@ static struct watchdog_device bcm2835_wd
static void bcm2835_power_off(void)
{
struct bcm2835_wdt *wdt = bcm2835_power_off_wdt;
--- a/drivers/tty/serial/8250/8250_bcm2835aux.c
+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
-@@ -180,6 +180,13 @@ static int bcm2835aux_serial_probe(struc
+@@ -182,6 +182,13 @@ static int bcm2835aux_serial_probe(struc
*/
up.port.uartclk = uartclk * 2;
--- a/drivers/watchdog/bcm2835_wdt.c
+++ b/drivers/watchdog/bcm2835_wdt.c
-@@ -126,10 +126,12 @@ static int bcm2835_restart(struct watchd
+@@ -127,10 +127,12 @@ static int bcm2835_restart(struct watchd
{
struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
-From a25b0ea78e73b699e89c6d5589ba43cd0a22f97e Mon Sep 17 00:00:00 2001
+From cf40d2d8c44a659d09d5c20189aab02f20263e81 Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.com>
Date: Wed, 29 Mar 2023 09:49:36 +0100
Subject: [PATCH] fbdev: Don't cancel deferred work if pagelist empty
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
-@@ -321,7 +321,8 @@ static void fb_deferred_io_lastclose(str
+@@ -317,7 +317,8 @@ static void fb_deferred_io_lastclose(str
struct page *page;
int i;
-- cancel_delayed_work_sync(&info->deferred_work);
+- flush_delayed_work(&info->deferred_work);
+ if (!list_empty(&info->fbdefio->pagereflist))
-+ cancel_delayed_work_sync(&info->deferred_work);
++ flush_delayed_work(&info->deferred_work);
/* clear out the mapping that we setup */
for (i = 0 ; i < info->fix.smem_len; i += PAGE_SIZE) {
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
-@@ -1221,6 +1221,9 @@ static int sc16is7xx_startup(struct uart
+@@ -1222,6 +1222,9 @@ static int sc16is7xx_startup(struct uart
SC16IS7XX_IER_MSI_BIT;
sc16is7xx_port_write(port, SC16IS7XX_IER_REG, val);
},
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -1216,6 +1216,24 @@ static void dwc3_config_threshold(struct
+@@ -1179,6 +1179,24 @@ static void dwc3_config_threshold(struct
}
}
/**
* dwc3_core_init - Low-level initialization of DWC3 Core
* @dwc: Pointer to our controller context structure
-@@ -1308,6 +1326,8 @@ static int dwc3_core_init(struct dwc3 *d
+@@ -1271,6 +1289,8 @@ static int dwc3_core_init(struct dwc3 *d
dwc3_set_incr_burst_type(dwc);
usb_phy_set_suspend(dwc->usb2_phy, 0);
usb_phy_set_suspend(dwc->usb3_phy, 0);
ret = phy_power_on(dwc->usb2_generic_phy);
-@@ -1541,6 +1561,7 @@ static void dwc3_get_properties(struct d
+@@ -1504,6 +1524,7 @@ static void dwc3_get_properties(struct d
u8 tx_thr_num_pkt_prd = 0;
u8 tx_max_burst_prd = 0;
u8 tx_fifo_resize_max_num;
const char *usb_psy_name;
int ret;
-@@ -1563,6 +1584,9 @@ static void dwc3_get_properties(struct d
+@@ -1526,6 +1547,9 @@ static void dwc3_get_properties(struct d
*/
tx_fifo_resize_max_num = 6;
dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
dwc->dr_mode = usb_get_dr_mode(dev);
-@@ -1678,6 +1702,9 @@ static void dwc3_get_properties(struct d
+@@ -1641,6 +1665,9 @@ static void dwc3_get_properties(struct d
dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk");
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis;
-@@ -1695,6 +1722,8 @@ static void dwc3_get_properties(struct d
+@@ -1658,6 +1685,8 @@ static void dwc3_get_properties(struct d
dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
dwc->tx_max_burst_prd = tx_max_burst_prd;
dwc->imod_interval = 0;
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
-@@ -1903,6 +1932,12 @@ static int dwc3_probe(struct platform_de
+@@ -1866,6 +1895,12 @@ static int dwc3_probe(struct platform_de
dwc3_get_properties(dwc);
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -282,6 +282,15 @@ config LEDS_COBALT_RAQ
+@@ -283,6 +283,15 @@ config LEDS_COBALT_RAQ
help
This option enables support for the Cobalt Raq series LEDs.
__netif_tx_unlock_bh(netdev_get_tx_queue(priv->dev, queue));
-@@ -5485,12 +5489,13 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5486,12 +5490,13 @@ static int stmmac_napi_poll_tx(struct na
struct stmmac_channel *ch =
container_of(napi, struct stmmac_channel, tx_napi);
struct stmmac_priv *priv = ch->priv_data;
work_done = min(work_done, budget);
if (work_done < budget && napi_complete_done(napi, work_done)) {
-@@ -5501,6 +5506,10 @@ static int stmmac_napi_poll_tx(struct na
+@@ -5502,6 +5507,10 @@ static int stmmac_napi_poll_tx(struct na
spin_unlock_irqrestore(&ch->lock, flags);
}
return work_done;
}
-@@ -5509,12 +5518,13 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5510,12 +5519,13 @@ static int stmmac_napi_poll_rxtx(struct
struct stmmac_channel *ch =
container_of(napi, struct stmmac_channel, rxtx_napi);
struct stmmac_priv *priv = ch->priv_data;
tx_done = min(tx_done, budget);
rx_done = stmmac_rx_zc(priv, budget, chan);
-@@ -5539,6 +5549,10 @@ static int stmmac_napi_poll_rxtx(struct
+@@ -5540,6 +5550,10 @@ static int stmmac_napi_poll_rxtx(struct
spin_unlock_irqrestore(&ch->lock, flags);
}
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -163,6 +163,7 @@ config LEDS_TURRIS_OMNIA
+@@ -164,6 +164,7 @@ config LEDS_TURRIS_OMNIA
depends on I2C
depends on MACH_ARMADA_38X || COMPILE_TEST
depends on OF
+++ /dev/null
-From 107c0964cb8db7ca28ac5199426414fdab3c274d Mon Sep 17 00:00:00 2001
-From: "Alexandros C. Couloumbis" <alex@ozo.com>
-Date: Fri, 7 Jul 2017 17:14:51 +0200
-Subject: hack: arch: powerpc: drop register save/restore library from modules
-
-Upstream GCC uses a libgcc function for saving/restoring registers. This
-makes the code bigger, and upstream kernels need to carry that function
-for every single kernel module. Our GCC is patched to avoid those
-references, so we can drop the extra bloat for modules.
-
-lede-commit: e8e1084654f50904e6bf77b70b2de3f137d7b3ec
-Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
----
- arch/powerpc/Makefile | 1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/powerpc/Makefile
-+++ b/arch/powerpc/Makefile
-@@ -42,19 +42,6 @@ machine-$(CONFIG_PPC64) += 64
- machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
- UTS_MACHINE := $(subst $(space),,$(machine-y))
-
--# XXX This needs to be before we override LD below
--ifdef CONFIG_PPC32
--KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
--else
--ifeq ($(call ld-ifversion, -ge, 22500, y),y)
--# Have the linker provide sfpr if possible.
--# There is a corresponding test in arch/powerpc/lib/Makefile
--KBUILD_LDFLAGS_MODULE += --save-restore-funcs
--else
--KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
--endif
--endif
--
- ifdef CONFIG_CPU_LITTLE_ENDIAN
- KBUILD_CFLAGS += -mlittle-endian
- KBUILD_LDFLAGS += -EL
+++ /dev/null
-From 86b7307af26834415e1ba8597319a8b64846346f Mon Sep 17 00:00:00 2001
-From: Namjae Jeon <linkinjeon@kernel.org>
-Date: Mon, 15 Jan 2024 10:24:54 +0900
-Subject: [PATCH] ksmbd: only v2 leases handle the directory
-
-When smb2 leases is disable, ksmbd can send oplock break notification
-and cause wait oplock break ack timeout. It may appear like hang when
-accessing a directory. This patch make only v2 leases handle the
-directory.
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
-Signed-off-by: Steve French <stfrench@microsoft.com>
----
- fs/smb/server/oplock.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
---- a/fs/smb/server/oplock.c
-+++ b/fs/smb/server/oplock.c
-@@ -1191,6 +1191,12 @@ int smb_grant_oplock(struct ksmbd_work *
- bool prev_op_has_lease;
- __le32 prev_op_state = 0;
-
-+ /* Only v2 leases handle the directory */
-+ if (S_ISDIR(file_inode(fp->filp)->i_mode)) {
-+ if (!lctx || lctx->version != 2)
-+ return 0;
-+ }
-+
- opinfo = alloc_opinfo(work, pid, tid);
- if (!opinfo)
- return -ENOMEM;
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -7884,7 +7884,7 @@ static int nft_register_flowtable_net_ho
+@@ -7900,7 +7900,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
-@@ -702,6 +702,13 @@ static int mtk_pcie_startup_port_v2(stru
+@@ -708,6 +708,13 @@ static int mtk_pcie_startup_port_v2(stru
*/
msleep(100);
--- a/drivers/pci/controller/pcie-mediatek-gen3.c
+++ b/drivers/pci/controller/pcie-mediatek-gen3.c
-@@ -350,7 +350,13 @@ static int mtk_pcie_startup_port(struct
+@@ -375,7 +375,13 @@ static int mtk_pcie_startup_port(struct
msleep(100);
/* De-assert reset signals */
struct mtk_pcie_port;
/**
-@@ -1054,6 +1060,27 @@ static int mtk_pcie_setup(struct mtk_pci
+@@ -1060,6 +1066,27 @@ static int mtk_pcie_setup(struct mtk_pci
struct mtk_pcie_port *port, *tmp;
int err, slot;
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -873,6 +873,16 @@ source "drivers/leds/flash/Kconfig"
+@@ -874,6 +874,16 @@ source "drivers/leds/flash/Kconfig"
comment "RGB LED drivers"
source "drivers/leds/rgb/Kconfig"
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -299,6 +299,14 @@ config LEDS_IPAQ_MICRO
+@@ -300,6 +300,14 @@ config LEDS_IPAQ_MICRO
Choose this option if you want to use the notification LED on
Compaq/HP iPAQ h3100 and h3600.