]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 12 May 2025 10:23:47 +0000 (12:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 12 May 2025 10:23:47 +0000 (12:23 +0200)
added patches:
drm-amd-display-copy-aux-read-reply-data-whenever-length-0.patch
drm-amd-display-fix-the-checking-condition-in-dmub-aux-handling.patch
drm-amd-display-fix-wrong-handling-for-aux_defer-case.patch
drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch
drm-amd-display-remove-incorrect-checking-in-dmub-aux-handler.patch
drm-amdgpu-hdp4-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
drm-amdgpu-hdp5-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
drm-amdgpu-hdp5.2-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
drm-amdgpu-hdp6-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
drm-v3d-add-job-to-pending-list-if-the-reset-was-skipped.patch
iio-adc-ad7606-fix-serial-register-access.patch
iio-adc-rockchip-fix-clock-initialization-sequence.patch
iio-adis16201-correct-inclinometer-channel-resolution.patch
iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_fifo.patch
iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_tagged_fifo.patch
usb-uhci-platform-make-the-clock-really-optional.patch

17 files changed:
queue-6.6/drm-amd-display-copy-aux-read-reply-data-whenever-length-0.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-fix-the-checking-condition-in-dmub-aux-handling.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-fix-wrong-handling-for-aux_defer-case.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch [new file with mode: 0644]
queue-6.6/drm-amd-display-remove-incorrect-checking-in-dmub-aux-handler.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-hdp4-use-memcfg-register-to-post-the-write-for-hdp-flush.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-hdp5-use-memcfg-register-to-post-the-write-for-hdp-flush.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-hdp5.2-use-memcfg-register-to-post-the-write-for-hdp-flush.patch [new file with mode: 0644]
queue-6.6/drm-amdgpu-hdp6-use-memcfg-register-to-post-the-write-for-hdp-flush.patch [new file with mode: 0644]
queue-6.6/drm-v3d-add-job-to-pending-list-if-the-reset-was-skipped.patch [new file with mode: 0644]
queue-6.6/iio-adc-ad7606-fix-serial-register-access.patch [new file with mode: 0644]
queue-6.6/iio-adc-rockchip-fix-clock-initialization-sequence.patch [new file with mode: 0644]
queue-6.6/iio-adis16201-correct-inclinometer-channel-resolution.patch [new file with mode: 0644]
queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_fifo.patch [new file with mode: 0644]
queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_tagged_fifo.patch [new file with mode: 0644]
queue-6.6/series
queue-6.6/usb-uhci-platform-make-the-clock-really-optional.patch [new file with mode: 0644]

diff --git a/queue-6.6/drm-amd-display-copy-aux-read-reply-data-whenever-length-0.patch b/queue-6.6/drm-amd-display-copy-aux-read-reply-data-whenever-length-0.patch
new file mode 100644 (file)
index 0000000..157546c
--- /dev/null
@@ -0,0 +1,43 @@
+From 3924f45d4de7250a603fd7b50379237a6a0e5adf Mon Sep 17 00:00:00 2001
+From: Wayne Lin <Wayne.Lin@amd.com>
+Date: Sun, 20 Apr 2025 17:50:03 +0800
+Subject: drm/amd/display: Copy AUX read reply data whenever length > 0
+
+From: Wayne Lin <Wayne.Lin@amd.com>
+
+commit 3924f45d4de7250a603fd7b50379237a6a0e5adf upstream.
+
+[Why]
+amdgpu_dm_process_dmub_aux_transfer_sync() should return all exact data
+reply from the sink side. Don't do the analysis job in it.
+
+[How]
+Remove unnecessary check condition AUX_TRANSACTION_REPLY_AUX_ACK.
+
+Fixes: ead08b95fa50 ("drm/amd/display: Fix race condition in DPIA AUX transfer")
+Cc: Mario Limonciello <mario.limonciello@amd.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Ray Wu <ray.wu@amd.com>
+Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
+Signed-off-by: Ray Wu <ray.wu@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 9b540e3fe6796fec4fb1344f3be8952fc2f084d4)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -11069,8 +11069,7 @@ int amdgpu_dm_process_dmub_aux_transfer_
+               /* The reply is stored in the top nibble of the command. */
+               payload->reply[0] = (adev->dm.dmub_notify->aux_reply.command >> 4) & 0xF;
+-      if (!payload->write && p_notify->aux_reply.length &&
+-                      (payload->reply[0] == AUX_TRANSACTION_REPLY_AUX_ACK))
++      if (!payload->write && p_notify->aux_reply.length)
+               memcpy(payload->data, p_notify->aux_reply.data,
+                               p_notify->aux_reply.length);
diff --git a/queue-6.6/drm-amd-display-fix-the-checking-condition-in-dmub-aux-handling.patch b/queue-6.6/drm-amd-display-fix-the-checking-condition-in-dmub-aux-handling.patch
new file mode 100644 (file)
index 0000000..edf7f34
--- /dev/null
@@ -0,0 +1,36 @@
+From bc70e11b550d37fbd9eaed0f113ba560894f1609 Mon Sep 17 00:00:00 2001
+From: Wayne Lin <Wayne.Lin@amd.com>
+Date: Sun, 20 Apr 2025 16:29:07 +0800
+Subject: drm/amd/display: Fix the checking condition in dmub aux handling
+
+From: Wayne Lin <Wayne.Lin@amd.com>
+
+commit bc70e11b550d37fbd9eaed0f113ba560894f1609 upstream.
+
+[Why & How]
+Fix the checking condition for detecting AUX_RET_ERROR_PROTOCOL_ERROR.
+It was wrongly checking by "not equals to"
+
+Reviewed-by: Ray Wu <ray.wu@amd.com>
+Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
+Signed-off-by: Ray Wu <ray.wu@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 1db6c9e9b62e1a8912f0a281c941099fca678da3)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -11055,7 +11055,7 @@ int amdgpu_dm_process_dmub_aux_transfer_
+                * Transient states before tunneling is enabled could
+                * lead to this error. We can ignore this for now.
+                */
+-              if (p_notify->result != AUX_RET_ERROR_PROTOCOL_ERROR) {
++              if (p_notify->result == AUX_RET_ERROR_PROTOCOL_ERROR) {
+                       DRM_WARN("DPIA AUX failed on 0x%x(%d), error %d\n",
+                                       payload->address, payload->length,
+                                       p_notify->result);
diff --git a/queue-6.6/drm-amd-display-fix-wrong-handling-for-aux_defer-case.patch b/queue-6.6/drm-amd-display-fix-wrong-handling-for-aux_defer-case.patch
new file mode 100644 (file)
index 0000000..48297ac
--- /dev/null
@@ -0,0 +1,90 @@
+From 65924ec69b29296845c7f628112353438e63ea56 Mon Sep 17 00:00:00 2001
+From: Wayne Lin <Wayne.Lin@amd.com>
+Date: Sun, 20 Apr 2025 19:22:14 +0800
+Subject: drm/amd/display: Fix wrong handling for AUX_DEFER case
+
+From: Wayne Lin <Wayne.Lin@amd.com>
+
+commit 65924ec69b29296845c7f628112353438e63ea56 upstream.
+
+[Why]
+We incorrectly ack all bytes get written when the reply actually is defer.
+When it's defer, means sink is not ready for the request. We should
+retry the request.
+
+[How]
+Only reply all data get written when receive I2C_ACK|AUX_ACK. Otherwise,
+reply the number of actual written bytes received from the sink.
+Add some messages to facilitate debugging as well.
+
+Fixes: ad6756b4d773 ("drm/amd/display: Shift dc link aux to aux_payload")
+Cc: Mario Limonciello <mario.limonciello@amd.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Ray Wu <ray.wu@amd.com>
+Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
+Signed-off-by: Ray Wu <ray.wu@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 3637e457eb0000bc37d8bbbec95964aad2fb29fd)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c |   28 ++++++++++--
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+@@ -48,6 +48,9 @@
+ #define PEAK_FACTOR_X1000 1006
++/*
++ * This function handles both native AUX and I2C-Over-AUX transactions.
++ */
+ static ssize_t dm_dp_aux_transfer(struct drm_dp_aux *aux,
+                                 struct drm_dp_aux_msg *msg)
+ {
+@@ -84,15 +87,25 @@ static ssize_t dm_dp_aux_transfer(struct
+       if (adev->dm.aux_hpd_discon_quirk) {
+               if (msg->address == DP_SIDEBAND_MSG_DOWN_REQ_BASE &&
+                       operation_result == AUX_RET_ERROR_HPD_DISCON) {
+-                      result = 0;
++                      result = msg->size;
+                       operation_result = AUX_RET_SUCCESS;
+               }
+       }
+-      if (payload.write && result >= 0)
+-              result = msg->size;
++      /*
++       * result equals to 0 includes the cases of AUX_DEFER/I2C_DEFER
++       */
++      if (payload.write && result >= 0) {
++              if (result) {
++                      /*one byte indicating partially written bytes. Force 0 to retry*/
++                      drm_info(adev_to_drm(adev), "amdgpu: AUX partially written\n");
++                      result = 0;
++              } else if (!payload.reply[0])
++                      /*I2C_ACK|AUX_ACK*/
++                      result = msg->size;
++      }
+-      if (result < 0)
++      if (result < 0) {
+               switch (operation_result) {
+               case AUX_RET_SUCCESS:
+                       break;
+@@ -111,6 +124,13 @@ static ssize_t dm_dp_aux_transfer(struct
+                       break;
+               }
++              drm_info(adev_to_drm(adev), "amdgpu: DP AUX transfer fail:%d\n", operation_result);
++      }
++
++      if (payload.reply[0])
++              drm_info(adev_to_drm(adev), "amdgpu: AUX reply command not ACK: 0x%02x.",
++                      payload.reply[0]);
++
+       return result;
+ }
diff --git a/queue-6.6/drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch b/queue-6.6/drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch
new file mode 100644 (file)
index 0000000..2f05128
--- /dev/null
@@ -0,0 +1,60 @@
+From f1c6be3999d2be2673a51a9be0caf9348e254e52 Mon Sep 17 00:00:00 2001
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Date: Wed, 16 Apr 2025 11:26:54 -0400
+Subject: drm/amd/display: more liberal vmin/vmax update for freesync
+
+From: Aurabindo Pillai <aurabindo.pillai@amd.com>
+
+commit f1c6be3999d2be2673a51a9be0caf9348e254e52 upstream.
+
+[Why]
+FAMS2 expects vmin/vmax to be updated in the case when freesync is
+off, but supported. But we only update it when freesync is enabled.
+
+[How]
+Change the vsync handler such that dc_stream_adjust_vmin_vmax() its called
+irrespective of whether freesync is enabled. If freesync is supported,
+then there is no harm in updating vmin/vmax registers.
+
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3546
+Reviewed-by: ChiaHsuan Chung <chiahsuan.chung@amd.com>
+Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
+Signed-off-by: Ray Wu <ray.wu@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit cfb2d41831ee5647a4ae0ea7c24971a92d5dfa0d)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |   16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -610,15 +610,21 @@ static void dm_crtc_high_irq(void *inter
+       spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags);
+       if (acrtc->dm_irq_params.stream &&
+-          acrtc->dm_irq_params.vrr_params.supported &&
+-          acrtc->dm_irq_params.freesync_config.state ==
+-                  VRR_STATE_ACTIVE_VARIABLE) {
++              acrtc->dm_irq_params.vrr_params.supported) {
++              bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled;
++              bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled;
++              bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state == VRR_STATE_ACTIVE_VARIABLE;
++
+               mod_freesync_handle_v_update(adev->dm.freesync_module,
+                                            acrtc->dm_irq_params.stream,
+                                            &acrtc->dm_irq_params.vrr_params);
+-              dc_stream_adjust_vmin_vmax(adev->dm.dc, acrtc->dm_irq_params.stream,
+-                                         &acrtc->dm_irq_params.vrr_params.adjust);
++              /* update vmin_vmax only if freesync is enabled, or only if PSR and REPLAY are disabled */
++              if (fs_active_var_en || (!fs_active_var_en && !replay_en && !psr_en)) {
++                      dc_stream_adjust_vmin_vmax(adev->dm.dc,
++                                      acrtc->dm_irq_params.stream,
++                                      &acrtc->dm_irq_params.vrr_params.adjust);
++              }
+       }
+       /*
diff --git a/queue-6.6/drm-amd-display-remove-incorrect-checking-in-dmub-aux-handler.patch b/queue-6.6/drm-amd-display-remove-incorrect-checking-in-dmub-aux-handler.patch
new file mode 100644 (file)
index 0000000..3d7096f
--- /dev/null
@@ -0,0 +1,53 @@
+From 396dc51b3b7ea524bf8061f478332d0039e96d5d Mon Sep 17 00:00:00 2001
+From: Wayne Lin <Wayne.Lin@amd.com>
+Date: Sun, 20 Apr 2025 16:56:54 +0800
+Subject: drm/amd/display: Remove incorrect checking in dmub aux handler
+
+From: Wayne Lin <Wayne.Lin@amd.com>
+
+commit 396dc51b3b7ea524bf8061f478332d0039e96d5d upstream.
+
+[Why & How]
+"Request length != reply length" is expected behavior defined in spec.
+It's not an invalid reply. Besides, replied data handling logic is not
+designed to be written in amdgpu_dm_process_dmub_aux_transfer_sync().
+Remove the incorrectly handling section.
+
+Fixes: ead08b95fa50 ("drm/amd/display: Fix race condition in DPIA AUX transfer")
+Cc: Mario Limonciello <mario.limonciello@amd.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Ray Wu <ray.wu@amd.com>
+Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
+Signed-off-by: Ray Wu <ray.wu@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 81b5c6fa62af62fe89ae9576f41aae37830b94cb)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |   12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -11070,19 +11070,9 @@ int amdgpu_dm_process_dmub_aux_transfer_
+               payload->reply[0] = (adev->dm.dmub_notify->aux_reply.command >> 4) & 0xF;
+       if (!payload->write && p_notify->aux_reply.length &&
+-                      (payload->reply[0] == AUX_TRANSACTION_REPLY_AUX_ACK)) {
+-
+-              if (payload->length != p_notify->aux_reply.length) {
+-                      DRM_WARN("invalid read length %d from DPIA AUX 0x%x(%d)!\n",
+-                              p_notify->aux_reply.length,
+-                                      payload->address, payload->length);
+-                      *operation_result = AUX_RET_ERROR_INVALID_REPLY;
+-                      goto out;
+-              }
+-
++                      (payload->reply[0] == AUX_TRANSACTION_REPLY_AUX_ACK))
+               memcpy(payload->data, p_notify->aux_reply.data,
+                               p_notify->aux_reply.length);
+-      }
+       /* success */
+       ret = p_notify->aux_reply.length;
diff --git a/queue-6.6/drm-amdgpu-hdp4-use-memcfg-register-to-post-the-write-for-hdp-flush.patch b/queue-6.6/drm-amdgpu-hdp4-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
new file mode 100644 (file)
index 0000000..976f50d
--- /dev/null
@@ -0,0 +1,43 @@
+From f690e3974755a650259a45d71456decc9c96a282 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 30 Apr 2025 12:45:04 -0400
+Subject: drm/amdgpu/hdp4: use memcfg register to post the write for HDP flush
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit f690e3974755a650259a45d71456decc9c96a282 upstream.
+
+Reading back the remapped HDP flush register seems to cause
+problems on some platforms. All we need is a read, so read back
+the memcfg register.
+
+Fixes: c9b8dcabb52a ("drm/amdgpu/hdp4.0: do a posting read when flushing HDP")
+Reported-by: Alexey Klimov <alexey.klimov@linaro.org>
+Link: https://lists.freedesktop.org/archives/amd-gfx/2025-April/123150.html
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4119
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3908
+Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 5c937b4a6050316af37ef214825b6340b5e9e391)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/hdp_v4_0.c
+@@ -42,7 +42,12 @@ static void hdp_v4_0_flush_hdp(struct am
+ {
+       if (!ring || !ring->funcs->emit_wreg) {
+               WREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+-              RREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
++              /* We just need to read back a register to post the write.
++               * Reading back the remapped register causes problems on
++               * some platforms so just read back the memory size register.
++               */
++              if (adev->nbio.funcs->get_memsize)
++                      adev->nbio.funcs->get_memsize(adev);
+       } else {
+               amdgpu_ring_emit_wreg(ring, (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+       }
diff --git a/queue-6.6/drm-amdgpu-hdp5-use-memcfg-register-to-post-the-write-for-hdp-flush.patch b/queue-6.6/drm-amdgpu-hdp5-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
new file mode 100644 (file)
index 0000000..d3fc0e7
--- /dev/null
@@ -0,0 +1,43 @@
+From 0e33e0f339b91eecd9558311449a3d1e728722d4 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 30 Apr 2025 12:46:56 -0400
+Subject: drm/amdgpu/hdp5: use memcfg register to post the write for HDP flush
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit 0e33e0f339b91eecd9558311449a3d1e728722d4 upstream.
+
+Reading back the remapped HDP flush register seems to cause
+problems on some platforms. All we need is a read, so read back
+the memcfg register.
+
+Fixes: cf424020e040 ("drm/amdgpu/hdp5.0: do a posting read when flushing HDP")
+Reported-by: Alexey Klimov <alexey.klimov@linaro.org>
+Link: https://lists.freedesktop.org/archives/amd-gfx/2025-April/123150.html
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4119
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3908
+Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit a5cb344033c7598762e89255e8ff52827abb57a4)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/hdp_v5_0.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/hdp_v5_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/hdp_v5_0.c
+@@ -33,7 +33,12 @@ static void hdp_v5_0_flush_hdp(struct am
+ {
+       if (!ring || !ring->funcs->emit_wreg) {
+               WREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+-              RREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
++              /* We just need to read back a register to post the write.
++               * Reading back the remapped register causes problems on
++               * some platforms so just read back the memory size register.
++               */
++              if (adev->nbio.funcs->get_memsize)
++                      adev->nbio.funcs->get_memsize(adev);
+       } else {
+               amdgpu_ring_emit_wreg(ring, (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+       }
diff --git a/queue-6.6/drm-amdgpu-hdp5.2-use-memcfg-register-to-post-the-write-for-hdp-flush.patch b/queue-6.6/drm-amdgpu-hdp5.2-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
new file mode 100644 (file)
index 0000000..f0c5874
--- /dev/null
@@ -0,0 +1,48 @@
+From dbc988c689333faeeed44d5561f372ff20395304 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 30 Apr 2025 12:47:37 -0400
+Subject: drm/amdgpu/hdp5.2: use memcfg register to post the write for HDP flush
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit dbc988c689333faeeed44d5561f372ff20395304 upstream.
+
+Reading back the remapped HDP flush register seems to cause
+problems on some platforms. All we need is a read, so read back
+the memcfg register.
+
+Fixes: f756dbac1ce1 ("drm/amdgpu/hdp5.2: do a posting read when flushing HDP")
+Reported-by: Alexey Klimov <alexey.klimov@linaro.org>
+Link: https://lists.freedesktop.org/archives/amd-gfx/2025-April/123150.html
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4119
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3908
+Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 4a89b7698e771914b4d5b571600c76e2fdcbe2a9)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/hdp_v5_2.c |   12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/hdp_v5_2.c
++++ b/drivers/gpu/drm/amd/amdgpu/hdp_v5_2.c
+@@ -34,7 +34,17 @@ static void hdp_v5_2_flush_hdp(struct am
+       if (!ring || !ring->funcs->emit_wreg) {
+               WREG32_NO_KIQ((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2,
+                       0);
+-              RREG32_NO_KIQ((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
++              if (amdgpu_sriov_vf(adev)) {
++                      /* this is fine because SR_IOV doesn't remap the register */
++                      RREG32_NO_KIQ((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
++              } else {
++                      /* We just need to read back a register to post the write.
++                       * Reading back the remapped register causes problems on
++                       * some platforms so just read back the memory size register.
++                       */
++                      if (adev->nbio.funcs->get_memsize)
++                              adev->nbio.funcs->get_memsize(adev);
++              }
+       } else {
+               amdgpu_ring_emit_wreg(ring,
+                       (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2,
diff --git a/queue-6.6/drm-amdgpu-hdp6-use-memcfg-register-to-post-the-write-for-hdp-flush.patch b/queue-6.6/drm-amdgpu-hdp6-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
new file mode 100644 (file)
index 0000000..cb1e340
--- /dev/null
@@ -0,0 +1,43 @@
+From ca28e80abe4219c8f1a2961ae05102d70af6dc87 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Wed, 30 Apr 2025 12:48:51 -0400
+Subject: drm/amdgpu/hdp6: use memcfg register to post the write for HDP flush
+
+From: Alex Deucher <alexander.deucher@amd.com>
+
+commit ca28e80abe4219c8f1a2961ae05102d70af6dc87 upstream.
+
+Reading back the remapped HDP flush register seems to cause
+problems on some platforms. All we need is a read, so read back
+the memcfg register.
+
+Fixes: abe1cbaec6cf ("drm/amdgpu/hdp6.0: do a posting read when flushing HDP")
+Reported-by: Alexey Klimov <alexey.klimov@linaro.org>
+Link: https://lists.freedesktop.org/archives/amd-gfx/2025-April/123150.html
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4119
+Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3908
+Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+(cherry picked from commit 84141ff615951359c9a99696fd79a36c465ed847)
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/amdgpu/hdp_v6_0.c |    7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/amd/amdgpu/hdp_v6_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/hdp_v6_0.c
+@@ -33,7 +33,12 @@ static void hdp_v6_0_flush_hdp(struct am
+ {
+       if (!ring || !ring->funcs->emit_wreg) {
+               WREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+-              RREG32((adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2);
++              /* We just need to read back a register to post the write.
++               * Reading back the remapped register causes problems on
++               * some platforms so just read back the memory size register.
++               */
++              if (adev->nbio.funcs->get_memsize)
++                      adev->nbio.funcs->get_memsize(adev);
+       } else {
+               amdgpu_ring_emit_wreg(ring, (adev->rmmio_remap.reg_offset + KFD_MMIO_REMAP_HDP_MEM_FLUSH_CNTL) >> 2, 0);
+       }
diff --git a/queue-6.6/drm-v3d-add-job-to-pending-list-if-the-reset-was-skipped.patch b/queue-6.6/drm-v3d-add-job-to-pending-list-if-the-reset-was-skipped.patch
new file mode 100644 (file)
index 0000000..34a9961
--- /dev/null
@@ -0,0 +1,98 @@
+From 35e4079bf1a2570abffce6ababa631afcf8ea0e5 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ma=C3=ADra=20Canal?= <mcanal@igalia.com>
+Date: Wed, 30 Apr 2025 17:51:52 -0300
+Subject: drm/v3d: Add job to pending list if the reset was skipped
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Maíra Canal <mcanal@igalia.com>
+
+commit 35e4079bf1a2570abffce6ababa631afcf8ea0e5 upstream.
+
+When a CL/CSD job times out, we check if the GPU has made any progress
+since the last timeout. If so, instead of resetting the hardware, we skip
+the reset and let the timer get rearmed. This gives long-running jobs a
+chance to complete.
+
+However, when `timedout_job()` is called, the job in question is removed
+from the pending list, which means it won't be automatically freed through
+`free_job()`. Consequently, when we skip the reset and keep the job
+running, the job won't be freed when it finally completes.
+
+This situation leads to a memory leak, as exposed in [1] and [2].
+
+Similarly to commit 704d3d60fec4 ("drm/etnaviv: don't block scheduler when
+GPU is still active"), this patch ensures the job is put back on the
+pending list when extending the timeout.
+
+Cc: stable@vger.kernel.org # 6.0
+Reported-by: Daivik Bhatia <dtgs1208@gmail.com>
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12227 [1]
+Closes: https://github.com/raspberrypi/linux/issues/6817 [2]
+Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
+Acked-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
+Link: https://lore.kernel.org/r/20250430210643.57924-1-mcanal@igalia.com
+Signed-off-by: Maíra Canal <mcanal@igalia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/v3d/v3d_sched.c |   28 +++++++++++++++++++++-------
+ 1 file changed, 21 insertions(+), 7 deletions(-)
+
+--- a/drivers/gpu/drm/v3d/v3d_sched.c
++++ b/drivers/gpu/drm/v3d/v3d_sched.c
+@@ -289,11 +289,16 @@ v3d_gpu_reset_for_timeout(struct v3d_dev
+       return DRM_GPU_SCHED_STAT_NOMINAL;
+ }
+-/* If the current address or return address have changed, then the GPU
+- * has probably made progress and we should delay the reset.  This
+- * could fail if the GPU got in an infinite loop in the CL, but that
+- * is pretty unlikely outside of an i-g-t testcase.
+- */
++static void
++v3d_sched_skip_reset(struct drm_sched_job *sched_job)
++{
++      struct drm_gpu_scheduler *sched = sched_job->sched;
++
++      spin_lock(&sched->job_list_lock);
++      list_add(&sched_job->list, &sched->pending_list);
++      spin_unlock(&sched->job_list_lock);
++}
++
+ static enum drm_gpu_sched_stat
+ v3d_cl_job_timedout(struct drm_sched_job *sched_job, enum v3d_queue q,
+                   u32 *timedout_ctca, u32 *timedout_ctra)
+@@ -303,9 +308,16 @@ v3d_cl_job_timedout(struct drm_sched_job
+       u32 ctca = V3D_CORE_READ(0, V3D_CLE_CTNCA(q));
+       u32 ctra = V3D_CORE_READ(0, V3D_CLE_CTNRA(q));
++      /* If the current address or return address have changed, then the GPU
++       * has probably made progress and we should delay the reset. This
++       * could fail if the GPU got in an infinite loop in the CL, but that
++       * is pretty unlikely outside of an i-g-t testcase.
++       */
+       if (*timedout_ctca != ctca || *timedout_ctra != ctra) {
+               *timedout_ctca = ctca;
+               *timedout_ctra = ctra;
++
++              v3d_sched_skip_reset(sched_job);
+               return DRM_GPU_SCHED_STAT_NOMINAL;
+       }
+@@ -345,11 +357,13 @@ v3d_csd_job_timedout(struct drm_sched_jo
+       struct v3d_dev *v3d = job->base.v3d;
+       u32 batches = V3D_CORE_READ(0, V3D_CSD_CURRENT_CFG4);
+-      /* If we've made progress, skip reset and let the timer get
+-       * rearmed.
++      /* If we've made progress, skip reset, add the job to the pending
++       * list, and let the timer get rearmed.
+        */
+       if (job->timedout_batches != batches) {
+               job->timedout_batches = batches;
++
++              v3d_sched_skip_reset(sched_job);
+               return DRM_GPU_SCHED_STAT_NOMINAL;
+       }
diff --git a/queue-6.6/iio-adc-ad7606-fix-serial-register-access.patch b/queue-6.6/iio-adc-ad7606-fix-serial-register-access.patch
new file mode 100644 (file)
index 0000000..79776c1
--- /dev/null
@@ -0,0 +1,38 @@
+From f083f8a21cc785ebe3a33f756a3fa3660611f8db Mon Sep 17 00:00:00 2001
+From: Angelo Dureghello <adureghello@baylibre.com>
+Date: Fri, 18 Apr 2025 20:37:53 +0200
+Subject: iio: adc: ad7606: fix serial register access
+
+From: Angelo Dureghello <adureghello@baylibre.com>
+
+commit f083f8a21cc785ebe3a33f756a3fa3660611f8db upstream.
+
+Fix register read/write routine as per datasheet.
+
+When reading multiple consecutive registers, only the first one is read
+properly. This is due to missing chip select deassert and assert again
+between first and second 16bit transfer, as shown in the datasheet
+AD7606C-16, rev 0, figure 110.
+
+Fixes: f2a22e1e172f ("iio: adc: ad7606: Add support for software mode for ad7616")
+Reviewed-by: David Lechner <dlechner@baylibre.com>
+Signed-off-by: Angelo Dureghello <adureghello@baylibre.com>
+Link: https://patch.msgid.link/20250418-wip-bl-ad7606-fix-reg-access-v3-1-d5eeb440c738@baylibre.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/ad7606_spi.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/iio/adc/ad7606_spi.c
++++ b/drivers/iio/adc/ad7606_spi.c
+@@ -127,7 +127,7 @@ static int ad7606_spi_reg_read(struct ad
+               {
+                       .tx_buf = &st->d16[0],
+                       .len = 2,
+-                      .cs_change = 0,
++                      .cs_change = 1,
+               }, {
+                       .rx_buf = &st->d16[1],
+                       .len = 2,
diff --git a/queue-6.6/iio-adc-rockchip-fix-clock-initialization-sequence.patch b/queue-6.6/iio-adc-rockchip-fix-clock-initialization-sequence.patch
new file mode 100644 (file)
index 0000000..f2b8675
--- /dev/null
@@ -0,0 +1,55 @@
+From 839f81de397019f55161c5982d670ac19d836173 Mon Sep 17 00:00:00 2001
+From: Simon Xue <xxm@rock-chips.com>
+Date: Wed, 12 Mar 2025 14:20:16 +0800
+Subject: iio: adc: rockchip: Fix clock initialization sequence
+
+From: Simon Xue <xxm@rock-chips.com>
+
+commit 839f81de397019f55161c5982d670ac19d836173 upstream.
+
+clock_set_rate should be executed after devm_clk_get_enabled.
+
+Fixes: 97ad10bb2901 ("iio: adc: rockchip_saradc: Make use of devm_clk_get_enabled")
+Signed-off-by: Simon Xue <xxm@rock-chips.com>
+Reviewed-by: Heiko Stuebner <heiko@sntech.de>
+Link: https://patch.msgid.link/20250312062016.137821-1-xxm@rock-chips.com
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/adc/rockchip_saradc.c |   17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+
+--- a/drivers/iio/adc/rockchip_saradc.c
++++ b/drivers/iio/adc/rockchip_saradc.c
+@@ -485,15 +485,6 @@ static int rockchip_saradc_probe(struct
+       if (info->reset)
+               rockchip_saradc_reset_controller(info->reset);
+-      /*
+-       * Use a default value for the converter clock.
+-       * This may become user-configurable in the future.
+-       */
+-      ret = clk_set_rate(info->clk, info->data->clk_rate);
+-      if (ret < 0)
+-              return dev_err_probe(&pdev->dev, ret,
+-                                   "failed to set adc clk rate\n");
+-
+       ret = regulator_enable(info->vref);
+       if (ret < 0)
+               return dev_err_probe(&pdev->dev, ret,
+@@ -520,6 +511,14 @@ static int rockchip_saradc_probe(struct
+       if (IS_ERR(info->clk))
+               return dev_err_probe(&pdev->dev, PTR_ERR(info->clk),
+                                    "failed to get adc clock\n");
++      /*
++       * Use a default value for the converter clock.
++       * This may become user-configurable in the future.
++       */
++      ret = clk_set_rate(info->clk, info->data->clk_rate);
++      if (ret < 0)
++              return dev_err_probe(&pdev->dev, ret,
++                                   "failed to set adc clk rate\n");
+       platform_set_drvdata(pdev, indio_dev);
diff --git a/queue-6.6/iio-adis16201-correct-inclinometer-channel-resolution.patch b/queue-6.6/iio-adis16201-correct-inclinometer-channel-resolution.patch
new file mode 100644 (file)
index 0000000..9107148
--- /dev/null
@@ -0,0 +1,40 @@
+From 609bc31eca06c7408e6860d8b46311ebe45c1fef Mon Sep 17 00:00:00 2001
+From: Gabriel Shahrouzi <gshahrouzi@gmail.com>
+Date: Mon, 21 Apr 2025 09:15:39 -0400
+Subject: iio: adis16201: Correct inclinometer channel resolution
+
+From: Gabriel Shahrouzi <gshahrouzi@gmail.com>
+
+commit 609bc31eca06c7408e6860d8b46311ebe45c1fef upstream.
+
+The inclinometer channels were previously defined with 14 realbits.
+However, the ADIS16201 datasheet states the resolution for these output
+channels is 12 bits (Page 14, text description; Page 15, table 7).
+
+Correct the realbits value to 12 to accurately reflect the hardware.
+
+Fixes: f7fe1d1dd5a5 ("staging: iio: new adis16201 driver")
+Cc: stable@vger.kernel.org
+Signed-off-by: Gabriel Shahrouzi <gshahrouzi@gmail.com>
+Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com>
+Link: https://patch.msgid.link/20250421131539.912966-1-gshahrouzi@gmail.com
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/accel/adis16201.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/iio/accel/adis16201.c
++++ b/drivers/iio/accel/adis16201.c
+@@ -211,9 +211,9 @@ static const struct iio_chan_spec adis16
+                       BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
+       ADIS_AUX_ADC_CHAN(ADIS16201_AUX_ADC_REG, ADIS16201_SCAN_AUX_ADC, 0, 12),
+       ADIS_INCLI_CHAN(X, ADIS16201_XINCL_OUT_REG, ADIS16201_SCAN_INCLI_X,
+-                      BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
++                      BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 12),
+       ADIS_INCLI_CHAN(Y, ADIS16201_YINCL_OUT_REG, ADIS16201_SCAN_INCLI_Y,
+-                      BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
++                      BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 12),
+       IIO_CHAN_SOFT_TIMESTAMP(7)
+ };
diff --git a/queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_fifo.patch b/queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_fifo.patch
new file mode 100644 (file)
index 0000000..fd44a68
--- /dev/null
@@ -0,0 +1,35 @@
+From 159ca7f18129834b6f4c7eae67de48e96c752fc9 Mon Sep 17 00:00:00 2001
+From: Silvano Seva <s.seva@4sigma.it>
+Date: Tue, 11 Mar 2025 09:49:47 +0100
+Subject: iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_fifo
+
+From: Silvano Seva <s.seva@4sigma.it>
+
+commit 159ca7f18129834b6f4c7eae67de48e96c752fc9 upstream.
+
+Prevent st_lsm6dsx_read_fifo from falling in an infinite loop in case
+pattern_len is equal to zero and the device FIFO is not empty.
+
+Fixes: 290a6ce11d93 ("iio: imu: add support to lsm6dsx driver")
+Signed-off-by: Silvano Seva <s.seva@4sigma.it>
+Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
+Link: https://patch.msgid.link/20250311085030.3593-2-s.seva@4sigma.it
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
++++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
+@@ -370,6 +370,9 @@ int st_lsm6dsx_read_fifo(struct st_lsm6d
+       if (fifo_status & cpu_to_le16(ST_LSM6DSX_FIFO_EMPTY_MASK))
+               return 0;
++      if (!pattern_len)
++              pattern_len = ST_LSM6DSX_SAMPLE_SIZE;
++
+       fifo_len = (le16_to_cpu(fifo_status) & fifo_diff_mask) *
+                  ST_LSM6DSX_CHAN_SIZE;
+       fifo_len = (fifo_len / pattern_len) * pattern_len;
diff --git a/queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_tagged_fifo.patch b/queue-6.6/iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_tagged_fifo.patch
new file mode 100644 (file)
index 0000000..829087e
--- /dev/null
@@ -0,0 +1,35 @@
+From 8114ef86e2058e2554111b793596f17bee23fa15 Mon Sep 17 00:00:00 2001
+From: Silvano Seva <s.seva@4sigma.it>
+Date: Tue, 11 Mar 2025 09:49:49 +0100
+Subject: iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_tagged_fifo
+
+From: Silvano Seva <s.seva@4sigma.it>
+
+commit 8114ef86e2058e2554111b793596f17bee23fa15 upstream.
+
+Prevent st_lsm6dsx_read_tagged_fifo from falling in an infinite loop in
+case pattern_len is equal to zero and the device FIFO is not empty.
+
+Fixes: 801a6e0af0c6 ("iio: imu: st_lsm6dsx: add support to LSM6DSO")
+Signed-off-by: Silvano Seva <s.seva@4sigma.it>
+Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
+Link: https://patch.msgid.link/20250311085030.3593-4-s.seva@4sigma.it
+Cc: <Stable@vger.kernel.org>
+Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
++++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c
+@@ -604,6 +604,9 @@ int st_lsm6dsx_read_tagged_fifo(struct s
+       if (!fifo_len)
+               return 0;
++      if (!pattern_len)
++              pattern_len = ST_LSM6DSX_TAGGED_SAMPLE_SIZE;
++
+       for (read_len = 0; read_len < fifo_len; read_len += pattern_len) {
+               err = st_lsm6dsx_read_block(hw,
+                                           ST_LSM6DSX_REG_FIFO_OUT_TAG_ADDR,
index 512fd6833640beaa876a4f7be589f02d153d658e..dec339c55fa03b6c538a4ea1684814fa451e9f2b 100644 (file)
@@ -39,3 +39,19 @@ staging-axis-fifo-remove-hardware-resets-for-user-errors.patch
 staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch
 x86-mm-eliminate-window-where-tlb-flushes-may-be-inadvertently-skipped.patch
 drm-amd-display-shift-dmub-aux-reply-command-if-necessary.patch
+iio-adc-ad7606-fix-serial-register-access.patch
+iio-adc-rockchip-fix-clock-initialization-sequence.patch
+iio-adis16201-correct-inclinometer-channel-resolution.patch
+iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_fifo.patch
+iio-imu-st_lsm6dsx-fix-possible-lockup-in-st_lsm6dsx_read_tagged_fifo.patch
+drm-v3d-add-job-to-pending-list-if-the-reset-was-skipped.patch
+drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch
+drm-amd-display-fix-the-checking-condition-in-dmub-aux-handling.patch
+drm-amd-display-remove-incorrect-checking-in-dmub-aux-handler.patch
+drm-amd-display-fix-wrong-handling-for-aux_defer-case.patch
+drm-amd-display-copy-aux-read-reply-data-whenever-length-0.patch
+drm-amdgpu-hdp4-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
+drm-amdgpu-hdp5.2-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
+drm-amdgpu-hdp5-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
+drm-amdgpu-hdp6-use-memcfg-register-to-post-the-write-for-hdp-flush.patch
+usb-uhci-platform-make-the-clock-really-optional.patch
diff --git a/queue-6.6/usb-uhci-platform-make-the-clock-really-optional.patch b/queue-6.6/usb-uhci-platform-make-the-clock-really-optional.patch
new file mode 100644 (file)
index 0000000..e139732
--- /dev/null
@@ -0,0 +1,39 @@
+From a5c7973539b010874a37a0e846e62ac6f00553ba Mon Sep 17 00:00:00 2001
+From: Alexey Charkov <alchark@gmail.com>
+Date: Fri, 25 Apr 2025 18:11:11 +0400
+Subject: usb: uhci-platform: Make the clock really optional
+
+From: Alexey Charkov <alchark@gmail.com>
+
+commit a5c7973539b010874a37a0e846e62ac6f00553ba upstream.
+
+Device tree bindings state that the clock is optional for UHCI platform
+controllers, and some existing device trees don't provide those - such
+as those for VIA/WonderMedia devices.
+
+The driver however fails to probe now if no clock is provided, because
+devm_clk_get returns an error pointer in such case.
+
+Switch to devm_clk_get_optional instead, so that it could probe again
+on those platforms where no clocks are given.
+
+Cc: stable <stable@kernel.org>
+Fixes: 26c502701c52 ("usb: uhci: Add clk support to uhci-platform")
+Signed-off-by: Alexey Charkov <alchark@gmail.com>
+Link: https://lore.kernel.org/r/20250425-uhci-clock-optional-v1-1-a1d462592f29@gmail.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/host/uhci-platform.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/uhci-platform.c
++++ b/drivers/usb/host/uhci-platform.c
+@@ -121,7 +121,7 @@ static int uhci_hcd_platform_probe(struc
+       }
+       /* Get and enable clock if any specified */
+-      uhci->clk = devm_clk_get(&pdev->dev, NULL);
++      uhci->clk = devm_clk_get_optional(&pdev->dev, NULL);
+       if (IS_ERR(uhci->clk)) {
+               ret = PTR_ERR(uhci->clk);
+               goto err_rmr;