mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-19 16:41:23 +00:00
kernel: bump 6.1 to 6.1.40
Removed upstreamed: generic/backport-6.1/701-v6.5-net-bgmac-postpone-turning-IRQs-off-to-avoid-SoC-han.patch[1] generic/pending-6.1/160-workqueue-fix-enum-type-for-gcc-13.patch[2] qualcommax/patches-6.1/0022-v6.5-soc-qcom-mdt_loader-Fix-unconditional-call-to-scm_pa.patch[3] Manually rebased: bcm27xx/patches-6.1/950-0359-xhci-quirks-add-link-TRB-quirk-for-VL805.patch bcm27xx/patches-6.1/950-0362-usb-xhci-add-VLI_TRB_CACHE_BUG-quirk.patch bcm27xx/patches-6.1/950-0390-usb-xhci-add-a-quirk-for-Superspeed-bulk-OUT-transfe.patch bcm27xx/patches-6.1/950-0469-usb-xhci-add-XHCI_VLI_HUB_TT_QUIRK.patch bcm53xx/patches-6.1/180-usb-xhci-add-support-for-performing-fake-doorbell.patch All other patches automatically rebased. 1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.40&id=685b57a1221c38ec8b456f968264d2496715820c 2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.40&id=2d57a1590f4d8c516f5aaf8fd5bb4f52d67275d8 3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.40&id=33f8dff6e1cbba5c2ec85fa5649c0a759a7e685c Build system: x86/64, filogic/xiaomi_redmi-router-ax6000-ubootmod Build-tested: x86/64, filogic/xiaomi_redmi-router-ax6000-ubootmod Run-tested: x86/64 Signed-off-by: John Audia <therealgraysky@proton.me>
This commit is contained in:
parent
fec22f8375
commit
d91f38a99e
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .39
|
||||
LINUX_KERNEL_HASH-6.1.39 = 4cddee22fdf657138a06af653492f67cd3a4762c04a34725534bd200d99085b8
|
||||
LINUX_VERSION-6.1 = .40
|
||||
LINUX_KERNEL_HASH-6.1.40 = 43eafc2197a07dcdcff7a7ef79ac7502061f7c564744e51626bf5fa2e22587f0
|
@ -59,7 +59,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- 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;
|
||||
|
||||
@ -73,7 +73,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
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;
|
||||
}
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- 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.
|
||||
*/
|
||||
@ -36,7 +36,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
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;
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- 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,
|
||||
};
|
||||
|
||||
@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
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,
|
||||
}, {
|
||||
|
@ -50,11 +50,11 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
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;
|
||||
|
@ -63,11 +63,11 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
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;
|
||||
|
@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
||||
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,
|
||||
}, {
|
||||
|
@ -86,11 +86,11 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
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;
|
||||
|
@ -109,11 +109,11 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||
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;
|
||||
|
@ -16,7 +16,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
|
||||
--- 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 *
|
||||
@ -25,7 +25,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
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 *
|
||||
@ -34,7 +34,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
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 *
|
||||
@ -43,7 +43,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
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 *
|
||||
@ -52,7 +52,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
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 *
|
||||
@ -61,7 +61,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20221123-rpi-kunit-tests-v1-
|
||||
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 *
|
||||
|
@ -126,7 +126,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
- 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,
|
||||
};
|
||||
|
||||
@ -165,7 +165,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
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,
|
||||
}, {
|
||||
|
@ -20,9 +20,9 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- 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 */
|
||||
|
||||
|
@ -107,11 +107,11 @@ it on BCM4708 family.
|
||||
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;
|
||||
|
@ -1,45 +0,0 @@
|
||||
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)
|
@ -28,7 +28,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- 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);
|
||||
|
||||
@ -40,7 +40,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
/* 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 */
|
||||
@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
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;
|
||||
|
||||
|
@ -20,7 +20,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- 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;
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
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;
|
||||
|
||||
|
@ -1,44 +0,0 @@
|
||||
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 */
|
@ -19,7 +19,7 @@
|
||||
},
|
||||
[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;
|
||||
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
|
||||
|
||||
--- 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 },
|
||||
|
@ -1,77 +0,0 @@
|
||||
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:
|
Loading…
x
Reference in New Issue
Block a user