From: Greg Kroah-Hartman Date: Thu, 12 Dec 2024 12:46:53 +0000 (+0100) Subject: 6.12-stable patches X-Git-Tag: v5.4.287~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c7a8b70cdc5c9724a6120a23fb1cf6c62412363a;p=thirdparty%2Fkernel%2Fstable-queue.git 6.12-stable patches added patches: asoc-intel-avs-fix-return-status-of-avs_pcm_hw_constraints_init.patch drm-amdgpu-rework-resume-handling-for-display-v2.patch net-mlx5-unique-names-for-per-device-caches.patch --- diff --git a/queue-6.12/asoc-intel-avs-fix-return-status-of-avs_pcm_hw_constraints_init.patch b/queue-6.12/asoc-intel-avs-fix-return-status-of-avs_pcm_hw_constraints_init.patch new file mode 100644 index 00000000000..0c8d6c09ce4 --- /dev/null +++ b/queue-6.12/asoc-intel-avs-fix-return-status-of-avs_pcm_hw_constraints_init.patch @@ -0,0 +1,48 @@ +From a0aae96be5ffc5b456ca07bfe1385b721c20e184 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Amadeusz=20S=C5=82awi=C5=84ski?= + +Date: Thu, 10 Oct 2024 13:20:08 +0200 +Subject: ASoC: Intel: avs: Fix return status of avs_pcm_hw_constraints_init() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Amadeusz Sławiński + +commit a0aae96be5ffc5b456ca07bfe1385b721c20e184 upstream. + +Check for return code from avs_pcm_hw_constraints_init() in +avs_dai_fe_startup() only checks if value is different from 0. Currently +function can return positive value, change it to return 0 on success. + +Reviewed-by: Cezary Rojewski +Signed-off-by: Amadeusz Sławiński +I've observed KASAN on our setups and while patch itself is correct +regardless. Problem seems to be caused by recent changes to rates, as +this started happening after recent patchsets and doesn't reproduce with +those reverted +https://lore.kernel.org/linux-sound/20240905-alsa-12-24-128-v1-0-8371948d3921@baylibre.com/ +https://lore.kernel.org/linux-sound/20240911135756.24434-1-tiwai@suse.de/ +I've tested using Mark tree, where they are both applied and for some +reason snd_pcm_hw_constraint_minmax() started returning positive value, +while previously it returned 0. I'm bit worried if it signals some +potential deeper problem regarding constraints with above changes. + +Link: https://patch.msgid.link/20241010112008.545526-1-amadeuszx.slawinski@linux.intel.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/intel/avs/pcm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/intel/avs/pcm.c ++++ b/sound/soc/intel/avs/pcm.c +@@ -509,7 +509,7 @@ static int avs_pcm_hw_constraints_init(s + SNDRV_PCM_HW_PARAM_FORMAT, SNDRV_PCM_HW_PARAM_CHANNELS, + SNDRV_PCM_HW_PARAM_RATE, -1); + +- return ret; ++ return 0; + } + + static int avs_dai_fe_startup(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) diff --git a/queue-6.12/drm-amdgpu-rework-resume-handling-for-display-v2.patch b/queue-6.12/drm-amdgpu-rework-resume-handling-for-display-v2.patch new file mode 100644 index 00000000000..78f6b9574d4 --- /dev/null +++ b/queue-6.12/drm-amdgpu-rework-resume-handling-for-display-v2.patch @@ -0,0 +1,116 @@ +From 73dae652dcac776296890da215ee7dec357a1032 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Mon, 25 Nov 2024 13:59:09 -0500 +Subject: drm/amdgpu: rework resume handling for display (v2) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alex Deucher + +commit 73dae652dcac776296890da215ee7dec357a1032 upstream. + +Split resume into a 3rd step to handle displays when DCC is +enabled on DCN 4.0.1. Move display after the buffer funcs +have been re-enabled so that the GPU will do the move and +properly set the DCC metadata for DCN. + +v2: fix fence irq resume ordering + +Reviewed-by: Christian König +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org # 6.11.x +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 45 +++++++++++++++++++++++++++-- + 1 file changed, 43 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -3666,7 +3666,7 @@ static int amdgpu_device_ip_resume_phase + * + * @adev: amdgpu_device pointer + * +- * First resume function for hardware IPs. The list of all the hardware ++ * Second resume function for hardware IPs. The list of all the hardware + * IPs that make up the asic is walked and the resume callbacks are run for + * all blocks except COMMON, GMC, and IH. resume puts the hardware into a + * functional state after a suspend and updates the software state as +@@ -3684,6 +3684,7 @@ static int amdgpu_device_ip_resume_phase + if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_IH || ++ adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_DCE || + adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_PSP) + continue; + r = adev->ip_blocks[i].version->funcs->resume(adev); +@@ -3699,6 +3700,36 @@ static int amdgpu_device_ip_resume_phase + } + + /** ++ * amdgpu_device_ip_resume_phase3 - run resume for hardware IPs ++ * ++ * @adev: amdgpu_device pointer ++ * ++ * Third resume function for hardware IPs. The list of all the hardware ++ * IPs that make up the asic is walked and the resume callbacks are run for ++ * all DCE. resume puts the hardware into a functional state after a suspend ++ * and updates the software state as necessary. This function is also used ++ * for restoring the GPU after a GPU reset. ++ * ++ * Returns 0 on success, negative error code on failure. ++ */ ++static int amdgpu_device_ip_resume_phase3(struct amdgpu_device *adev) ++{ ++ int i, r; ++ ++ for (i = 0; i < adev->num_ip_blocks; i++) { ++ if (!adev->ip_blocks[i].status.valid || adev->ip_blocks[i].status.hw) ++ continue; ++ if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_DCE) { ++ r = adev->ip_blocks[i].version->funcs->resume(adev); ++ if (r) ++ return r; ++ } ++ } ++ ++ return 0; ++} ++ ++/** + * amdgpu_device_ip_resume - run resume for hardware IPs + * + * @adev: amdgpu_device pointer +@@ -3727,6 +3758,13 @@ static int amdgpu_device_ip_resume(struc + if (adev->mman.buffer_funcs_ring->sched.ready) + amdgpu_ttm_set_buffer_funcs_status(adev, true); + ++ if (r) ++ return r; ++ ++ amdgpu_fence_driver_hw_init(adev); ++ ++ r = amdgpu_device_ip_resume_phase3(adev); ++ + return r; + } + +@@ -4809,7 +4847,6 @@ int amdgpu_device_resume(struct drm_devi + dev_err(adev->dev, "amdgpu_device_ip_resume failed (%d).\n", r); + goto exit; + } +- amdgpu_fence_driver_hw_init(adev); + + if (!adev->in_s0ix) { + r = amdgpu_amdkfd_resume(adev, adev->in_runpm); +@@ -5431,6 +5468,10 @@ int amdgpu_do_asic_reset(struct list_hea + if (tmp_adev->mman.buffer_funcs_ring->sched.ready) + amdgpu_ttm_set_buffer_funcs_status(tmp_adev, true); + ++ r = amdgpu_device_ip_resume_phase3(tmp_adev); ++ if (r) ++ goto out; ++ + if (vram_lost) + amdgpu_device_fill_reset_magic(tmp_adev); + diff --git a/queue-6.12/net-mlx5-unique-names-for-per-device-caches.patch b/queue-6.12/net-mlx5-unique-names-for-per-device-caches.patch new file mode 100644 index 00000000000..3be2cc07aa4 --- /dev/null +++ b/queue-6.12/net-mlx5-unique-names-for-per-device-caches.patch @@ -0,0 +1,49 @@ +From 25872a079bbbe952eb660249cc9f40fa75623e68 Mon Sep 17 00:00:00 2001 +From: Sebastian Ott +Date: Wed, 23 Oct 2024 15:41:46 +0200 +Subject: net/mlx5: unique names for per device caches + +From: Sebastian Ott + +commit 25872a079bbbe952eb660249cc9f40fa75623e68 upstream. + +Add the device name to the per device kmem_cache names to +ensure their uniqueness. This fixes warnings like this: +"kmem_cache of name 'mlx5_fs_fgs' already exists". + +Signed-off-by: Sebastian Ott +Reviewed-by: Breno Leitao +Reviewed-by: Tariq Toukan +Link: https://patch.msgid.link/20241023134146.28448-1-sebott@redhat.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Matt Fleming +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c ++++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +@@ -3698,6 +3698,7 @@ void mlx5_fs_core_free(struct mlx5_core_ + int mlx5_fs_core_alloc(struct mlx5_core_dev *dev) + { + struct mlx5_flow_steering *steering; ++ char name[80]; + int err = 0; + + err = mlx5_init_fc_stats(dev); +@@ -3722,10 +3723,12 @@ int mlx5_fs_core_alloc(struct mlx5_core_ + else + steering->mode = MLX5_FLOW_STEERING_MODE_DMFS; + +- steering->fgs_cache = kmem_cache_create("mlx5_fs_fgs", ++ snprintf(name, sizeof(name), "%s-mlx5_fs_fgs", dev_name(dev->device)); ++ steering->fgs_cache = kmem_cache_create(name, + sizeof(struct mlx5_flow_group), 0, + 0, NULL); +- steering->ftes_cache = kmem_cache_create("mlx5_fs_ftes", sizeof(struct fs_fte), 0, ++ snprintf(name, sizeof(name), "%s-mlx5_fs_ftes", dev_name(dev->device)); ++ steering->ftes_cache = kmem_cache_create(name, sizeof(struct fs_fte), 0, + 0, NULL); + if (!steering->ftes_cache || !steering->fgs_cache) { + err = -ENOMEM; diff --git a/queue-6.12/series b/queue-6.12/series index 37d15f054e0..cff9664e88b 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -456,3 +456,6 @@ jffs2-prevent-rtime-decompress-memory-corruption.patch jffs2-fix-rtime-decompressor.patch media-ipu6-use-the-ipu6-dma-mapping-apis-to-do-mapping.patch ocfs2-revert-ocfs2-fix-the-la-space-leak-when-unmounting-an-ocfs2-volume.patch +net-mlx5-unique-names-for-per-device-caches.patch +asoc-intel-avs-fix-return-status-of-avs_pcm_hw_constraints_init.patch +drm-amdgpu-rework-resume-handling-for-display-v2.patch