mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 22:44:27 -05: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…
	
		Reference in New Issue
	
	Block a user