From: Greg Kroah-Hartman Date: Tue, 11 Nov 2025 00:33:34 +0000 (+0900) Subject: 6.17-stable patches X-Git-Tag: v6.12.58~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e737f2b52365782d20fab7795093539572a1a0c9;p=thirdparty%2Fkernel%2Fstable-queue.git 6.17-stable patches added patches: acpi-spcr-check-for-table-version-when-using-precise-baudrate.patch alsa-hda-tas2781-enable-init_profile_id-for-device-initialization.patch drm-amd-display-fix-black-screen-with-hdmi-outputs.patch drm-amd-display-fix-vupdate_offload_work-doc.patch drm-amd-display-reject-modes-with-too-high-pixel-clock-on-dce6-10.patch drm-amd-display-use-gfp_nowait-for-allocation-in-interrupt-handler.patch drm-amdgpu-fix-function-header-names-in-amdgpu_connectors.c.patch drm-amdgpu-fix-unintended-error-log-in-vcn5_0_0.patch drm-amdgpu-userq-assign-an-error-code-for-invalid-userq-va.patch drm-msm-dpu-fix-adjusted-mode-clock-check-for-3d-merge.patch extcon-adc-jack-cleanup-wakeup-source-only-if-it-was-enabled.patch kbuild-strip-trailing-padding-bytes-from-modules.builtin.modinfo.patch kunit-extend-kconfig-help-text-for-kunit_uml_pci.patch selftests-drv-net-reload-pkt-pointer-after-calling-filter_udphdr.patch --- diff --git a/queue-6.17/acpi-spcr-check-for-table-version-when-using-precise-baudrate.patch b/queue-6.17/acpi-spcr-check-for-table-version-when-using-precise-baudrate.patch new file mode 100644 index 0000000000..38f95a191b --- /dev/null +++ b/queue-6.17/acpi-spcr-check-for-table-version-when-using-precise-baudrate.patch @@ -0,0 +1,41 @@ +From 543d35004007a06ef247acf2fc55efa8388aa741 Mon Sep 17 00:00:00 2001 +From: Punit Agrawal +Date: Fri, 24 Oct 2025 13:31:25 +0100 +Subject: ACPI: SPCR: Check for table version when using precise baudrate + +From: Punit Agrawal + +commit 543d35004007a06ef247acf2fc55efa8388aa741 upstream. + +Commit 4d330fe54145 ("ACPI: SPCR: Support Precise Baud Rate field") +added support to use the precise baud rate available since SPCR 1.09 +(revision 4) but failed to check the version of the table provided by +the firmware. + +Accessing an older version of SPCR table causes accesses beyond the +end of the table and can lead to garbage data to be used for the baud +rate. + +Check the version of the firmware provided SPCR to ensure that the +precise baudrate is vaild before using it. + +Fixes: 4d330fe54145 ("ACPI: SPCR: Support Precise Baud Rate field") +Signed-off-by: Punit Agrawal +Link: https://patch.msgid.link/20251024123125.1081612-1-punit.agrawal@oss.qualcomm.com +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + drivers/acpi/spcr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/acpi/spcr.c ++++ b/drivers/acpi/spcr.c +@@ -152,7 +152,7 @@ int __init acpi_parse_spcr(bool enable_e + * Baud Rate field. If this field is zero or not present, Configured + * Baud Rate is used. + */ +- if (table->precise_baudrate) ++ if (table->header.revision >= 4 && table->precise_baudrate) + baud_rate = table->precise_baudrate; + else switch (table->baud_rate) { + case 0: diff --git a/queue-6.17/alsa-hda-tas2781-enable-init_profile_id-for-device-initialization.patch b/queue-6.17/alsa-hda-tas2781-enable-init_profile_id-for-device-initialization.patch new file mode 100644 index 0000000000..e73eab6969 --- /dev/null +++ b/queue-6.17/alsa-hda-tas2781-enable-init_profile_id-for-device-initialization.patch @@ -0,0 +1,50 @@ +From 7ddb711b6e0d33e0a673b49f69dff0d950ed60b9 Mon Sep 17 00:00:00 2001 +From: Shenghao Ding +Date: Tue, 7 Oct 2025 18:37:08 +0800 +Subject: ALSA: hda/tas2781: Enable init_profile_id for device initialization + +From: Shenghao Ding + +commit 7ddb711b6e0d33e0a673b49f69dff0d950ed60b9 upstream. + +Optimize the time consumption of profile switching, init_profile saves +the common settings of different profiles, such as the dsp coefficients, +etc, which can greatly reduce the profile switching time comsumption and +remove the repetitive settings. + +Fixes: e83dcd139e77 ("ASoC: tas2781: Add keyword "init" in profile section") +Signed-off-by: Shenghao Ding +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/hda/codecs/side-codecs/tas2781_hda_i2c.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +--- a/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c ++++ b/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c +@@ -472,6 +472,12 @@ static void tasdevice_dspfw_init(void *c + if (tas_priv->fmw->nr_configurations > 0) + tas_priv->cur_conf = 0; + ++ /* Init common setting for different audio profiles */ ++ if (tas_priv->rcabin.init_profile_id >= 0) ++ tasdevice_select_cfg_blk(tas_priv, ++ tas_priv->rcabin.init_profile_id, ++ TASDEVICE_BIN_BLK_PRE_POWER_UP); ++ + /* If calibrated data occurs error, dsp will still works with default + * calibrated data inside algo. + */ +@@ -760,6 +766,12 @@ static int tas2781_system_resume(struct + tasdevice_reset(tas_hda->priv); + tasdevice_prmg_load(tas_hda->priv, tas_hda->priv->cur_prog); + ++ /* Init common setting for different audio profiles */ ++ if (tas_hda->priv->rcabin.init_profile_id >= 0) ++ tasdevice_select_cfg_blk(tas_hda->priv, ++ tas_hda->priv->rcabin.init_profile_id, ++ TASDEVICE_BIN_BLK_PRE_POWER_UP); ++ + if (tas_hda->priv->playback_started) + tasdevice_tuning_switch(tas_hda->priv, 0); + diff --git a/queue-6.17/drm-amd-display-fix-black-screen-with-hdmi-outputs.patch b/queue-6.17/drm-amd-display-fix-black-screen-with-hdmi-outputs.patch new file mode 100644 index 0000000000..a93f90dd31 --- /dev/null +++ b/queue-6.17/drm-amd-display-fix-black-screen-with-hdmi-outputs.patch @@ -0,0 +1,44 @@ +From fdc93beeadc2439e5e85d056a8fe681dcced09da Mon Sep 17 00:00:00 2001 +From: Alex Hung +Date: Wed, 22 Oct 2025 16:19:34 -0600 +Subject: drm/amd/display: Fix black screen with HDMI outputs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Alex Hung + +commit fdc93beeadc2439e5e85d056a8fe681dcced09da upstream. + +[Why & How] +This fixes the black screen issue on certain APUs with HDMI, +accompanied by the following messages: + +amdgpu 0000:c4:00.0: amdgpu: [drm] Failed to setup vendor info + frame on connector DP-1: -22 +amdgpu 0000:c4:00.0: [drm] Cannot find any crtc or sizes [drm] + Cannot find any crtc or sizes + +Fixes: 489f0f600ce2 ("drm/amd/display: Fix DVI-D/HDMI adapters") +Suggested-by: Timur Kristóf +Reviewed-by: Harry Wentland +Signed-off-by: Alex Hung +Signed-off-by: Ray Wu +Tested-by: Daniel Wheeler +Signed-off-by: Alex Deucher +(cherry picked from commit 678c901443a6d2e909e3b51331a20f9d8f84ce82) +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/dc/link/link_detection.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/amd/display/dc/link/link_detection.c ++++ b/drivers/gpu/drm/amd/display/dc/link/link_detection.c +@@ -1141,6 +1141,7 @@ static bool detect_link_and_local_sink(s + !sink->edid_caps.edid_hdmi) + sink->sink_signal = SIGNAL_TYPE_DVI_SINGLE_LINK; + else if (dc_is_dvi_signal(sink->sink_signal) && ++ dc_is_dvi_signal(link->connector_signal) && + aud_support->hdmi_audio_native && + sink->edid_caps.edid_hdmi) + sink->sink_signal = SIGNAL_TYPE_HDMI_TYPE_A; diff --git a/queue-6.17/drm-amd-display-fix-vupdate_offload_work-doc.patch b/queue-6.17/drm-amd-display-fix-vupdate_offload_work-doc.patch new file mode 100644 index 0000000000..e0063d5ad8 --- /dev/null +++ b/queue-6.17/drm-amd-display-fix-vupdate_offload_work-doc.patch @@ -0,0 +1,34 @@ +From e9c840d4505d5049da1873acf93744d384b12a0b Mon Sep 17 00:00:00 2001 +From: Aurabindo Pillai +Date: Tue, 5 Aug 2025 10:02:07 -0400 +Subject: drm/amd/display: Fix vupdate_offload_work doc + +From: Aurabindo Pillai + +commit e9c840d4505d5049da1873acf93744d384b12a0b upstream. + +Fix the following warning in struct documentation: + +drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:168: warning: expecting prototype for struct dm_vupdate_work. Prototype was for struct vupdate_offload_work instead + +Fixes: c210b757b400 ("drm/amd/display: fix dmub access race condition") +Reported-by: Stephen Rothwell +Signed-off-by: Aurabindo Pillai +Reviewed-by: Alex Deucher +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +@@ -153,7 +153,7 @@ struct idle_workqueue { + }; + + /** +- * struct dm_vupdate_work - Work data for periodic action in idle ++ * struct vupdate_offload_work - Work data for offloading task from vupdate handler + * @work: Kernel work data for the work event + * @adev: amdgpu_device back pointer + * @stream: DC stream associated with the crtc diff --git a/queue-6.17/drm-amd-display-reject-modes-with-too-high-pixel-clock-on-dce6-10.patch b/queue-6.17/drm-amd-display-reject-modes-with-too-high-pixel-clock-on-dce6-10.patch new file mode 100644 index 0000000000..905965465d --- /dev/null +++ b/queue-6.17/drm-amd-display-reject-modes-with-too-high-pixel-clock-on-dce6-10.patch @@ -0,0 +1,157 @@ +From 118800b0797a046adaa2a8e9dee9b971b78802a7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timur=20Krist=C3=B3f?= +Date: Wed, 24 Sep 2025 13:38:34 +0200 +Subject: drm/amd/display: Reject modes with too high pixel clock on DCE6-10 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Timur Kristóf + +commit 118800b0797a046adaa2a8e9dee9b971b78802a7 upstream. + +Reject modes with a pixel clock higher than the maximum display +clock. Use 400 MHz as a fallback value when the maximum display +clock is not known. Pixel clocks that are higher than the display +clock just won't work and are not supported. + +With the addition of the YUV422 fallback, DC can now accidentally +select a mode requiring higher pixel clock than actually supported +when the DP version supports the required bandwidth but the clock +is otherwise too high for the display engine. DCE 6-10 don't +support these modes but they don't have a bandwidth calculation +to reject them properly. + +Fixes: db291ed1732e ("drm/amd/display: Add fallback path for YCBCR422") +Reviewed-by: Alex Deucher +Signed-off-by: Timur Kristóf +Signed-off-by: Mario Limonciello +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c | 3 +++ + drivers/gpu/drm/amd/display/dc/clk_mgr/dce60/dce60_clk_mgr.c | 5 +++++ + drivers/gpu/drm/amd/display/dc/resource/dce100/dce100_resource.c | 10 +++++++++- + drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c | 10 +++++++++- + drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c | 10 +++++++++- + 5 files changed, 35 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c ++++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce100/dce_clk_mgr.c +@@ -463,6 +463,9 @@ void dce_clk_mgr_construct( + clk_mgr->max_clks_state = DM_PP_CLOCKS_STATE_NOMINAL; + clk_mgr->cur_min_clks_state = DM_PP_CLOCKS_STATE_INVALID; + ++ base->clks.max_supported_dispclk_khz = ++ clk_mgr->max_clks_by_state[DM_PP_CLOCKS_STATE_PERFORMANCE].display_clk_khz; ++ + dce_clock_read_integrated_info(clk_mgr); + dce_clock_read_ss_info(clk_mgr); + } +--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dce60/dce60_clk_mgr.c ++++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dce60/dce60_clk_mgr.c +@@ -147,6 +147,8 @@ void dce60_clk_mgr_construct( + struct dc_context *ctx, + struct clk_mgr_internal *clk_mgr) + { ++ struct clk_mgr *base = &clk_mgr->base; ++ + dce_clk_mgr_construct(ctx, clk_mgr); + + memcpy(clk_mgr->max_clks_by_state, +@@ -157,5 +159,8 @@ void dce60_clk_mgr_construct( + clk_mgr->clk_mgr_shift = &disp_clk_shift; + clk_mgr->clk_mgr_mask = &disp_clk_mask; + clk_mgr->base.funcs = &dce60_funcs; ++ ++ base->clks.max_supported_dispclk_khz = ++ clk_mgr->max_clks_by_state[DM_PP_CLOCKS_STATE_PERFORMANCE].display_clk_khz; + } + +--- a/drivers/gpu/drm/amd/display/dc/resource/dce100/dce100_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/resource/dce100/dce100_resource.c +@@ -29,6 +29,7 @@ + #include "stream_encoder.h" + + #include "resource.h" ++#include "clk_mgr.h" + #include "include/irq_service_interface.h" + #include "virtual/virtual_stream_encoder.h" + #include "dce110/dce110_resource.h" +@@ -843,10 +844,17 @@ static enum dc_status dce100_validate_ba + { + int i; + bool at_least_one_pipe = false; ++ struct dc_stream_state *stream = NULL; ++ const uint32_t max_pix_clk_khz = max(dc->clk_mgr->clks.max_supported_dispclk_khz, 400000); + + for (i = 0; i < dc->res_pool->pipe_count; i++) { +- if (context->res_ctx.pipe_ctx[i].stream) ++ stream = context->res_ctx.pipe_ctx[i].stream; ++ if (stream) { + at_least_one_pipe = true; ++ ++ if (stream->timing.pix_clk_100hz >= max_pix_clk_khz * 10) ++ return DC_FAIL_BANDWIDTH_VALIDATE; ++ } + } + + if (at_least_one_pipe) { +--- a/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c +@@ -34,6 +34,7 @@ + #include "stream_encoder.h" + + #include "resource.h" ++#include "clk_mgr.h" + #include "include/irq_service_interface.h" + #include "irq/dce60/irq_service_dce60.h" + #include "dce110/dce110_timing_generator.h" +@@ -870,10 +871,17 @@ static enum dc_status dce60_validate_ban + { + int i; + bool at_least_one_pipe = false; ++ struct dc_stream_state *stream = NULL; ++ const uint32_t max_pix_clk_khz = max(dc->clk_mgr->clks.max_supported_dispclk_khz, 400000); + + for (i = 0; i < dc->res_pool->pipe_count; i++) { +- if (context->res_ctx.pipe_ctx[i].stream) ++ stream = context->res_ctx.pipe_ctx[i].stream; ++ if (stream) { + at_least_one_pipe = true; ++ ++ if (stream->timing.pix_clk_100hz >= max_pix_clk_khz * 10) ++ return DC_FAIL_BANDWIDTH_VALIDATE; ++ } + } + + if (at_least_one_pipe) { +--- a/drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c ++++ b/drivers/gpu/drm/amd/display/dc/resource/dce80/dce80_resource.c +@@ -32,6 +32,7 @@ + #include "stream_encoder.h" + + #include "resource.h" ++#include "clk_mgr.h" + #include "include/irq_service_interface.h" + #include "irq/dce80/irq_service_dce80.h" + #include "dce110/dce110_timing_generator.h" +@@ -876,10 +877,17 @@ static enum dc_status dce80_validate_ban + { + int i; + bool at_least_one_pipe = false; ++ struct dc_stream_state *stream = NULL; ++ const uint32_t max_pix_clk_khz = max(dc->clk_mgr->clks.max_supported_dispclk_khz, 400000); + + for (i = 0; i < dc->res_pool->pipe_count; i++) { +- if (context->res_ctx.pipe_ctx[i].stream) ++ stream = context->res_ctx.pipe_ctx[i].stream; ++ if (stream) { + at_least_one_pipe = true; ++ ++ if (stream->timing.pix_clk_100hz >= max_pix_clk_khz * 10) ++ return DC_FAIL_BANDWIDTH_VALIDATE; ++ } + } + + if (at_least_one_pipe) { diff --git a/queue-6.17/drm-amd-display-use-gfp_nowait-for-allocation-in-interrupt-handler.patch b/queue-6.17/drm-amd-display-use-gfp_nowait-for-allocation-in-interrupt-handler.patch new file mode 100644 index 0000000000..188283a327 --- /dev/null +++ b/queue-6.17/drm-amd-display-use-gfp_nowait-for-allocation-in-interrupt-handler.patch @@ -0,0 +1,44 @@ +From 72a1eb3cf573ab957ae412f0efb0cf6ff0876234 Mon Sep 17 00:00:00 2001 +From: Aurabindo Pillai +Date: Thu, 25 Sep 2025 10:23:59 -0400 +Subject: drm/amd/display: use GFP_NOWAIT for allocation in interrupt handler + +From: Aurabindo Pillai + +commit 72a1eb3cf573ab957ae412f0efb0cf6ff0876234 upstream. + +schedule_dc_vmin_vmax() is called by dm_crtc_high_irq(). Hence, we +cannot have the former sleep. Use GFP_NOWAIT for allocation in this +function. + +Fixes: c210b757b400 ("drm/amd/display: fix dmub access race condition") +Cc: Mario Limonciello +Cc: Alex Deucher +Reviewed-by: Sun peng (Leo) Li +Signed-off-by: Aurabindo Pillai +Signed-off-by: Alex Deucher +(cherry picked from commit c04812cbe2f247a1c1e53a9b6c5e659963fe4065) +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -561,13 +561,13 @@ static void schedule_dc_vmin_vmax(struct + struct dc_stream_state *stream, + struct dc_crtc_timing_adjust *adjust) + { +- struct vupdate_offload_work *offload_work = kzalloc(sizeof(*offload_work), GFP_KERNEL); ++ struct vupdate_offload_work *offload_work = kzalloc(sizeof(*offload_work), GFP_NOWAIT); + if (!offload_work) { + drm_dbg_driver(adev_to_drm(adev), "Failed to allocate vupdate_offload_work\n"); + return; + } + +- struct dc_crtc_timing_adjust *adjust_copy = kzalloc(sizeof(*adjust_copy), GFP_KERNEL); ++ struct dc_crtc_timing_adjust *adjust_copy = kzalloc(sizeof(*adjust_copy), GFP_NOWAIT); + if (!adjust_copy) { + drm_dbg_driver(adev_to_drm(adev), "Failed to allocate adjust_copy\n"); + kfree(offload_work); diff --git a/queue-6.17/drm-amdgpu-fix-function-header-names-in-amdgpu_connectors.c.patch b/queue-6.17/drm-amdgpu-fix-function-header-names-in-amdgpu_connectors.c.patch new file mode 100644 index 0000000000..f1ea701bba --- /dev/null +++ b/queue-6.17/drm-amdgpu-fix-function-header-names-in-amdgpu_connectors.c.patch @@ -0,0 +1,64 @@ +From 38ab33dbea594700c8d6cc81eec0a54e95d3eb2f Mon Sep 17 00:00:00 2001 +From: Srinivasan Shanmugam +Date: Sun, 31 Aug 2025 15:29:56 +0530 +Subject: drm/amdgpu: Fix function header names in amdgpu_connectors.c +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Srinivasan Shanmugam + +commit 38ab33dbea594700c8d6cc81eec0a54e95d3eb2f upstream. + +Align the function headers for `amdgpu_max_hdmi_pixel_clock` and +`amdgpu_connector_dvi_mode_valid` with the function implementations so +they match the expected kdoc style. + +Fixes the below: +drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c:1199: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst + * Returns the maximum supported HDMI (TMDS) pixel clock in KHz. +drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c:1212: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst + * Validates the given display mode on DVI and HDMI connectors. + +Fixes: 585b2f685c56 ("drm/amdgpu: Respect max pixel clock for HDMI and DVI-D (v2)") +Cc: Christian König +Cc: Alex Deucher +Signed-off-by: Srinivasan Shanmugam +Reviewed-by: Alex Deucher +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +@@ -1196,7 +1196,10 @@ static void amdgpu_connector_dvi_force(s + } + + /** +- * Returns the maximum supported HDMI (TMDS) pixel clock in KHz. ++ * amdgpu_max_hdmi_pixel_clock - Return max supported HDMI (TMDS) pixel clock ++ * @adev: pointer to amdgpu_device ++ * ++ * Return: maximum supported HDMI (TMDS) pixel clock in KHz. + */ + static int amdgpu_max_hdmi_pixel_clock(const struct amdgpu_device *adev) + { +@@ -1209,8 +1212,14 @@ static int amdgpu_max_hdmi_pixel_clock(c + } + + /** +- * Validates the given display mode on DVI and HDMI connectors, +- * including analog signals on DVI-I. ++ * amdgpu_connector_dvi_mode_valid - Validate a mode on DVI/HDMI connectors ++ * @connector: DRM connector to validate the mode on ++ * @mode: display mode to validate ++ * ++ * Validate the given display mode on DVI and HDMI connectors, including ++ * analog signals on DVI-I. ++ * ++ * Return: drm_mode_status indicating whether the mode is valid. + */ + static enum drm_mode_status amdgpu_connector_dvi_mode_valid(struct drm_connector *connector, + const struct drm_display_mode *mode) diff --git a/queue-6.17/drm-amdgpu-fix-unintended-error-log-in-vcn5_0_0.patch b/queue-6.17/drm-amdgpu-fix-unintended-error-log-in-vcn5_0_0.patch new file mode 100644 index 0000000000..27118ea499 --- /dev/null +++ b/queue-6.17/drm-amdgpu-fix-unintended-error-log-in-vcn5_0_0.patch @@ -0,0 +1,35 @@ +From 46b0e6b9d749cfa891e6969d6565be1131c53aa2 Mon Sep 17 00:00:00 2001 +From: Sathishkumar S +Date: Mon, 28 Jul 2025 18:27:06 +0530 +Subject: drm/amdgpu: Fix unintended error log in VCN5_0_0 + +From: Sathishkumar S + +commit 46b0e6b9d749cfa891e6969d6565be1131c53aa2 upstream. + +The error log is supposed to be gaurded under if failure condition. + +Fixes: faab5ea08367 ("drm/amdgpu: Check vcn sram load return value") +Signed-off-by: Sathishkumar S +Reviewed-by: Leo Liu +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c +@@ -769,9 +769,10 @@ static int vcn_v5_0_0_start_dpg_mode(str + + if (indirect) { + ret = amdgpu_vcn_psp_update_sram(adev, inst_idx, 0); +- dev_err(adev->dev, "%s: vcn sram load failed %d\n", __func__, ret); +- if (ret) ++ if (ret) { ++ dev_err(adev->dev, "%s: vcn sram load failed %d\n", __func__, ret); + return ret; ++ } + } + + ring = &adev->vcn.inst[inst_idx].ring_enc[0]; diff --git a/queue-6.17/drm-amdgpu-userq-assign-an-error-code-for-invalid-userq-va.patch b/queue-6.17/drm-amdgpu-userq-assign-an-error-code-for-invalid-userq-va.patch new file mode 100644 index 0000000000..2fc5a9f19d --- /dev/null +++ b/queue-6.17/drm-amdgpu-userq-assign-an-error-code-for-invalid-userq-va.patch @@ -0,0 +1,38 @@ +From 883bd89d00085c2c5f1efcd25861745cb039f9e3 Mon Sep 17 00:00:00 2001 +From: Prike Liang +Date: Fri, 19 Sep 2025 14:31:50 +0800 +Subject: drm/amdgpu/userq: assign an error code for invalid userq va + +From: Prike Liang + +commit 883bd89d00085c2c5f1efcd25861745cb039f9e3 upstream. + +It should return an error code if userq VA validation fails. + +Fixes: 9e46b8bb0539 ("drm/amdgpu: validate userq buffer virtual address and size") +Signed-off-by: Prike Liang +Reviewed-by: Alex Deucher +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c +@@ -71,6 +71,7 @@ int amdgpu_userq_input_va_validate(struc + return 0; + } + ++ r = -EINVAL; + out_err: + amdgpu_bo_unreserve(vm->root.bo); + return r; +@@ -476,6 +477,7 @@ amdgpu_userq_create(struct drm_file *fil + if (amdgpu_userq_input_va_validate(&fpriv->vm, args->in.queue_va, args->in.queue_size) || + amdgpu_userq_input_va_validate(&fpriv->vm, args->in.rptr_va, AMDGPU_GPU_PAGE_SIZE) || + amdgpu_userq_input_va_validate(&fpriv->vm, args->in.wptr_va, AMDGPU_GPU_PAGE_SIZE)) { ++ r = -EINVAL; + kfree(queue); + goto unlock; + } diff --git a/queue-6.17/drm-msm-dpu-fix-adjusted-mode-clock-check-for-3d-merge.patch b/queue-6.17/drm-msm-dpu-fix-adjusted-mode-clock-check-for-3d-merge.patch new file mode 100644 index 0000000000..edf5123335 --- /dev/null +++ b/queue-6.17/drm-msm-dpu-fix-adjusted-mode-clock-check-for-3d-merge.patch @@ -0,0 +1,40 @@ +From f5d079564c44baaeedf5e25f4b943aa042ea0eb1 Mon Sep 17 00:00:00 2001 +From: Jessica Zhang +Date: Tue, 23 Sep 2025 16:03:50 -0700 +Subject: drm/msm/dpu: Fix adjusted mode clock check for 3d merge + +From: Jessica Zhang + +commit f5d079564c44baaeedf5e25f4b943aa042ea0eb1 upstream. + +Since 3D merge allows for larger modes to be supported across 2 layer +mixers, filter modes based on adjusted mode clock / 2 when 3d merge is +supported. + +Reported-by: Abel Vesa +Fixes: 62b7d6835288 ("drm/msm/dpu: Filter modes based on adjusted mode clock") +Signed-off-by: Jessica Zhang +Reviewed-by: Dmitry Baryshkov +Reviewed-by: Abel Vesa +Tested-by: Abel Vesa +Tested-by: Krzysztof Kozlowski +Patchwork: https://patchwork.freedesktop.org/patch/676353/ +Link: https://lore.kernel.org/r/20250923-modeclk-fix-v2-1-01fcd0b2465a@oss.qualcomm.com +Signed-off-by: Dmitry Baryshkov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c ++++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +@@ -1546,6 +1546,9 @@ static enum drm_mode_status dpu_crtc_mod + adjusted_mode_clk = dpu_core_perf_adjusted_mode_clk(mode->clock, + dpu_kms->perf.perf_cfg); + ++ if (dpu_kms->catalog->caps->has_3d_merge) ++ adjusted_mode_clk /= 2; ++ + /* + * The given mode, adjusted for the perf clock factor, should not exceed + * the max core clock rate diff --git a/queue-6.17/extcon-adc-jack-cleanup-wakeup-source-only-if-it-was-enabled.patch b/queue-6.17/extcon-adc-jack-cleanup-wakeup-source-only-if-it-was-enabled.patch new file mode 100644 index 0000000000..79f699265d --- /dev/null +++ b/queue-6.17/extcon-adc-jack-cleanup-wakeup-source-only-if-it-was-enabled.patch @@ -0,0 +1,36 @@ +From 92bac7d4de9c07933f6b76d8f1c7f8240f911f4f Mon Sep 17 00:00:00 2001 +From: Krzysztof Kozlowski +Date: Fri, 9 May 2025 09:17:04 +0200 +Subject: extcon: adc-jack: Cleanup wakeup source only if it was enabled + +From: Krzysztof Kozlowski + +commit 92bac7d4de9c07933f6b76d8f1c7f8240f911f4f upstream. + +Driver in the probe enables wakeup source conditionally, so the cleanup +path should do the same - do not release the wakeup source memory if it +was not allocated. + +Link: https://lore.kernel.org/lkml/20250509071703.39442-2-krzysztof.kozlowski@linaro.org/ +Reported-by: Christophe JAILLET +Closes: https://lore.kernel.org/r/22aaebb7-553b-4571-8a43-58a523241082@wanadoo.fr/ +Fixes: 78b6a991eb6c ("extcon: adc-jack: Fix wakeup source leaks on device unbind") +Signed-off-by: Krzysztof Kozlowski +Signed-off-by: Chanwoo Choi +Signed-off-by: Greg Kroah-Hartman +--- + drivers/extcon/extcon-adc-jack.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/extcon/extcon-adc-jack.c ++++ b/drivers/extcon/extcon-adc-jack.c +@@ -164,7 +164,8 @@ static void adc_jack_remove(struct platf + { + struct adc_jack_data *data = platform_get_drvdata(pdev); + +- device_init_wakeup(&pdev->dev, false); ++ if (data->wakeup_source) ++ device_init_wakeup(&pdev->dev, false); + free_irq(data->irq, data); + cancel_work_sync(&data->handler.work); + } diff --git a/queue-6.17/kbuild-strip-trailing-padding-bytes-from-modules.builtin.modinfo.patch b/queue-6.17/kbuild-strip-trailing-padding-bytes-from-modules.builtin.modinfo.patch new file mode 100644 index 0000000000..31b4869894 --- /dev/null +++ b/queue-6.17/kbuild-strip-trailing-padding-bytes-from-modules.builtin.modinfo.patch @@ -0,0 +1,73 @@ +From a26a6c93edfeee82cb73f55e87d995eea59ddfe8 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Wed, 5 Nov 2025 15:30:27 -0700 +Subject: kbuild: Strip trailing padding bytes from modules.builtin.modinfo + +From: Nathan Chancellor + +commit a26a6c93edfeee82cb73f55e87d995eea59ddfe8 upstream. + +After commit d50f21091358 ("kbuild: align modinfo section for Secureboot +Authenticode EDK2 compat"), running modules_install with certain +versions of kmod (such as 29.1 in Ubuntu Jammy) in certain +configurations may fail with: + + depmod: ERROR: kmod_builtin_iter_next: unexpected string without modname prefix + +The additional padding bytes to ensure .modinfo is aligned within +vmlinux.unstripped are unexpected by kmod, as this section has always +just been null-terminated strings. + +Strip the trailing padding bytes from modules.builtin.modinfo after it +has been extracted from vmlinux.unstripped to restore the format that +kmod expects while keeping .modinfo aligned within vmlinux.unstripped to +avoid regressing the Authenticode calculation fix for EDK2. + +Cc: stable@vger.kernel.org +Fixes: d50f21091358 ("kbuild: align modinfo section for Secureboot Authenticode EDK2 compat") +Reported-by: Omar Sandoval +Reported-by: Samir M +Reported-by: Venkat Rao Bagalkote +Closes: https://lore.kernel.org/7fef7507-ad64-4e51-9bb8-c9fb6532e51e@linux.ibm.com/ +Tested-by: Omar Sandoval +Tested-by: Samir M +Tested-by: Venkat Rao Bagalkote +Reviewed-by: Nicolas Schier +Link: https://patch.msgid.link/20251105-kbuild-fix-builtin-modinfo-for-kmod-v1-1-b419d8ad4606@kernel.org +Signed-off-by: Nathan Chancellor +[nathan: Apply to scripts/Makefile.vmlinux_o, location of + modules.builtin.modinfo rule prior to 39cfd5b12160] +Signed-off-by: Nathan Chancellor +Signed-off-by: Greg Kroah-Hartman +--- + scripts/Makefile.vmlinux_o | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +--- a/scripts/Makefile.vmlinux_o ++++ b/scripts/Makefile.vmlinux_o +@@ -76,11 +76,24 @@ targets += vmlinux.o + # modules.builtin.modinfo + # --------------------------------------------------------------------------- + ++# .modinfo in vmlinux.unstripped is aligned to 8 bytes for compatibility with ++# tools that expect vmlinux to have sufficiently aligned sections but the ++# additional bytes used for padding .modinfo to satisfy this requirement break ++# certain versions of kmod with ++# ++# depmod: ERROR: kmod_builtin_iter_next: unexpected string without modname prefix ++# ++# Strip the trailing padding bytes after extracting .modinfo to comply with ++# what kmod expects to parse. ++quiet_cmd_modules_builtin_modinfo = GEN $@ ++ cmd_modules_builtin_modinfo = $(cmd_objcopy); \ ++ sed -i 's/\x00\+$$/\x00/g' $@ ++ + OBJCOPYFLAGS_modules.builtin.modinfo := -j .modinfo -O binary + + targets += modules.builtin.modinfo + modules.builtin.modinfo: vmlinux.o FORCE +- $(call if_changed,objcopy) ++ $(call if_changed,modules_builtin_modinfo) + + # modules.builtin + # --------------------------------------------------------------------------- diff --git a/queue-6.17/kunit-extend-kconfig-help-text-for-kunit_uml_pci.patch b/queue-6.17/kunit-extend-kconfig-help-text-for-kunit_uml_pci.patch new file mode 100644 index 0000000000..03004b8f7f --- /dev/null +++ b/queue-6.17/kunit-extend-kconfig-help-text-for-kunit_uml_pci.patch @@ -0,0 +1,45 @@ +From 285cae57a51664cc94e85de0ff994f9965b3aca8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= +Date: Tue, 16 Sep 2025 08:15:46 +0200 +Subject: kunit: Extend kconfig help text for KUNIT_UML_PCI +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Thomas Weißschuh + +commit 285cae57a51664cc94e85de0ff994f9965b3aca8 upstream. + +Checkpatch.pl expects at least 4 lines of help text. + +Extend the help text to make checkpatch.pl happy. + +Link: https://lore.kernel.org/r/20250916-kunit-pci-kconfig-v1-1-6d1369f06f2a@linutronix.de +Fixes: 031cdd3bc3f3 ("kunit: Enable PCI on UML without triggering WARN()") +Suggested-by: Shuah Khan +Link: https://lore.kernel.org/lkml/3dc95227-2be9-48a0-bdea-3f283d9b2a38@linuxfoundation.org/ +Signed-off-by: Thomas Weißschuh +Reviewed-by: David Gow +Signed-off-by: Shuah Khan +Signed-off-by: Greg Kroah-Hartman +--- + lib/kunit/Kconfig | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/lib/kunit/Kconfig b/lib/kunit/Kconfig +index 1823539e96da..7a6af361d2fc 100644 +--- a/lib/kunit/Kconfig ++++ b/lib/kunit/Kconfig +@@ -112,5 +112,9 @@ config KUNIT_UML_PCI + select UML_PCI + help + Enables the PCI subsystem on UML for use by KUnit tests. ++ Some KUnit tests require the PCI core which is not enabled by ++ default on UML. ++ ++ If unsure, say N. + + endif # KUNIT +-- +2.51.2 + diff --git a/queue-6.17/selftests-drv-net-reload-pkt-pointer-after-calling-filter_udphdr.patch b/queue-6.17/selftests-drv-net-reload-pkt-pointer-after-calling-filter_udphdr.patch new file mode 100644 index 0000000000..1fd37124da --- /dev/null +++ b/queue-6.17/selftests-drv-net-reload-pkt-pointer-after-calling-filter_udphdr.patch @@ -0,0 +1,71 @@ +From 11ae737efea10a8cc1c48b6288bde93180946b8c Mon Sep 17 00:00:00 2001 +From: Amery Hung +Date: Thu, 25 Sep 2025 09:14:52 -0700 +Subject: selftests: drv-net: Reload pkt pointer after calling filter_udphdr + +From: Amery Hung + +commit 11ae737efea10a8cc1c48b6288bde93180946b8c upstream. + +Fix a verification failure. filter_udphdr() calls bpf_xdp_pull_data(), +which will invalidate all pkt pointers. Therefore, all ctx->data loaded +before filter_udphdr() cannot be used. Reload it to prevent verification +errors. + +The error may not appear on some compiler versions if they decide to +load ctx->data after filter_udphdr() when it is first used. + +Fixes: efec2e55bdef ("selftests: drv-net: Pull data before parsing headers") +Signed-off-by: Amery Hung +Acked-by: Martin KaFai Lau +Link: https://patch.msgid.link/20250925161452.1290694-1-ameryhung@gmail.com +Signed-off-by: Jakub Kicinski +Signed-off-by: Greg Kroah-Hartman +--- + tools/testing/selftests/net/lib/xdp_native.bpf.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/tools/testing/selftests/net/lib/xdp_native.bpf.c b/tools/testing/selftests/net/lib/xdp_native.bpf.c +index df4eea5c192b..c368fc045f4b 100644 +--- a/tools/testing/selftests/net/lib/xdp_native.bpf.c ++++ b/tools/testing/selftests/net/lib/xdp_native.bpf.c +@@ -420,7 +420,6 @@ static int xdp_adjst_tail_grow_data(struct xdp_md *ctx, __u16 offset) + + static int xdp_adjst_tail(struct xdp_md *ctx, __u16 port) + { +- void *data = (void *)(long)ctx->data; + struct udphdr *udph = NULL; + __s32 *adjust_offset, *val; + __u32 key, hdr_len; +@@ -432,7 +431,8 @@ static int xdp_adjst_tail(struct xdp_md *ctx, __u16 port) + if (!udph) + return XDP_PASS; + +- hdr_len = (void *)udph - data + sizeof(struct udphdr); ++ hdr_len = (void *)udph - (void *)(long)ctx->data + ++ sizeof(struct udphdr); + key = XDP_ADJST_OFFSET; + adjust_offset = bpf_map_lookup_elem(&map_xdp_setup, &key); + if (!adjust_offset) +@@ -572,8 +572,6 @@ static int xdp_adjst_head_grow_data(struct xdp_md *ctx, __u64 hdr_len, + + static int xdp_head_adjst(struct xdp_md *ctx, __u16 port) + { +- void *data_end = (void *)(long)ctx->data_end; +- void *data = (void *)(long)ctx->data; + struct udphdr *udph_ptr = NULL; + __u32 key, size, hdr_len; + __s32 *val; +@@ -584,7 +582,8 @@ static int xdp_head_adjst(struct xdp_md *ctx, __u16 port) + if (!udph_ptr) + return XDP_PASS; + +- hdr_len = (void *)udph_ptr - data + sizeof(struct udphdr); ++ hdr_len = (void *)udph_ptr - (void *)(long)ctx->data + ++ sizeof(struct udphdr); + + key = XDP_ADJST_OFFSET; + val = bpf_map_lookup_elem(&map_xdp_setup, &key); +-- +2.51.2 + diff --git a/queue-6.17/series b/queue-6.17/series index 5f9bd907a5..619d27af53 100644 --- a/queue-6.17/series +++ b/queue-6.17/series @@ -833,3 +833,17 @@ scsi-ufs-ufs-pci-set-ufshcd_quirk_perform_link_startup_once-for-intel-adl.patch scsi-ufs-core-add-a-quirk-to-suppress-link_startup_again.patch scsi-ufs-core-fix-invalid-probe-error-return-value.patch drm-amd-display-update-color-on-atomic-commit-time.patch +extcon-adc-jack-cleanup-wakeup-source-only-if-it-was-enabled.patch +kunit-extend-kconfig-help-text-for-kunit_uml_pci.patch +alsa-hda-tas2781-enable-init_profile_id-for-device-initialization.patch +acpi-spcr-check-for-table-version-when-using-precise-baudrate.patch +kbuild-strip-trailing-padding-bytes-from-modules.builtin.modinfo.patch +drm-amdgpu-fix-unintended-error-log-in-vcn5_0_0.patch +drm-amd-display-fix-vupdate_offload_work-doc.patch +drm-amdgpu-fix-function-header-names-in-amdgpu_connectors.c.patch +drm-amdgpu-userq-assign-an-error-code-for-invalid-userq-va.patch +drm-msm-dpu-fix-adjusted-mode-clock-check-for-3d-merge.patch +drm-amd-display-reject-modes-with-too-high-pixel-clock-on-dce6-10.patch +drm-amd-display-use-gfp_nowait-for-allocation-in-interrupt-handler.patch +drm-amd-display-fix-black-screen-with-hdmi-outputs.patch +selftests-drv-net-reload-pkt-pointer-after-calling-filter_udphdr.patch