--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -1953,6 +1953,16 @@ reset:
+@@ -1951,6 +1951,16 @@ reset:
return ret;
}
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
*/
-@@ -5383,6 +5486,7 @@ static const struct hc_driver xhci_hc_dr
+@@ -5390,6 +5493,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -3659,6 +3659,48 @@ static int xhci_align_td(struct xhci_hcd
+@@ -3664,6 +3664,48 @@ static int xhci_align_td(struct xhci_hcd
return 1;
}
/* This is very similar to what ehci-q.c qtd_fill() does */
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
struct urb *urb, int slot_id, unsigned int ep_index)
-@@ -3813,6 +3855,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
+@@ -3818,6 +3860,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
}
check_trb_math(urb, enqd_len);
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
start_cycle, start_trb);
return 0;
-@@ -3961,6 +4005,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
+@@ -3966,6 +4010,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
/* Event on completion */
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
-@@ -436,6 +436,8 @@ source "drivers/gpu/drm/v3d/Kconfig"
+@@ -441,6 +441,8 @@ source "drivers/gpu/drm/v3d/Kconfig"
source "drivers/gpu/drm/vc4/Kconfig"
source "drivers/gpu/drm/etnaviv/Kconfig"
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
-@@ -224,3 +224,4 @@ obj-y += solomon/
+@@ -225,3 +225,4 @@ obj-y += solomon/
obj-$(CONFIG_DRM_SPRD) += sprd/
obj-$(CONFIG_DRM_LOONGSON) += loongson/
obj-$(CONFIG_DRM_POWERVR) += imagination/
+ while (num_groups-- > 0)
+ pispbe_destroy_node_group(&pispbe->node_group[num_groups]);
pm_runtime_suspend_err:
- pispbe_runtime_suspend(pispbe->dev);
+ pm_runtime_put(pispbe->dev);
pm_runtime_disable_err:
@@ -1760,7 +1820,8 @@ static void pispbe_remove(struct platfor
{
+ for (int i = PISPBE_NUM_NODE_GROUPS - 1; i >= 0; i--)
+ pispbe_destroy_node_group(&pispbe->node_group[i]);
- pispbe_runtime_suspend(pispbe->dev);
pm_runtime_dont_use_autosuspend(pispbe->dev);
+ pm_runtime_disable(pispbe->dev);
static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring)
{
struct xhci_segment *seg = ring->first_seg;
-@@ -4788,7 +4792,7 @@ static u16 xhci_calculate_u1_timeout(str
+@@ -4795,7 +4799,7 @@ static u16 xhci_calculate_u1_timeout(str
}
}
timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc);
else
timeout_ns = udev->u1_params.sel;
-@@ -4852,7 +4856,7 @@ static u16 xhci_calculate_u2_timeout(str
+@@ -4859,7 +4863,7 @@ static u16 xhci_calculate_u2_timeout(str
}
}
+++ /dev/null
-From 5a821e2d69e26b51b7f3740b6b0c3462b8cacaff Mon Sep 17 00:00:00 2001
-From: Michal Suchanek <msuchanek@suse.de>
-Date: Mon, 31 Mar 2025 12:57:19 +0200
-Subject: [PATCH] powerpc/boot: Fix build with gcc 15
-
-Similar to x86 the ppc boot code does not build with GCC 15.
-
-Copy the fix from
-commit ee2ab467bddf ("x86/boot: Use '-std=gnu11' to fix build with GCC 15")
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
-Tested-by: Venkat Rao Bagalkote <venkat88@linux.ibm.com>
-Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
-Link: https://patch.msgid.link/20250331105722.19709-1-msuchanek@suse.de
----
- arch/powerpc/boot/Makefile | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/arch/powerpc/boot/Makefile
-+++ b/arch/powerpc/boot/Makefile
-@@ -70,6 +70,7 @@ BOOTCPPFLAGS := -nostdinc $(LINUXINCLUDE
- BOOTCPPFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
-
- BOOTCFLAGS := $(BOOTTARGETFLAGS) \
-+ -std=gnu11 \
- -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
- -fno-strict-aliasing -O2 \
- -msoft-float -mno-altivec -mno-vsx \
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
-@@ -3500,6 +3500,10 @@ ppp_connect_channel(struct channel *pch,
+@@ -3504,6 +3504,10 @@ ppp_connect_channel(struct channel *pch,
ret = -ENOTCONN;
goto outl;
}
{ }
--- a/drivers/net/phy/mscc/mscc_main.c
+++ b/drivers/net/phy/mscc/mscc_main.c
-@@ -2700,7 +2700,7 @@ static struct phy_driver vsc85xx_driver[
+@@ -2712,7 +2712,7 @@ static struct phy_driver vsc85xx_driver[
module_phy_driver(vsc85xx_driver);
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
-@@ -3646,6 +3646,11 @@ static int xmit_one(struct sk_buff *skb,
+@@ -3658,6 +3658,11 @@ static int xmit_one(struct sk_buff *skb,
if (dev_nit_active(dev))
dev_queue_xmit_nit(skb, dev);
-LINUX_VERSION-6.12 = .43
-LINUX_KERNEL_HASH-6.12.43 = 0fcbbbbcd456e87bbbfc8bf37af541fda62ccfcce76903503424fd101ef7bdee
+LINUX_VERSION-6.12 = .44
+LINUX_KERNEL_HASH-6.12.44 = b650210ed3027b224969d148aa377452a9aad3ae7f2851abedd31adfef16bdae
#endif /* __KERNEL__ */
/**
-@@ -306,6 +308,4 @@ static inline void *offset_to_ptr(const
+@@ -298,6 +300,4 @@ static inline void *offset_to_ptr(const
*/
#define prevent_tail_call_optimization() mb()
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1112,6 +1112,7 @@ static const struct spinand_manufacturer
+@@ -1115,6 +1115,7 @@ static const struct spinand_manufacturer
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
seq_printf(m, "%05x %s %7s", i,
--- a/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
+++ b/drivers/net/ethernet/mediatek/mtk_ppe_offload.c
-@@ -520,24 +520,21 @@ static int
+@@ -522,24 +522,21 @@ static int
mtk_flow_offload_stats(struct mtk_eth *eth, struct flow_cls_offload *f)
{
struct mtk_flow_entry *entry;
--- a/drivers/bus/mhi/host/main.c
+++ b/drivers/bus/mhi/host/main.c
-@@ -906,6 +906,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
+@@ -916,6 +916,7 @@ int mhi_process_ctrl_ev_ring(struct mhi_
switch (event) {
case MHI_EE_SBL:
st = DEV_ST_TRANSITION_SBL;
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
-@@ -76,7 +76,7 @@ enum imx_pcie_variants {
+@@ -77,7 +77,7 @@ enum imx_pcie_variants {
};
#define IMX_PCIE_FLAG_IMX_PHY BIT(0)
#define IMX_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2)
#define IMX_PCIE_FLAG_HAS_PHYDRV BIT(3)
#define IMX_PCIE_FLAG_HAS_APP_RESET BIT(4)
-@@ -862,6 +862,12 @@ static int imx_pcie_start_link(struct dw
+@@ -861,6 +861,12 @@ static int imx_pcie_start_link(struct dw
u32 tmp;
int ret;
/*
* Force Gen1 operation when starting the link. In case the link is
* started in Gen2 mode, there is a possibility the devices on the
-@@ -898,22 +904,10 @@ static int imx_pcie_start_link(struct dw
+@@ -897,22 +903,10 @@ static int imx_pcie_start_link(struct dw
dw_pcie_writel_dbi(pci, PCIE_LINK_WIDTH_SPEED_CONTROL, tmp);
dw_pcie_dbi_ro_wr_dis(pci);
}
/* Make sure link training is finished as well! */
-@@ -1535,7 +1529,7 @@ static const struct imx_pcie_drvdata drv
+@@ -1546,7 +1540,7 @@ static const struct imx_pcie_drvdata drv
[IMX6Q] = {
.variant = IMX6Q,
.flags = IMX_PCIE_FLAG_IMX_PHY |
IMX_PCIE_FLAG_BROKEN_SUSPEND |
IMX_PCIE_FLAG_SUPPORTS_SUSPEND,
.dbi_length = 0x200,
-@@ -1553,7 +1547,7 @@ static const struct imx_pcie_drvdata drv
+@@ -1564,7 +1558,7 @@ static const struct imx_pcie_drvdata drv
[IMX6SX] = {
.variant = IMX6SX,
.flags = IMX_PCIE_FLAG_IMX_PHY |
IMX_PCIE_FLAG_SUPPORTS_SUSPEND,
.gpr = "fsl,imx6q-iomuxc-gpr",
.clk_names = imx6sx_clks,
-@@ -1569,7 +1563,7 @@ static const struct imx_pcie_drvdata drv
+@@ -1580,7 +1574,7 @@ static const struct imx_pcie_drvdata drv
[IMX6QP] = {
.variant = IMX6QP,
.flags = IMX_PCIE_FLAG_IMX_PHY |
+++ /dev/null
-From d8588b5b9fddffd51962c13db7d00ae6f2ac945b Mon Sep 17 00:00:00 2001
-From: Tim Harvey <tharvey@gateworks.com>
-Date: Thu, 19 Jun 2025 16:04:53 -0700
-Subject: [PATCH] PCI: imx6: Remove apps_reset toggle in _core_reset functions
-
-apps_reset is LTSSM_EN on i.MX7, i.MX8MQ, i.MX8MM and i.MX8MP platforms.
-Since the assertion/de-assertion of apps_reset(LTSSM_EN bit) had been
-wrappered in imx_pcie_ltssm_enable() and imx_pcie_ltssm_disable();
-
-Remove apps_reset toggle in imx_pcie_assert_core_reset() and
-imx_pcie_deassert_core_reset() functions. Use imx_pcie_ltssm_enable()
-and imx_pcie_ltssm_disable() to configure apps_reset directly.
-
-Fix fail to enumerate reliably PI7C9X2G608GP (hotplug) at i.MX8MM, which
-reported By Tim.
-
-Reported-by: Tim Harvey <tharvey@gateworks.com>
-Closes: https://lore.kernel.org/all/CAJ+vNU3ohR2YKTwC4xoYrc1z-neDoH2TTZcMHDy+poj9=jSy+w@mail.gmail.com/
-Fixes: ef61c7d8d032 ("PCI: imx6: Deassert apps_reset in imx_pcie_deassert_core_reset()")
-Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
----
- drivers/pci/controller/dwc/pci-imx6.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/pci/controller/dwc/pci-imx6.c
-+++ b/drivers/pci/controller/dwc/pci-imx6.c
-@@ -778,7 +778,6 @@ static int imx7d_pcie_core_reset(struct
- static void imx_pcie_assert_core_reset(struct imx_pcie *imx_pcie)
- {
- reset_control_assert(imx_pcie->pciephy_reset);
-- reset_control_assert(imx_pcie->apps_reset);
-
- if (imx_pcie->drvdata->core_reset)
- imx_pcie->drvdata->core_reset(imx_pcie, true);
-@@ -790,7 +789,6 @@ static void imx_pcie_assert_core_reset(s
- static int imx_pcie_deassert_core_reset(struct imx_pcie *imx_pcie)
- {
- reset_control_deassert(imx_pcie->pciephy_reset);
-- reset_control_deassert(imx_pcie->apps_reset);
-
- if (imx_pcie->drvdata->core_reset)
- imx_pcie->drvdata->core_reset(imx_pcie, false);
-@@ -991,6 +989,9 @@ static int imx_pcie_host_init(struct dw_
- }
- }
-
-+ /* Make sure that PCIe LTSSM is cleared */
-+ imx_pcie_ltssm_disable(dev);
-+
- ret = imx_pcie_deassert_core_reset(imx_pcie);
- if (ret < 0) {
- dev_err(dev, "pcie deassert core reset failed: %d\n", ret);
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
-@@ -2978,6 +2978,22 @@ char *ppp_dev_name(struct ppp_channel *c
+@@ -2982,6 +2982,22 @@ char *ppp_dev_name(struct ppp_channel *c
return name;
}
/*
* Disconnect a channel from the generic layer.
-@@ -3628,6 +3644,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
+@@ -3633,6 +3649,7 @@ EXPORT_SYMBOL(ppp_unregister_channel);
EXPORT_SYMBOL(ppp_channel_index);
EXPORT_SYMBOL(ppp_unit_number);
EXPORT_SYMBOL(ppp_dev_name);
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -893,7 +893,7 @@ static int spinand_mtd_write(struct mtd_
+@@ -896,7 +896,7 @@ static int spinand_mtd_write(struct mtd_
static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
{
struct spinand_device *spinand = nand_to_spinand(nand);
struct nand_page_io_req req = {
.pos = *pos,
.ooblen = sizeof(marker),
-@@ -904,7 +904,7 @@ static bool spinand_isbad(struct nand_de
+@@ -907,7 +907,7 @@ static bool spinand_isbad(struct nand_de
spinand_select_target(spinand, pos->target);
spinand_read_page(spinand, &req);
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1526,6 +1527,7 @@ static int spinand_probe(struct spi_mem
+@@ -1529,6 +1530,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1533,6 +1535,7 @@ static int spinand_probe(struct spi_mem
+@@ -1536,6 +1538,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1551,6 +1554,7 @@ static int spinand_remove(struct spi_mem
+@@ -1554,6 +1557,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1114,6 +1114,7 @@ static const struct spinand_manufacturer
+@@ -1117,6 +1117,7 @@ static const struct spinand_manufacturer
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
&etron_spinand_manufacturer,
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2730,6 +2730,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2729,6 +2729,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1152,6 +1152,56 @@ static int spinand_manufacturer_match(st
+@@ -1155,6 +1155,56 @@ static int spinand_manufacturer_match(st
return -EOPNOTSUPP;
}
static int spinand_id_detect(struct spinand_device *spinand)
{
u8 *id = spinand->id.data;
-@@ -1403,6 +1453,10 @@ static int spinand_init(struct spinand_d
+@@ -1406,6 +1456,10 @@ static int spinand_init(struct spinand_d
if (!spinand->scratchbuf)
return -ENOMEM;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1193,7 +1193,10 @@ static int spinand_cal_read(void *priv,
+@@ -1196,7 +1196,10 @@ static int spinand_cal_read(void *priv,
if (ret)
return ret;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1620,6 +1620,7 @@ static int spinand_remove(struct spi_mem
+@@ -1623,6 +1623,7 @@ static int spinand_remove(struct spi_mem
static const struct spi_device_id spinand_ids[] = {
{ .name = "spi-nand" },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(spi, spinand_ids);
-@@ -1627,6 +1628,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
+@@ -1630,6 +1631,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
#ifdef CONFIG_OF
static const struct of_device_id spinand_of_ids[] = {
{ .compatible = "spi-nand" },
+ __le64 blk_size;
+};
- static bool mdt_phdr_valid(const struct elf32_phdr *phdr)
+ static bool mdt_header_valid(const struct firmware *fw)
{
-@@ -67,6 +77,56 @@ static ssize_t mdt_load_split_segment(vo
+@@ -98,6 +108,56 @@ static ssize_t mdt_load_split_segment(vo
return ret;
}
/**
* qcom_mdt_get_size() - acquire size of the memory region needed to load mdt
* @fw: firmware object for the mdt file
-@@ -293,7 +353,8 @@ static bool qcom_mdt_bins_are_split(cons
+@@ -333,7 +393,8 @@ static bool qcom_mdt_bins_are_split(cons
static int __qcom_mdt_load(struct device *dev, const struct firmware *fw,
const char *fw_name, int pas_id, void *mem_region,
phys_addr_t mem_phys, size_t mem_size,
{
const struct elf32_phdr *phdrs;
const struct elf32_phdr *phdr;
-@@ -347,6 +408,14 @@ static int __qcom_mdt_load(struct device
+@@ -390,6 +451,14 @@ static int __qcom_mdt_load(struct device
if (!mdt_phdr_valid(phdr))
continue;
offset = phdr->p_paddr - mem_reloc;
if (offset < 0 || offset + phdr->p_memsz > mem_size) {
dev_err(dev, "segment outside memory range\n");
-@@ -364,7 +433,11 @@ static int __qcom_mdt_load(struct device
+@@ -407,7 +476,11 @@ static int __qcom_mdt_load(struct device
ptr = mem_region + offset;
/* Firmware is large enough to be non-split */
if (phdr->p_offset + phdr->p_filesz > fw->size) {
dev_err(dev, "file %s segment %d would be truncated\n",
-@@ -381,7 +454,7 @@ static int __qcom_mdt_load(struct device
+@@ -424,7 +497,7 @@ static int __qcom_mdt_load(struct device
break;
}
memset(ptr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz);
}
-@@ -416,7 +489,7 @@ int qcom_mdt_load(struct device *dev, co
+@@ -459,7 +532,7 @@ int qcom_mdt_load(struct device *dev, co
return ret;
return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
}
EXPORT_SYMBOL_GPL(qcom_mdt_load);
-@@ -439,9 +512,36 @@ int qcom_mdt_load_no_init(struct device
+@@ -482,9 +555,36 @@ int qcom_mdt_load_no_init(struct device
size_t mem_size, phys_addr_t *reloc_base)
{
return __qcom_mdt_load(dev, fw, firmware, pas_id, mem_region, mem_phys,
}
/*
-@@ -2769,7 +2782,6 @@ serial8250_do_set_termios(struct uart_po
+@@ -2768,7 +2781,6 @@ serial8250_do_set_termios(struct uart_po
if (termios->c_cflag & CRTSCTS)
up->mcr |= UART_MCR_AFE;
}