From: Greg Kroah-Hartman Date: Fri, 21 Jul 2023 07:40:01 +0000 (+0200) Subject: 5.4-stable patches X-Git-Tag: v5.15.121~40 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=868dd0c7c642e84b95120d917fcace57115d9d98;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: drm-amd-display-add-monitor-specific-edid-quirk.patch drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.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 --- diff --git a/queue-5.4/drm-amd-display-add-monitor-specific-edid-quirk.patch b/queue-5.4/drm-amd-display-add-monitor-specific-edid-quirk.patch new file mode 100644 index 00000000000..b86230b508c --- /dev/null +++ b/queue-5.4/drm-amd-display-add-monitor-specific-edid-quirk.patch @@ -0,0 +1,65 @@ +From 613a7956deb3b1ffa2810c6d4c90ee9c3d743dbb Mon Sep 17 00:00:00 2001 +From: Aurabindo Pillai +Date: Mon, 12 Jun 2023 12:44:00 -0400 +Subject: drm/amd/display: Add monitor specific edid quirk + +From: Aurabindo Pillai + +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 +Signed-off-by: Aurabindo Pillai +Tested-by: Daniel Wheeler +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -125,6 +149,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.4/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch b/queue-5.4/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch new file mode 100644 index 00000000000..a86f2855449 --- /dev/null +++ b/queue-5.4/drm-amdgpu-fix-clearing-mappings-for-bos-that-are-always-valid-in-vm.patch @@ -0,0 +1,62 @@ +From ea2c3c08554601b051d91403a241266e1cf490a5 Mon Sep 17 00:00:00 2001 +From: Samuel Pitoiset +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 + +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 +Reviewed-by: Christian König +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -2362,18 +2362,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.4/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch b/queue-5.4/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch new file mode 100644 index 00000000000..bda0d8e3107 --- /dev/null +++ b/queue-5.4/drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch @@ -0,0 +1,41 @@ +From a2848d08742c8e8494675892c02c0d22acbe3cf8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= +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 + +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 +Reported-by: Pelloux-Prayer, Pierre-Eric +Tested-by: Pelloux-Prayer, Pierre-Eric +Acked-by: Alex Deucher +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 +--- + 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 +@@ -784,6 +784,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->flags & TTM_OPT_FLAG_ALLOW_RES_EVICT diff --git a/queue-5.4/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch b/queue-5.4/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch new file mode 100644 index 00000000000..5d75586ebd8 --- /dev/null +++ b/queue-5.4/firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch @@ -0,0 +1,39 @@ +From 1995f15590ca222f91193ed11461862b450abfd6 Mon Sep 17 00:00:00 2001 +From: Christophe JAILLET +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 + +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 +Signed-off-by: Dinh Nguyen +Message-ID: <20230613211521.16366-1-dinguyen@kernel.org> +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -615,7 +615,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.4/serial-atmel-don-t-enable-irqs-prematurely.patch b/queue-5.4/serial-atmel-don-t-enable-irqs-prematurely.patch new file mode 100644 index 00000000000..d99ccd4a63d --- /dev/null +++ b/queue-5.4/serial-atmel-don-t-enable-irqs-prematurely.patch @@ -0,0 +1,45 @@ +From 27a826837ec9a3e94cc44bd9328b8289b0fcecd7 Mon Sep 17 00:00:00 2001 +From: Dan Carpenter +Date: Mon, 19 Jun 2023 12:45:17 +0300 +Subject: serial: atmel: don't enable IRQs prematurely + +From: Dan Carpenter + +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 +Reviewed-by: Jiri Slaby +Acked-by: Richard Genoud +Link: https://lore.kernel.org/r/cb7c39a9-c004-4673-92e1-be4e34b85368@moroto.mountain +Cc: stable +Signed-off-by: Greg Kroah-Hartman +--- + 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 +@@ -884,11 +884,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); diff --git a/queue-5.4/series b/queue-5.4/series index 0e49d42b517..8fad3716886 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -256,3 +256,8 @@ md-raid0-add-discard-support-for-the-original-layout.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-add-monitor-specific-edid-quirk.patch +drm-ttm-never-consider-pinned-bos-for-eviction-swap.patch +serial-atmel-don-t-enable-irqs-prematurely.patch +firmware-stratix10-svc-fix-a-potential-resource-leak-in-svc_create_memory_pool.patch