linux/drivers/gpu/drm/i915
Imre Deak 9cb1547891 drm/i915/dp_mst: Work around Thunderbolt sink disconnect after SINK_COUNT_ESI read
Due to a problem in the iTBT DP-in adapter's firmware the sink on a TBT
link may get disconnected inadvertently if the SINK_COUNT_ESI and the
DP_LINK_SERVICE_IRQ_VECTOR_ESI0 registers are read in a single AUX
transaction. Work around the issue by reading these registers in
separate transactions.

The issue affects MTL+ platforms and will be fixed in the DP-in adapter
firmware, however releasing that firmware fix may take some time and is
not guaranteed to be available for all systems. Based on this apply the
workaround on affected platforms.

See HSD #13013007775.

v2: Cc'ing Mika Westerberg.

Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13760
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14147
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: stable@vger.kernel.org
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/20250519133417.1469181-1-imre.deak@intel.com
(cherry picked from commit c3a48363cf)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2025-05-22 09:25:57 +03:00
..
display drm/i915/dp_mst: Work around Thunderbolt sink disconnect after SINK_COUNT_ESI read 2025-05-22 09:25:57 +03:00
gem Merge tag 'drm-intel-gt-next-2025-05-08-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-05-09 11:39:27 +10:00
gt Non-display related: 2025-05-10 06:12:18 +10:00
gvt Non-display related: 2025-05-10 06:12:18 +10:00
pxp drm/i915/pxp: fix undefined reference to `intel_pxp_gsccs_is_ready_for_sessions' 2025-04-22 10:55:38 +03:00
selftests drm/i915: Disable RPG during live selftest 2025-04-07 11:00:07 +03:00
soc drm/{i915,xe}: Move intel_pch under display 2025-04-12 11:15:13 +03:00
.gitignore
Kconfig Backmerge v6.12-rc6 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into drm-next 2024-11-04 14:25:33 +10:00
Kconfig.debug drm/i915: Support replaying GPU hangs with captured context image 2024-05-16 07:37:05 +00:00
Kconfig.profile
Makefile drm/{i915,xe}: Move intel_pch under display 2025-04-12 11:15:13 +03:00
TODO.txt
i915_active.c Merge tag 'drm-intel-gt-next-2025-01-10' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-01-13 08:05:00 +10:00
i915_active.h drm/i915: Remove deadcode 2024-12-30 01:31:31 +01:00
i915_active_types.h
i915_cmd_parser.c drm/i915: Use kmap_local_page() in i915_cmd_parser.c 2023-12-15 09:34:30 +00:00
i915_cmd_parser.h
i915_config.c
i915_config.h
i915_debugfs.c drm/i915/debugfs: move PCH type to display caps 2025-04-11 09:47:39 +03:00
i915_debugfs.h
i915_debugfs_params.c drm/i915: fix build with missing debugfs includes 2024-04-26 13:54:37 +10:00
i915_debugfs_params.h
i915_deps.c
i915_deps.h
i915_driver.c drm/i915/irq: move i915->irq_lock to display->irq.lock 2025-05-07 11:09:43 +03:00
i915_driver.h drm/i915/error: drop dmesg suggestion to file bugs on GPU hangs 2025-05-02 12:33:38 +03:00
i915_drm_client.c drm: make drm-active- stats optional 2024-12-19 16:56:17 +01:00
i915_drm_client.h drm/i915: remove i915_drm_client::id 2024-02-19 15:35:23 -05:00
i915_drv.h drm/i915/irq: move i915->irq_lock to display->irq.lock 2025-05-07 11:09:43 +03:00
i915_file_private.h
i915_gem.c drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
i915_gem.h
i915_gem_evict.c
i915_gem_evict.h
i915_gem_gtt.c drm/i915: Fixed an typo in i915_gem_gtt.c 2024-11-25 10:59:00 -05:00
i915_gem_gtt.h
i915_gem_ww.c
i915_gem_ww.h
i915_getparam.c drm/i915/overlay: add intel_overlay_available() and use it 2024-11-22 13:56:35 +02:00
i915_getparam.h
i915_gpu_error.c Non-display related: 2025-05-10 06:12:18 +10:00
i915_gpu_error.h drm/i915: use display snapshot mechanism for display irq regs 2025-04-14 21:34:17 +03:00
i915_gtt_view_types.h drm/i915: split out i915_gtt_view_types.h from i915_vma_types.h 2025-03-03 13:44:53 +02:00
i915_hwmon.c drm/i915/hwmon: expose package temperature 2024-09-13 11:21:16 +02:00
i915_hwmon.h
i915_ioc32.c
i915_ioc32.h
i915_ioctl.c
i915_ioctl.h
i915_iosf_mbi.h x86/platform/iosf_mbi: Remove unused iosf_mbi_unregister_pmic_bus_access_notifier() 2025-04-01 20:31:39 +02:00
i915_irq.c drm/i915/irq: split out i965_display_irq_postinstall() 2025-05-07 11:03:14 +03:00
i915_irq.h drm/i915: Introduce i915_error_regs 2025-02-18 01:25:31 +02:00
i915_memcpy.c drm/i915: Add includes for BUG_ON/BUILD_BUG_ON in i915_memcpy.c 2024-03-28 10:42:46 -04:00
i915_memcpy.h
i915_mitigations.c
i915_mitigations.h
i915_mm.c drm/i915: ensure segment offset never exceeds allowed max 2024-12-05 14:29:48 +01:00
i915_mm.h drm/i915/gem: Calculate object page offset for partial memory mapping 2024-08-21 15:28:33 +02:00
i915_module.c Merge tag 'drm-intel-gt-next-2025-02-26' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-13 07:54:41 +10:00
i915_params.c drm/i915: deprecate the i915.modeset module parameter 2024-08-29 17:53:02 +03:00
i915_params.h drm/i915: Support replaying GPU hangs with captured context image 2024-05-16 07:37:05 +00:00
i915_pci.c drm/intel/pciids: rename i915_pciids.h to just pciids.h 2024-10-29 16:14:04 +02:00
i915_pci.h
i915_perf.c drm for 6.15-rc1 2025-03-28 17:44:52 -07:00
i915_perf.h
i915_perf_oa_regs.h
i915_perf_types.h drm/i915: remove i915_perf_stream::size_exponent 2024-02-19 15:35:30 -05:00
i915_pmu.c drm for 6.15-rc1 2025-03-28 17:44:52 -07:00
i915_pmu.h Merge tag 'drm-intel-gt-next-2025-02-26' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-13 07:54:41 +10:00
i915_priolist_types.h
i915_pvinfo.h
i915_query.c drm/i915: Update IP_VER(12, 50) 2024-03-22 14:14:52 -07:00
i915_query.h
i915_reg.h drm/i915/vga: Extract intel_vga_regs.h 2025-04-25 18:48:01 +03:00
i915_reg_defs.h drm/i915: Introduce i915_error_regs 2025-02-18 01:25:31 +02:00
i915_request.c drm for 6.15-rc1 2025-03-28 17:44:52 -07:00
i915_request.h drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
i915_scatterlist.c drm/i915/gem: Suppress oom warning in favour of ENOMEM to userspace 2024-06-28 00:11:01 +02:00
i915_scatterlist.h drm/i915: Implement for_each_sgt_daddr_next 2023-09-30 13:49:22 +02:00
i915_scheduler.c drm/i915: Fix memory leak by correcting cache object name in error handler 2024-12-09 10:29:06 +00:00
i915_scheduler.h
i915_scheduler_types.h
i915_selftest.h
i915_sw_fence.c drm/i915/fence: Mark debug_fence_free() with __maybe_unused 2024-09-02 13:25:31 +03:00
i915_sw_fence.h
i915_sw_fence_work.c
i915_sw_fence_work.h
i915_switcheroo.c
i915_switcheroo.h
i915_syncmap.c drm/i915: Add flex arrays to struct i915_syncmap 2024-02-12 11:59:37 +00:00
i915_syncmap.h
i915_sysfs.c drm/i915: Constify 'struct bin_attribute' 2025-02-21 09:20:31 +01:00
i915_sysfs.h
i915_tasklet.h
i915_trace.h drm/i915: extract intel_uncore_trace.[ch] 2024-12-16 18:09:31 +02:00
i915_trace_points.c
i915_ttm_buddy_manager.c drm/buddy: Implement tracking clear page feature 2024-04-22 19:44:16 +02:00
i915_ttm_buddy_manager.h
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
i915_utils.h drm/i915/backlight: drop dmesg suggestion to file bugs 2025-05-02 12:33:10 +03:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Relocate intel_{rotation,remapped}_info_size() 2025-02-15 21:04:06 +02:00
i915_vma.h drm: Fix kerneldoc for "Returns" section 2024-08-26 16:40:09 +02:00
i915_vma_resource.c drm/i915/vma: constify unbind_fence_ops 2023-08-25 09:02:55 +03:00
i915_vma_resource.h
i915_vma_types.h drm/i915: split out i915_gtt_view_types.h from i915_vma_types.h 2025-03-03 13:44:53 +02:00
intel_clock_gating.c drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
intel_clock_gating.h
intel_cpu_info.c drm/i915: Introduce intel_cpu_info.c for CPU IDs 2024-12-11 23:45:09 +01:00
intel_cpu_info.h drm/i915: Introduce intel_cpu_info.c for CPU IDs 2024-12-11 23:45:09 +01:00
intel_device_info.c drm/i915/dg2: Introduce DG2_D subplatform 2024-12-11 23:45:08 +01:00
intel_device_info.h drm/i915/dg2: Introduce DG2_D subplatform 2024-12-11 23:45:08 +01:00
intel_gvt.c drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
intel_gvt.h
intel_gvt_mmio_table.c drm/i915/vga: Extract intel_vga_regs.h 2025-04-25 18:48:01 +03:00
intel_mchbar_regs.h drm/i915/hwmon: expose package temperature 2024-09-13 11:21:16 +02:00
intel_memory_region.c drm/i915: Expose intel_memory_type_str() 2025-04-02 02:15:32 +03:00
intel_memory_region.h drm/i915: Expose intel_memory_type_str() 2025-04-02 02:15:32 +03:00
intel_pci_config.h drm: move i915_drm.h under include/drm/intel 2024-05-31 16:11:09 +03:00
intel_pcode.c
intel_pcode.h
intel_region_ttm.c drm/i915: Use struct resource for memory region IO as well 2024-02-07 01:58:40 +02:00
intel_region_ttm.h
intel_runtime_pm.c drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
intel_runtime_pm.h drm/i915: fix typos in drm/i915 files 2025-01-23 05:48:23 -05:00
intel_sbi.c drm/i915/sbi: add a dedicated mutex for LPT/WPT IOSF sideband 2024-11-05 12:19:34 +02:00
intel_sbi.h drm/i915/sbi: add a dedicated mutex for LPT/WPT IOSF sideband 2024-11-05 12:19:34 +02:00
intel_step.c drm/i915: remove display stepping handling 2024-08-22 15:48:17 +03:00
intel_step.h drm/i915: remove unused leftover basedie step code 2024-08-26 11:38:44 +03:00
intel_uncore.c drm for 6.15-rc1 2025-03-28 17:44:52 -07:00
intel_uncore.h drm/i915/uncore: add to_intel_uncore() and use it 2024-12-16 18:09:38 +02:00
intel_uncore_trace.c drm/i915: extract intel_uncore_trace.[ch] 2024-12-16 18:09:31 +02:00
intel_uncore_trace.h drm/i915: extract intel_uncore_trace.[ch] 2024-12-16 18:09:31 +02:00
intel_wakeref.c treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
intel_wakeref.h drm/i915: reduce intel_wakeref.h dependencies 2025-04-01 11:48:18 +03:00
vlv_sideband.c drm/i915: hide VLV PUNIT IOSF sideband qos handling better 2024-11-05 12:19:34 +02:00
vlv_sideband.h drm/i915: add a dedicated mutex for VLV/CHV IOSF sideband 2024-11-05 12:19:34 +02:00
vlv_sideband_reg.h
vlv_suspend.c drm/i915: extract intel_uncore_trace.[ch] 2024-12-16 18:09:31 +02:00
vlv_suspend.h