--- /dev/null
+From 38ed310c22e7a0fc978b1f8292136a4a4a8b3051 Mon Sep 17 00:00:00 2001
+From: Roman Gushchin <roman.gushchin@linux.dev>
+Date: Wed, 8 Mar 2023 14:26:02 -0800
+Subject: firmware: xilinx: don't make a sleepable memory allocation from an atomic context
+
+From: Roman Gushchin <roman.gushchin@linux.dev>
+
+commit 38ed310c22e7a0fc978b1f8292136a4a4a8b3051 upstream.
+
+The following issue was discovered using lockdep:
+[ 6.691371] BUG: sleeping function called from invalid context at include/linux/sched/mm.h:209
+[ 6.694602] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 1, name: swapper/0
+[ 6.702431] 2 locks held by swapper/0/1:
+[ 6.706300] #0: ffffff8800f6f188 (&dev->mutex){....}-{3:3}, at: __device_driver_lock+0x4c/0x90
+[ 6.714900] #1: ffffffc009a2abb8 (enable_lock){....}-{2:2}, at: clk_enable_lock+0x4c/0x140
+[ 6.723156] irq event stamp: 304030
+[ 6.726596] hardirqs last enabled at (304029): [<ffffffc008d17ee0>] _raw_spin_unlock_irqrestore+0xc0/0xd0
+[ 6.736142] hardirqs last disabled at (304030): [<ffffffc00876bc5c>] clk_enable_lock+0xfc/0x140
+[ 6.744742] softirqs last enabled at (303958): [<ffffffc0080904f0>] _stext+0x4f0/0x894
+[ 6.752655] softirqs last disabled at (303951): [<ffffffc0080e53b8>] irq_exit+0x238/0x280
+[ 6.760744] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G U 5.15.36 #2
+[ 6.768048] Hardware name: xlnx,zynqmp (DT)
+[ 6.772179] Call trace:
+[ 6.774584] dump_backtrace+0x0/0x300
+[ 6.778197] show_stack+0x18/0x30
+[ 6.781465] dump_stack_lvl+0xb8/0xec
+[ 6.785077] dump_stack+0x1c/0x38
+[ 6.788345] ___might_sleep+0x1a8/0x2a0
+[ 6.792129] __might_sleep+0x6c/0xd0
+[ 6.795655] kmem_cache_alloc_trace+0x270/0x3d0
+[ 6.800127] do_feature_check_call+0x100/0x220
+[ 6.804513] zynqmp_pm_invoke_fn+0x8c/0xb0
+[ 6.808555] zynqmp_pm_clock_getstate+0x90/0xe0
+[ 6.813027] zynqmp_pll_is_enabled+0x8c/0x120
+[ 6.817327] zynqmp_pll_enable+0x38/0xc0
+[ 6.821197] clk_core_enable+0x144/0x400
+[ 6.825067] clk_core_enable+0xd4/0x400
+[ 6.828851] clk_core_enable+0xd4/0x400
+[ 6.832635] clk_core_enable+0xd4/0x400
+[ 6.836419] clk_core_enable+0xd4/0x400
+[ 6.840203] clk_core_enable+0xd4/0x400
+[ 6.843987] clk_core_enable+0xd4/0x400
+[ 6.847771] clk_core_enable+0xd4/0x400
+[ 6.851555] clk_core_enable_lock+0x24/0x50
+[ 6.855683] clk_enable+0x24/0x40
+[ 6.858952] fclk_probe+0x84/0xf0
+[ 6.862220] platform_probe+0x8c/0x110
+[ 6.865918] really_probe+0x110/0x5f0
+[ 6.869530] __driver_probe_device+0xcc/0x210
+[ 6.873830] driver_probe_device+0x64/0x140
+[ 6.877958] __driver_attach+0x114/0x1f0
+[ 6.881828] bus_for_each_dev+0xe8/0x160
+[ 6.885698] driver_attach+0x34/0x50
+[ 6.889224] bus_add_driver+0x228/0x300
+[ 6.893008] driver_register+0xc0/0x1e0
+[ 6.896792] __platform_driver_register+0x44/0x60
+[ 6.901436] fclk_driver_init+0x1c/0x28
+[ 6.905220] do_one_initcall+0x104/0x590
+[ 6.909091] kernel_init_freeable+0x254/0x2bc
+[ 6.913390] kernel_init+0x24/0x130
+[ 6.916831] ret_from_fork+0x10/0x20
+
+Fix it by passing the GFP_ATOMIC gfp flag for the corresponding
+memory allocation.
+
+Fixes: acfdd18591ea ("firmware: xilinx: Use hash-table for api feature check")
+Cc: stable <stable@kernel.org>
+Signed-off-by: Roman Gushchin <roman.gushchin@linux.dev>
+Cc: Amit Sunil Dhamne <amit.sunil.dhamne@xilinx.com>
+Cc: Michal Simek <michal.simek@xilinx.com>
+Cc: linux-arm-kernel@lists.infradead.org
+Cc: linux-kernel@vger.kernel.org
+Link: https://lore.kernel.org/r/20230308222602.123866-1-roman.gushchin@linux.dev
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/firmware/xilinx/zynqmp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/firmware/xilinx/zynqmp.c
++++ b/drivers/firmware/xilinx/zynqmp.c
+@@ -171,7 +171,7 @@ static int zynqmp_pm_feature(u32 api_id)
+ }
+
+ /* Add new entry if not present */
+- feature_data = kmalloc(sizeof(*feature_data), GFP_KERNEL);
++ feature_data = kmalloc(sizeof(*feature_data), GFP_ATOMIC);
+ if (!feature_data)
+ return -ENOMEM;
+
--- /dev/null
+From a5904f415e1af72fa8fe6665aa4f554dc2099a95 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Mon, 6 Mar 2023 08:56:29 +0100
+Subject: interconnect: fix mem leak when freeing nodes
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit a5904f415e1af72fa8fe6665aa4f554dc2099a95 upstream.
+
+The node link array is allocated when adding links to a node but is not
+deallocated when nodes are destroyed.
+
+Fixes: 11f1ceca7031 ("interconnect: Add generic on-chip interconnect API")
+Cc: stable@vger.kernel.org # 5.1
+Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # i.MX8MP MSC SM2-MB-EP1 Board
+Link: https://lore.kernel.org/r/20230306075651.2449-2-johan+linaro@kernel.org
+Signed-off-by: Georgi Djakov <djakov@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/interconnect/core.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/interconnect/core.c
++++ b/drivers/interconnect/core.c
+@@ -850,6 +850,10 @@ void icc_node_destroy(int id)
+
+ mutex_unlock(&icc_lock);
+
++ if (!node)
++ return;
++
++ kfree(node->links);
+ kfree(node);
+ }
+ EXPORT_SYMBOL_GPL(icc_node_destroy);
--- /dev/null
+From 9aff74cc4e9eb841dde5fd009ed7ddca5db40e68 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Tue, 7 Mar 2023 17:44:02 +0100
+Subject: serial: qcom-geni: fix console shutdown hang
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit 9aff74cc4e9eb841dde5fd009ed7ddca5db40e68 upstream.
+
+A recent commit added back the calls top stop tx and rx to shutdown()
+which had previously been removed by commit e83766334f96 ("tty: serial:
+qcom_geni_serial: No need to stop tx/rx on UART shutdown") in order to
+be able to use kgdb after stopping the getty.
+
+Not only did this again break kgdb, but it also broke serial consoles
+more generally by hanging TX when stopping the getty during reboot.
+
+The underlying problem has been there since the driver was first merged
+and fixing it is going to be a bit involved so simply stop calling the
+broken stop functions during shutdown for consoles for now.
+
+Fixes: d8aca2f96813 ("tty: serial: qcom-geni-serial: stop operations in progress at shutdown")
+Cc: stable <stable@kernel.org>
+Cc: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Reviewed-by: Douglas Anderson <dianders@chromium.org>
+Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Tested-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
+Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
+Tested-by: Andrew Halaney <ahalaney@redhat.com> # sa8540p-ride
+Link: https://lore.kernel.org/r/20230307164405.14218-2-johan+linaro@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/qcom_geni_serial.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/tty/serial/qcom_geni_serial.c
++++ b/drivers/tty/serial/qcom_geni_serial.c
+@@ -893,6 +893,10 @@ static int setup_fifos(struct qcom_geni_
+ static void qcom_geni_serial_shutdown(struct uart_port *uport)
+ {
+ disable_irq(uport->irq);
++
++ if (uart_console(uport))
++ return;
++
+ qcom_geni_serial_stop_tx(uport);
+ qcom_geni_serial_stop_rx(uport);
+ }