-LINUX_VERSION-6.1 = .39
-LINUX_KERNEL_HASH-6.1.39 = 4cddee22fdf657138a06af653492f67cd3a4762c04a34725534bd200d99085b8
\ No newline at end of file
+LINUX_VERSION-6.1 = .40
+LINUX_KERNEL_HASH-6.1.40 = 43eafc2197a07dcdcff7a7ef79ac7502061f7c564744e51626bf5fa2e22587f0
\ No newline at end of file
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
-@@ -1608,13 +1608,6 @@ drm_atomic_helper_wait_for_vblanks(struc
+@@ -1617,13 +1617,6 @@ drm_atomic_helper_wait_for_vblanks(struc
int i, ret;
unsigned int crtc_mask = 0;
for_each_oldnew_crtc_in_state(old_state, crtc, old_crtc_state, new_crtc_state, i) {
if (!new_crtc_state->active)
continue;
-@@ -2264,12 +2257,6 @@ int drm_atomic_helper_setup_commit(struc
+@@ -2273,12 +2266,6 @@ int drm_atomic_helper_setup_commit(struc
complete_all(&commit->flip_done);
continue;
}
commit->event = kzalloc(sizeof(*commit->event),
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
-@@ -7766,6 +7766,19 @@ static int intel_atomic_commit(struct dr
+@@ -7765,6 +7765,19 @@ static int intel_atomic_commit(struct dr
state->base.legacy_cursor_update = false;
}
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -2501,9 +2501,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2522,9 +2522,11 @@ int xhci_mem_init(struct xhci_hcd *xhci,
* Event ring setup: Allocate a normal ring, but also setup
* the event ring segment table (ERST). Section 4.9.3.
*/
if (!xhci->event_ring)
goto fail;
if (xhci_check_trb_in_td_math(xhci) < 0)
-@@ -2516,7 +2518,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
+@@ -2537,7 +2539,7 @@ int xhci_mem_init(struct xhci_hcd *xhci,
/* set ERST count with the number of entries in the segment table */
val = readl(&xhci->ir_set->erst_size);
val &= ERST_SIZE_MASK;
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -3188,6 +3188,31 @@ static const struct panel_desc qishenglo
+@@ -3190,6 +3190,31 @@ static const struct panel_desc qishenglo
.connector_type = DRM_MODE_CONNECTOR_DPI,
};
static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 },
-@@ -4219,6 +4244,9 @@ static const struct of_device_id platfor
+@@ -4221,6 +4246,9 @@ static const struct of_device_id platfor
.compatible = "qishenglong,gopher2b-lcd",
.data = &qishenglong_gopher2b_lcd,
}, {
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1899,6 +1899,7 @@ struct xhci_hcd {
- #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42)
- #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43)
+@@ -1901,6 +1901,7 @@ struct xhci_hcd {
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
-+#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45)
+ #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
+ #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
++#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
unsigned int num_active_eps;
unsigned int limit_active_eps;
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1901,6 +1901,7 @@ struct xhci_hcd {
- #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43)
- #define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
- #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45)
-+#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(46)
+@@ -1903,6 +1903,7 @@ struct xhci_hcd {
+ #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
+ #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
+ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
++#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
unsigned int num_active_eps;
unsigned int limit_active_eps;
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000,
.hdisplay = 480,
-@@ -4103,6 +4129,9 @@ static const struct of_device_id platfor
+@@ -4105,6 +4131,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e,
}, {
first_trb = false;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1902,6 +1902,7 @@ struct xhci_hcd {
- #define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
- #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45)
- #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(46)
-+#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(47)
+@@ -1904,6 +1904,7 @@ struct xhci_hcd {
+ #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
+ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
+ #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
++#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(49)
unsigned int num_active_eps;
unsigned int limit_active_eps;
return 0;
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1903,6 +1903,7 @@ struct xhci_hcd {
- #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(45)
- #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(46)
- #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(47)
-+#define XHCI_VLI_HUB_TT_QUIRK BIT_ULL(48)
+@@ -1905,6 +1905,7 @@ struct xhci_hcd {
+ #define XHCI_AVOID_DQ_ON_LINK BIT_ULL(47)
+ #define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(48)
+ #define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(49)
++#define XHCI_VLI_HUB_TT_QUIRK BIT_ULL(50)
unsigned int num_active_eps;
unsigned int limit_active_eps;
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
-@@ -880,7 +880,7 @@ EXPORT_SYMBOL(drm_atomic_get_private_obj
+@@ -889,7 +889,7 @@ EXPORT_SYMBOL(drm_atomic_get_private_obj
* or NULL if the private_obj is not part of the global atomic state.
*/
struct drm_private_state *
struct drm_private_obj *obj)
{
int i;
-@@ -902,7 +902,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_private
+@@ -911,7 +911,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_private
* or NULL if the private_obj is not part of the global atomic state.
*/
struct drm_private_state *
struct drm_private_obj *obj)
{
int i;
-@@ -934,7 +934,7 @@ EXPORT_SYMBOL(drm_atomic_get_new_private
+@@ -943,7 +943,7 @@ EXPORT_SYMBOL(drm_atomic_get_new_private
* not connected.
*/
struct drm_connector *
struct drm_encoder *encoder)
{
struct drm_connector_state *conn_state;
-@@ -968,7 +968,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_connect
+@@ -977,7 +977,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_connect
* not connected.
*/
struct drm_connector *
struct drm_encoder *encoder)
{
struct drm_connector_state *conn_state;
-@@ -1118,7 +1118,7 @@ EXPORT_SYMBOL(drm_atomic_get_bridge_stat
+@@ -1127,7 +1127,7 @@ EXPORT_SYMBOL(drm_atomic_get_bridge_stat
* the bridge is not part of the global atomic state.
*/
struct drm_bridge_state *
struct drm_bridge *bridge)
{
struct drm_private_state *obj_state;
-@@ -1140,7 +1140,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_bridge_
+@@ -1149,7 +1149,7 @@ EXPORT_SYMBOL(drm_atomic_get_old_bridge_
* the bridge is not part of the global atomic state.
*/
struct drm_bridge_state *
- MEDIA_BUS_FMT_RGB666_1X24_CPADHI
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -2135,6 +2135,38 @@ static const struct panel_desc innolux_a
+@@ -2136,6 +2136,38 @@ static const struct panel_desc innolux_a
.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
};
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
-@@ -4139,6 +4171,9 @@ static const struct of_device_id platfor
+@@ -4141,6 +4173,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
--- a/drivers/tty/serial/8250/8250.h
+++ b/drivers/tty/serial/8250/8250.h
-@@ -93,6 +93,7 @@ struct serial8250_config {
+@@ -92,6 +92,7 @@ struct serial8250_config {
+ #define UART_BUG_NOMSR BIT(2) /* UART has buggy MSR status bits (Au1x00) */
#define UART_BUG_THRE BIT(3) /* UART has buggy THRE reassertion */
- #define UART_BUG_PARITY BIT(4) /* UART mishandles parity if FIFO enabled */
#define UART_BUG_TXRACE BIT(5) /* UART Tx fails to set remote DR */
+#define UART_BUG_NOMSI BIT(6) /* UART has no modem status interrupt */
if (xhci->quirks & XHCI_NEC_HOST)
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -1899,6 +1899,7 @@ struct xhci_hcd {
- #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(42)
- #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(43)
+@@ -1901,6 +1901,7 @@ struct xhci_hcd {
#define XHCI_RESET_TO_DEFAULT BIT_ULL(44)
-+#define XHCI_FAKE_DOORBELL BIT_ULL(45)
+ #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(45)
+ #define XHCI_ZHAOXIN_HOST BIT_ULL(46)
++#define XHCI_FAKE_DOORBELL BIT_ULL(47)
unsigned int num_active_eps;
unsigned int limit_active_eps;
+++ /dev/null
-From e7731194fdf085f46d58b1adccfddbd0dfee4873 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Fri, 7 Jul 2023 08:53:25 +0200
-Subject: [PATCH] net: bgmac: postpone turning IRQs off to avoid SoC hangs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Turning IRQs off is done by accessing Ethernet controller registers.
-That can't be done until device's clock is enabled. It results in a SoC
-hang otherwise.
-
-This bug remained unnoticed for years as most bootloaders keep all
-Ethernet interfaces turned on. It seems to only affect a niche SoC
-family BCM47189. It has two Ethernet controllers but CFE bootloader uses
-only the first one.
-
-Fixes: 34322615cbaa ("net: bgmac: Mask interrupts during probe")
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Reviewed-by: Michal Kubiak <michal.kubiak@intel.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1492,8 +1492,6 @@ int bgmac_enet_probe(struct bgmac *bgmac
-
- bgmac->in_init = true;
-
-- bgmac_chip_intrs_off(bgmac);
--
- net_dev->irq = bgmac->irq;
- SET_NETDEV_DEV(net_dev, bgmac->dev);
- dev_set_drvdata(bgmac->dev, bgmac);
-@@ -1511,6 +1509,8 @@ int bgmac_enet_probe(struct bgmac *bgmac
- */
- bgmac_clk_enable(bgmac, 0);
-
-+ bgmac_chip_intrs_off(bgmac);
-+
- /* This seems to be fixing IRQ by assigning OOB #6 to the core */
- if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
- if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6)
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -740,9 +740,9 @@ qca8k_mdio_busy_wait(struct mii_bus *bus
+@@ -743,9 +743,9 @@ qca8k_mdio_busy_wait(struct mii_bus *bus
qca8k_split_addr(reg, &r1, &r2, &page);
/* Check if qca8k_read has failed for a different reason
* before returnting -ETIMEDOUT
-@@ -784,7 +784,7 @@ qca8k_mdio_write(struct qca8k_priv *priv
+@@ -787,7 +787,7 @@ qca8k_mdio_write(struct qca8k_priv *priv
exit:
/* even if the busy_wait timeouts try to clear the MASTER_EN */
mutex_unlock(&bus->mdio_lock);
-@@ -814,18 +814,18 @@ qca8k_mdio_read(struct qca8k_priv *priv,
+@@ -817,18 +817,18 @@ qca8k_mdio_read(struct qca8k_priv *priv,
if (ret)
goto exit;
--- a/drivers/net/dsa/qca/qca8k-8xxx.c
+++ b/drivers/net/dsa/qca/qca8k-8xxx.c
-@@ -716,21 +716,6 @@ err_clear_skb:
+@@ -719,21 +719,6 @@ err_clear_skb:
return ret;
}
static void
qca8k_split_addr(u32 regaddr, u16 *r1, u16 *r2, u16 *page)
-@@ -1726,6 +1727,10 @@ qca8k_setup(struct dsa_switch *ds)
+@@ -1729,6 +1730,10 @@ qca8k_setup(struct dsa_switch *ds)
if (ret)
return ret;
+++ /dev/null
-From 525ff9c2965770762b81d679820552a208070d59 Mon Sep 17 00:00:00 2001
-From: Arnd Bergmann <arnd@arndb.de>
-Date: Tue, 17 Jan 2023 17:40:35 +0100
-Subject: workqueue: fix enum type for gcc-13
-
-In gcc-13, the WORK_STRUCT_WQ_DATA_MASK constant is a signed 64-bit
-type on 32-bit architectures because the enum definition has both
-negative numbers and numbers above LONG_MAX in it:
-
-kernel/workqueue.c: In function 'get_work_pwq':
-kernel/workqueue.c:709:24: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 709 | return (void *)(data & WORK_STRUCT_WQ_DATA_MASK);
- | ^
-kernel/workqueue.c: In function 'get_work_pool':
-kernel/workqueue.c:737:25: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 737 | return ((struct pool_workqueue *)
- | ^
-kernel/workqueue.c: In function 'get_work_pool_id':
-kernel/workqueue.c:759:25: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
- 759 | return ((struct pool_workqueue *)
- | ^
-
-Change the enum definition to ensure all values can fit into
-the range of 'unsigned long' on all architectures.
-
-Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-Tested-by: Thierry Reding <treding@nvidia.com>
-Tested-by: Lai Jiangshan<jiangshanlai@gmail.com>
-Signed-off-by: Tejun Heo <tj@kernel.org>
----
- include/linux/workqueue.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/include/linux/workqueue.h
-+++ b/include/linux/workqueue.h
-@@ -83,7 +83,7 @@ enum {
-
- /* convenience constants */
- WORK_STRUCT_FLAG_MASK = (1UL << WORK_STRUCT_FLAG_BITS) - 1,
-- WORK_STRUCT_WQ_DATA_MASK = ~WORK_STRUCT_FLAG_MASK,
-+ WORK_STRUCT_WQ_DATA_MASK = (unsigned long)~WORK_STRUCT_FLAG_MASK,
- WORK_STRUCT_NO_POOL = (unsigned long)WORK_OFFQ_POOL_NONE << WORK_OFFQ_POOL_SHIFT,
-
- /* bit mask for work_busy() return values */
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2773,6 +2773,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2770,6 +2770,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
-@@ -1762,6 +1762,7 @@ static const struct of_device_id qcom_pc
+@@ -1764,6 +1764,7 @@ static const struct of_device_id qcom_pc
{ .compatible = "qcom,pcie-ipq8064", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-ipq8064-v2", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-ipq8074", .data = &cfg_2_3_3 },
+++ /dev/null
-From b8295c6eb276b60f7b75c53a9703ca8fee01eba2 Mon Sep 17 00:00:00 2001
-From: Christian Marangi <ansuelsmth@gmail.com>
-Date: Fri, 26 May 2023 13:09:17 +0200
-Subject: [PATCH] soc: qcom: mdt_loader: Fix unconditional call to
- scm_pas_mem_setup
-
-Commit ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS
-mem_setup") dropped the relocate check and made pas_mem_setup run
-unconditionally. The code was later moved with commit f4e526ff7e38
-("soc: qcom: mdt_loader: Extract PAS operations") to
-qcom_mdt_pas_init() effectively losing track of what was actually
-done.
-
-The assumption that PAS mem_setup can be done anytime was effectively
-wrong, with no good reason and this caused regression on some SoC
-that use remoteproc to bringup ath11k. One example is IPQ8074 SoC that
-effectively broke resulting in remoteproc silently die and ath11k not
-working.
-
-On this SoC FW relocate is not enabled and PAS mem_setup was correctly
-skipped in previous kernel version resulting in correct bringup and
-function of remoteproc and ath11k.
-
-To fix the regression, reintroduce the relocate check in
-qcom_mdt_pas_init() and correctly skip PAS mem_setup where relocate is
-not enabled.
-
-Fixes: ebeb20a9cd3f ("soc: qcom: mdt_loader: Always invoke PAS mem_setup")
-Reported-by: Robert Marko <robimarko@gmail.com>
-Tested-by: Robert Marko <robimarko@gmail.com>
-Co-developed-by: Robert Marko <robimarko@gmail.com>
-Signed-off-by: Robert Marko <robimarko@gmail.com>
-Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-Cc: stable@vger.kernel.org
----
- drivers/soc/qcom/mdt_loader.c | 16 +++++++++++-----
- 1 file changed, 11 insertions(+), 5 deletions(-)
-
---- a/drivers/soc/qcom/mdt_loader.c
-+++ b/drivers/soc/qcom/mdt_loader.c
-@@ -210,6 +210,7 @@ int qcom_mdt_pas_init(struct device *dev
- const struct elf32_hdr *ehdr;
- phys_addr_t min_addr = PHYS_ADDR_MAX;
- phys_addr_t max_addr = 0;
-+ bool relocate = false;
- size_t metadata_len;
- void *metadata;
- int ret;
-@@ -224,6 +225,9 @@ int qcom_mdt_pas_init(struct device *dev
- if (!mdt_phdr_valid(phdr))
- continue;
-
-+ if (phdr->p_flags & QCOM_MDT_RELOCATABLE)
-+ relocate = true;
-+
- if (phdr->p_paddr < min_addr)
- min_addr = phdr->p_paddr;
-
-@@ -246,11 +250,13 @@ int qcom_mdt_pas_init(struct device *dev
- goto out;
- }
-
-- ret = qcom_scm_pas_mem_setup(pas_id, mem_phys, max_addr - min_addr);
-- if (ret) {
-- /* Unable to set up relocation */
-- dev_err(dev, "error %d setting up firmware %s\n", ret, fw_name);
-- goto out;
-+ if (relocate) {
-+ ret = qcom_scm_pas_mem_setup(pas_id, mem_phys, max_addr - min_addr);
-+ if (ret) {
-+ /* Unable to set up relocation */
-+ dev_err(dev, "error %d setting up firmware %s\n", ret, fw_name);
-+ goto out;
-+ }
- }
-
- out: