]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Jul 2023 07:40:19 +0000 (09:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Jul 2023 07:40:19 +0000 (09:40 +0200)
added patches:
drm-amd-display-add-monitor-specific-edid-quirk.patch
drm-amd-display-correct-dmub_fw_version-macro.patch
drm-amdgpu-avoid-restore-process-run-into-dead-loop.patch
drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch
drm-ttm-don-t-leak-a-resource-on-swapout-move-error.patch
drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch
firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch
serial-atmel-don-t-enable-irqs-prematurely.patch
tty-serial-imx-fix-rs485-rx-after-tx.patch
tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-in-case-of-error.patch
tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-when-iterating-clk.patch

12 files changed:
queue-5.15/drm-amd-display-add-monitor-specific-edid-quirk.patch [new file with mode: 0644]
queue-5.15/drm-amd-display-correct-dmub_fw_version-macro.patch [new file with mode: 0644]
queue-5.15/drm-amdgpu-avoid-restore-process-run-into-dead-loop.patch [new file with mode: 0644]
queue-5.15/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch [new file with mode: 0644]
queue-5.15/drm-ttm-don-t-leak-a-resource-on-swapout-move-error.patch [new file with mode: 0644]
queue-5.15/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch [new file with mode: 0644]
queue-5.15/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch [new file with mode: 0644]
queue-5.15/serial-atmel-don-t-enable-irqs-prematurely.patch [new file with mode: 0644]
queue-5.15/series
queue-5.15/tty-serial-imx-fix-rs485-rx-after-tx.patch [new file with mode: 0644]
queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-in-case-of-error.patch [new file with mode: 0644]
queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-when-iterating-clk.patch [new file with mode: 0644]

diff --git a/queue-5.15/drm-amd-display-add-monitor-specific-edid-quirk.patch b/queue-5.15/drm-amd-display-add-monitor-specific-edid-quirk.patch
new file mode 100644 (file)
index 0000000..5995cc6
--- /dev/null
@@ -0,0 +1,65 @@
+From 613a7956deb3b1ffa2810c6d4c90ee9c3d743dbb Mon Sep 17 00:00:00 2001
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Date: Mon, 12 Jun 2023 12:44:00 -0400
+Subject: drm/amd/display: Add monitor specific edid quirk
+
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+
+commit 613a7956deb3b1ffa2810c6d4c90ee9c3d743dbb upstream.
+
+Disable FAMS on a Samsung Odyssey G9 monitor. Experiments show that this
+monitor does not work well under some use cases, and is likely
+implementation specific bug on the monitor's firmware.
+
+Cc: stable@vger.kernel.org
+Reviewed-by: Rodrigo Siqueira <rodrigo.siqueira@amd.com>
+Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c |   26 ++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c
+@@ -40,6 +40,30 @@
+ #include "dm_helpers.h"
++static u32 edid_extract_panel_id(struct edid *edid)
++{
++      return (u32)edid->mfg_id[0] << 24   |
++             (u32)edid->mfg_id[1] << 16   |
++             (u32)EDID_PRODUCT_ID(edid);
++}
++
++static void apply_edid_quirks(struct edid *edid, struct dc_edid_caps *edid_caps)
++{
++      uint32_t panel_id = edid_extract_panel_id(edid);
++
++      switch (panel_id) {
++      /* Workaround for some monitors which does not work well with FAMS */
++      case drm_edid_encode_panel_id('S', 'A', 'M', 0x0E5E):
++      case drm_edid_encode_panel_id('S', 'A', 'M', 0x7053):
++      case drm_edid_encode_panel_id('S', 'A', 'M', 0x71AC):
++              DRM_DEBUG_DRIVER("Disabling FAMS on monitor with panel id %X\n", panel_id);
++              edid_caps->panel_patch.disable_fams = true;
++              break;
++      default:
++              return;
++      }
++}
++
+ /* dm_helpers_parse_edid_caps
+  *
+  * Parse edid caps
+@@ -122,6 +146,8 @@ enum dc_edid_status dm_helpers_parse_edi
+       else
+               edid_caps->speaker_flags = DEFAULT_SPEAKER_LOCATION;
++      apply_edid_quirks(edid_buf, edid_caps);
++
+       kfree(sads);
+       kfree(sadb);
diff --git a/queue-5.15/drm-amd-display-correct-dmub_fw_version-macro.patch b/queue-5.15/drm-amd-display-correct-dmub_fw_version-macro.patch
new file mode 100644 (file)
index 0000000..203c6c7
--- /dev/null
@@ -0,0 +1,37 @@
+From 274d205cb59f43815542e04b42a9e6d0b9b95eff Mon Sep 17 00:00:00 2001
+From: Mario Limonciello <mario.limonciello@amd.com>
+Date: Fri, 23 Jun 2023 10:05:19 -0500
+Subject: drm/amd/display: Correct `DMUB_FW_VERSION` macro
+
+From: Mario Limonciello <mario.limonciello@amd.com>
+
+commit 274d205cb59f43815542e04b42a9e6d0b9b95eff upstream.
+
+The `DMUB_FW_VERSION` macro has a mistake in that the revision field
+is off by one byte. The last byte is typically used for other purposes
+and not a revision.
+
+Cc: stable@vger.kernel.org
+Cc: Sean Wang <sean.ns.wang@amd.com>
+Cc: Marc Rossi <Marc.Rossi@amd.com>
+Cc: Hamza Mahfooz <Hamza.Mahfooz@amd.com>
+Cc: Tsung-hua (Ryan) Lin <Tsung-hua.Lin@amd.com>
+Reviewed-by: Leo Li <sunpeng.li@amd.com>
+Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/dmub/dmub_srv.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/display/dmub/dmub_srv.h
++++ b/drivers/gpu/drm/amd/display/dmub/dmub_srv.h
+@@ -445,7 +445,7 @@ struct dmub_notification {
+  * of a firmware to know if feature or functionality is supported or present.
+  */
+ #define DMUB_FW_VERSION(major, minor, revision) \
+-      ((((major) & 0xFF) << 24) | (((minor) & 0xFF) << 16) | ((revision) & 0xFFFF))
++      ((((major) & 0xFF) << 24) | (((minor) & 0xFF) << 16) | (((revision) & 0xFF) << 8))
+ /**
+  * dmub_srv_create() - creates the DMUB service.
diff --git a/queue-5.15/drm-amdgpu-avoid-restore-process-run-into-dead-loop.patch b/queue-5.15/drm-amdgpu-avoid-restore-process-run-into-dead-loop.patch
new file mode 100644 (file)
index 0000000..7b6fa65
--- /dev/null
@@ -0,0 +1,33 @@
+From 8a774fe912ff09e39c2d3a3589c729330113f388 Mon Sep 17 00:00:00 2001
+From: gaba <gaba@amd.com>
+Date: Thu, 2 Mar 2023 19:03:56 -0500
+Subject: drm/amdgpu: avoid restore process run into dead loop.
+
+From: gaba <gaba@amd.com>
+
+commit 8a774fe912ff09e39c2d3a3589c729330113f388 upstream.
+
+In restore process worker, pinned BO cause update PTE fail, then
+the function re-schedule the restore_work. This will generate dead loop.
+
+Signed-off-by: gaba <gaba@amd.com>
+Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+@@ -2350,6 +2350,9 @@ int amdgpu_amdkfd_gpuvm_restore_process_
+                       if (!attachment->is_mapped)
+                               continue;
++                      if (attachment->bo_va->base.bo->tbo.pin_count)
++                              continue;
++
+                       kfd_mem_dmaunmap_attachment(mem, attachment);
+                       ret = update_gpuvm_pte(mem, attachment, &sync_obj, NULL);
+                       if (ret) {
diff --git a/queue-5.15/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch b/queue-5.15/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch
new file mode 100644 (file)
index 0000000..c30d7f4
--- /dev/null
@@ -0,0 +1,62 @@
+From ea2c3c08554601b051d91403a241266e1cf490a5 Mon Sep 17 00:00:00 2001
+From: Samuel Pitoiset <samuel.pitoiset@gmail.com>
+Date: Fri, 16 Jun 2023 15:14:07 +0200
+Subject: drm/amdgpu: fix clearing mappings for BOs that are always valid in VM
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Samuel Pitoiset <samuel.pitoiset@gmail.com>
+
+commit ea2c3c08554601b051d91403a241266e1cf490a5 upstream.
+
+Per VM BOs must be marked as moved or otherwise their ranges are not
+updated on use which might be necessary when the replace operation
+splits mappings.
+
+This fixes random GPU hangs when replacing sparse mappings from the
+userspace, while OP_MAP/OP_UNMAP works fine because always valid BOs
+are correctly handled there.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -2575,18 +2575,30 @@ int amdgpu_vm_bo_clear_mappings(struct a
+       /* Insert partial mapping before the range */
+       if (!list_empty(&before->list)) {
++              struct amdgpu_bo *bo = before->bo_va->base.bo;
++
+               amdgpu_vm_it_insert(before, &vm->va);
+               if (before->flags & AMDGPU_PTE_PRT)
+                       amdgpu_vm_prt_get(adev);
++
++              if (bo && bo->tbo.base.resv == vm->root.bo->tbo.base.resv &&
++                  !before->bo_va->base.moved)
++                      amdgpu_vm_bo_moved(&before->bo_va->base);
+       } else {
+               kfree(before);
+       }
+       /* Insert partial mapping after the range */
+       if (!list_empty(&after->list)) {
++              struct amdgpu_bo *bo = after->bo_va->base.bo;
++
+               amdgpu_vm_it_insert(after, &vm->va);
+               if (after->flags & AMDGPU_PTE_PRT)
+                       amdgpu_vm_prt_get(adev);
++
++              if (bo && bo->tbo.base.resv == vm->root.bo->tbo.base.resv &&
++                  !after->bo_va->base.moved)
++                      amdgpu_vm_bo_moved(&after->bo_va->base);
+       } else {
+               kfree(after);
+       }
diff --git a/queue-5.15/drm-ttm-don-t-leak-a-resource-on-swapout-move-error.patch b/queue-5.15/drm-ttm-don-t-leak-a-resource-on-swapout-move-error.patch
new file mode 100644 (file)
index 0000000..1dc5bef
--- /dev/null
@@ -0,0 +1,40 @@
+From a590f03d8de7c4cb7ce4916dc7f2fd10711faabe Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= <thomas.hellstrom@linux.intel.com>
+Date: Mon, 26 Jun 2023 11:14:50 +0200
+Subject: drm/ttm: Don't leak a resource on swapout move error
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Thomas Hellström <thomas.hellstrom@linux.intel.com>
+
+commit a590f03d8de7c4cb7ce4916dc7f2fd10711faabe upstream.
+
+If moving the bo to system for swapout failed, we were leaking
+a resource. Fix.
+
+Fixes: bfa3357ef9ab ("drm/ttm: allocate resource object instead of embedding it v2")
+Cc: Christian König <christian.koenig@amd.com>
+Cc: "Christian König" <ckoenig.leichtzumerken@gmail.com>
+Cc: dri-devel@lists.freedesktop.org
+Cc: <stable@vger.kernel.org> # v5.14+
+Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
+Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
+Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20230626091450.14757-5-thomas.hellstrom@linux.intel.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/ttm/ttm_bo.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -1187,6 +1187,7 @@ int ttm_bo_swapout(struct ttm_buffer_obj
+               ret = ttm_bo_handle_move_mem(bo, evict_mem, true, &ctx, &hop);
+               if (unlikely(ret != 0)) {
+                       WARN(ret == -EMULTIHOP, "Unexpected multihop in swaput - likely driver bug.\n");
++                      ttm_resource_free(bo, &evict_mem);
+                       goto out;
+               }
+       }
diff --git a/queue-5.15/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch b/queue-5.15/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch
new file mode 100644 (file)
index 0000000..bed5ba2
--- /dev/null
@@ -0,0 +1,41 @@
+From a2848d08742c8e8494675892c02c0d22acbe3cf8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Fri, 7 Jul 2023 11:25:00 +0200
+Subject: drm/ttm: never consider pinned BOs for eviction&swap
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Christian König <christian.koenig@amd.com>
+
+commit a2848d08742c8e8494675892c02c0d22acbe3cf8 upstream.
+
+There is a small window where we have already incremented the pin count
+but not yet moved the bo from the lru to the pinned list.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reported-by: Pelloux-Prayer, Pierre-Eric <Pierre-eric.Pelloux-prayer@amd.com>
+Tested-by: Pelloux-Prayer, Pierre-Eric <Pierre-eric.Pelloux-prayer@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Cc: stable@vger.kernel.org
+Link: https://patchwork.freedesktop.org/patch/msgid/20230707120826.3701-1-christian.koenig@amd.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/ttm/ttm_bo.c |    6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -603,6 +603,12 @@ static bool ttm_bo_evict_swapout_allowab
+ {
+       bool ret = false;
++      if (bo->pin_count) {
++              *locked = false;
++              *busy = false;
++              return false;
++      }
++
+       if (bo->base.resv == ctx->resv) {
+               dma_resv_assert_held(bo->base.resv);
+               if (ctx->allow_res_evict)
diff --git a/queue-5.15/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch b/queue-5.15/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch
new file mode 100644 (file)
index 0000000..9b2812d
--- /dev/null
@@ -0,0 +1,39 @@
+From 1995f15590ca222f91193ed11461862b450abfd6 Mon Sep 17 00:00:00 2001
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Date: Tue, 13 Jun 2023 16:15:21 -0500
+Subject: firmware: stratix10-svc: Fix a potential resource leak in svc_create_memory_pool()
+
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+
+commit 1995f15590ca222f91193ed11461862b450abfd6 upstream.
+
+svc_create_memory_pool() is only called from stratix10_svc_drv_probe().
+Most of resources in the probe are managed, but not this memremap() call.
+
+There is also no memunmap() call in the file.
+
+So switch to devm_memremap() to avoid a resource leak.
+
+Cc: stable@vger.kernel.org
+Fixes: 7ca5ce896524 ("firmware: add Intel Stratix10 service layer driver")
+Link: https://lore.kernel.org/all/783e9dfbba34e28505c9efa8bba41f97fd0fa1dc.1686109400.git.christophe.jaillet@wanadoo.fr/
+Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
+Message-ID: <20230613211521.16366-1-dinguyen@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/firmware/stratix10-svc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/firmware/stratix10-svc.c
++++ b/drivers/firmware/stratix10-svc.c
+@@ -622,7 +622,7 @@ svc_create_memory_pool(struct platform_d
+       end = rounddown(sh_memory->addr + sh_memory->size, PAGE_SIZE);
+       paddr = begin;
+       size = end - begin;
+-      va = memremap(paddr, size, MEMREMAP_WC);
++      va = devm_memremap(dev, paddr, size, MEMREMAP_WC);
+       if (!va) {
+               dev_err(dev, "fail to remap shared memory\n");
+               return ERR_PTR(-EINVAL);
diff --git a/queue-5.15/serial-atmel-don-t-enable-irqs-prematurely.patch b/queue-5.15/serial-atmel-don-t-enable-irqs-prematurely.patch
new file mode 100644 (file)
index 0000000..ef5da09
--- /dev/null
@@ -0,0 +1,45 @@
+From 27a826837ec9a3e94cc44bd9328b8289b0fcecd7 Mon Sep 17 00:00:00 2001
+From: Dan Carpenter <dan.carpenter@linaro.org>
+Date: Mon, 19 Jun 2023 12:45:17 +0300
+Subject: serial: atmel: don't enable IRQs prematurely
+
+From: Dan Carpenter <dan.carpenter@linaro.org>
+
+commit 27a826837ec9a3e94cc44bd9328b8289b0fcecd7 upstream.
+
+The atmel_complete_tx_dma() function disables IRQs at the start
+of the function by calling spin_lock_irqsave(&port->lock, flags);
+There is no need to disable them a second time using the
+spin_lock_irq() function and, in fact, doing so is a bug because
+it will enable IRQs prematurely when we call spin_unlock_irq().
+
+Just use spin_lock/unlock() instead without disabling or enabling
+IRQs.
+
+Fixes: 08f738be88bb ("serial: at91: add tx dma support")
+Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
+Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
+Acked-by: Richard Genoud <richard.genoud@gmail.com>
+Link: https://lore.kernel.org/r/cb7c39a9-c004-4673-92e1-be4e34b85368@moroto.mountain
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/atmel_serial.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/tty/serial/atmel_serial.c
++++ b/drivers/tty/serial/atmel_serial.c
+@@ -873,11 +873,11 @@ static void atmel_complete_tx_dma(void *
+       port->icount.tx += atmel_port->tx_len;
+-      spin_lock_irq(&atmel_port->lock_tx);
++      spin_lock(&atmel_port->lock_tx);
+       async_tx_ack(atmel_port->desc_tx);
+       atmel_port->cookie_tx = -EINVAL;
+       atmel_port->desc_tx = NULL;
+-      spin_unlock_irq(&atmel_port->lock_tx);
++      spin_unlock(&atmel_port->lock_tx);
+       if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
+               uart_write_wakeup(port);
index fa936521ca0708f8fc1df11eb481fb52b8a56b45..04bd2ef0874825b698a15e14b70b9cc072e42ab4 100644 (file)
@@ -486,3 +486,14 @@ dm-init-add-dm-mod.waitfor-to-wait-for-asynchronously-probed-block-devices.patch
 fs-dlm-return-positive-pid-value-for-f_getlk.patch
 drm-atomic-allow-vblank-enabled-self-refresh-disable.patch
 drm-rockchip-vop-leave-vblank-enabled-in-self-refresh.patch
+drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch
+drm-amd-display-correct-dmub_fw_version-macro.patch
+drm-amd-display-add-monitor-specific-edid-quirk.patch
+drm-amdgpu-avoid-restore-process-run-into-dead-loop.patch
+drm-ttm-don-t-leak-a-resource-on-swapout-move-error.patch
+drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch
+serial-atmel-don-t-enable-irqs-prematurely.patch
+tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-in-case-of-error.patch
+tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-when-iterating-clk.patch
+tty-serial-imx-fix-rs485-rx-after-tx.patch
+firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch
diff --git a/queue-5.15/tty-serial-imx-fix-rs485-rx-after-tx.patch b/queue-5.15/tty-serial-imx-fix-rs485-rx-after-tx.patch
new file mode 100644 (file)
index 0000000..654d594
--- /dev/null
@@ -0,0 +1,89 @@
+From 639949a7031e04c59ec91614eceb9543e9120f43 Mon Sep 17 00:00:00 2001
+From: Martin Fuzzey <martin.fuzzey@flowbird.group>
+Date: Fri, 16 Jun 2023 12:47:23 +0200
+Subject: tty: serial: imx: fix rs485 rx after tx
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Martin Fuzzey <martin.fuzzey@flowbird.group>
+
+commit 639949a7031e04c59ec91614eceb9543e9120f43 upstream.
+
+Since commit 79d0224f6bf2 ("tty: serial: imx: Handle RS485 DE signal
+active high") RS485 reception no longer works after a transmission.
+
+The following scenario shows the problem:
+       1) Open a port in RS485 mode
+       2) Receive data from remote (OK)
+       3) Transmit data to remote (OK)
+       4) Receive data from remote (Nothing received)
+
+In RS485 mode, imx_uart_start_tx() calls imx_uart_stop_rx() and, when the
+transmission is complete, imx_uart_stop_tx() calls imx_uart_start_rx().
+
+Since the above commit imx_uart_stop_rx() now sets the loopback bit but
+imx_uart_start_rx() does not clear it causing the hardware to remain in
+loopback mode and not receive external data.
+
+Fix this by moving the existing loopback disable code to a helper function
+and calling it from imx_uart_start_rx() too.
+
+Fixes: 79d0224f6bf2 ("tty: serial: imx: Handle RS485 DE signal active high")
+Cc: stable@vger.kernel.org
+Signed-off-by: Martin Fuzzey <martin.fuzzey@flowbird.group>
+Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
+Link: https://lore.kernel.org/r/20230616104838.2729694-1-martin.fuzzey@flowbird.group
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/imx.c |   18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+--- a/drivers/tty/serial/imx.c
++++ b/drivers/tty/serial/imx.c
+@@ -397,6 +397,16 @@ static void start_hrtimer_ms(struct hrti
+        hrtimer_start(hrt, ms_to_ktime(msec), HRTIMER_MODE_REL);
+ }
++static void imx_uart_disable_loopback_rs485(struct imx_port *sport)
++{
++      unsigned int uts;
++
++      /* See SER_RS485_ENABLED/UTS_LOOP comment in imx_uart_probe() */
++      uts = imx_uart_readl(sport, imx_uart_uts_reg(sport));
++      uts &= ~UTS_LOOP;
++      imx_uart_writel(sport, uts, imx_uart_uts_reg(sport));
++}
++
+ /* called with port.lock taken and irqs off */
+ static void imx_uart_start_rx(struct uart_port *port)
+ {
+@@ -418,6 +428,7 @@ static void imx_uart_start_rx(struct uar
+       /* Write UCR2 first as it includes RXEN */
+       imx_uart_writel(sport, ucr2, UCR2);
+       imx_uart_writel(sport, ucr1, UCR1);
++      imx_uart_disable_loopback_rs485(sport);
+ }
+ /* called with port.lock taken and irqs off */
+@@ -1394,7 +1405,7 @@ static int imx_uart_startup(struct uart_
+       int retval, i;
+       unsigned long flags;
+       int dma_is_inited = 0;
+-      u32 ucr1, ucr2, ucr3, ucr4, uts;
++      u32 ucr1, ucr2, ucr3, ucr4;
+       retval = clk_prepare_enable(sport->clk_per);
+       if (retval)
+@@ -1499,10 +1510,7 @@ static int imx_uart_startup(struct uart_
+               imx_uart_writel(sport, ucr2, UCR2);
+       }
+-      /* See SER_RS485_ENABLED/UTS_LOOP comment in imx_uart_probe() */
+-      uts = imx_uart_readl(sport, imx_uart_uts_reg(sport));
+-      uts &= ~UTS_LOOP;
+-      imx_uart_writel(sport, uts, imx_uart_uts_reg(sport));
++      imx_uart_disable_loopback_rs485(sport);
+       spin_unlock_irqrestore(&sport->port.lock, flags);
diff --git a/queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-in-case-of-error.patch b/queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-in-case-of-error.patch
new file mode 100644 (file)
index 0000000..41a098b
--- /dev/null
@@ -0,0 +1,40 @@
+From a9c09546e903f1068acfa38e1ee18bded7114b37 Mon Sep 17 00:00:00 2001
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Date: Sat, 10 Jun 2023 17:59:25 +0200
+Subject: tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in case of error
+
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+
+commit a9c09546e903f1068acfa38e1ee18bded7114b37 upstream.
+
+If clk_get_rate() fails, the clk that has just been allocated needs to be
+freed.
+
+Cc: <stable@vger.kernel.org> # v3.3+
+Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
+Fixes: 5f5a7a5578c5 ("serial: samsung: switch to clkdev based clock lookup")
+Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
+Message-ID: <e4baf6039368f52e5a5453982ddcb9a330fc689e.1686412569.git.christophe.jaillet@wanadoo.fr>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/samsung_tty.c |    6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+--- a/drivers/tty/serial/samsung_tty.c
++++ b/drivers/tty/serial/samsung_tty.c
+@@ -1478,8 +1478,12 @@ static unsigned int s3c24xx_serial_getcl
+                       continue;
+               rate = clk_get_rate(clk);
+-              if (!rate)
++              if (!rate) {
++                      dev_err(ourport->port.dev,
++                              "Failed to get clock rate for %s.\n", clkname);
++                      clk_put(clk);
+                       continue;
++              }
+               if (ourport->info->has_divslot) {
+                       unsigned long div = rate / req_baud;
diff --git a/queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-when-iterating-clk.patch b/queue-5.15/tty-serial-samsung_tty-fix-a-memory-leak-in-s3c24xx_serial_getclk-when-iterating-clk.patch
new file mode 100644 (file)
index 0000000..1c11215
--- /dev/null
@@ -0,0 +1,48 @@
+From 832e231cff476102e8204a9e7bddfe5c6154a375 Mon Sep 17 00:00:00 2001
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Date: Sat, 10 Jun 2023 17:59:26 +0200
+Subject: tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk
+
+From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+
+commit 832e231cff476102e8204a9e7bddfe5c6154a375 upstream.
+
+When the best clk is searched, we iterate over all possible clk.
+
+If we find a better match, the previous one, if any, needs to be freed.
+If a better match has already been found, we still need to free the new
+one, otherwise it leaks.
+
+Cc: <stable@vger.kernel.org> # v3.3+
+Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+Reviewed-by: Andi Shyti <andi.shyti@kernel.org>
+Fixes: 5f5a7a5578c5 ("serial: samsung: switch to clkdev based clock lookup")
+Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
+Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
+Message-ID: <cf3e0053d2fc7391b2d906a86cd01a5ef15fb9dc.1686412569.git.christophe.jaillet@wanadoo.fr>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/samsung_tty.c |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+--- a/drivers/tty/serial/samsung_tty.c
++++ b/drivers/tty/serial/samsung_tty.c
+@@ -1509,10 +1509,18 @@ static unsigned int s3c24xx_serial_getcl
+                       calc_deviation = -calc_deviation;
+               if (calc_deviation < deviation) {
++                      /*
++                       * If we find a better clk, release the previous one, if
++                       * any.
++                       */
++                      if (!IS_ERR(*best_clk))
++                              clk_put(*best_clk);
+                       *best_clk = clk;
+                       best_quot = quot;
+                       *clk_num = cnt;
+                       deviation = calc_deviation;
++              } else {
++                      clk_put(clk);
+               }
+       }