ACK/Cmnt: [SRU] [PULL] [Lunar] [PATCH 00/57] dGPU cannot resume because system firmware stuck in IPCS method Edit
Tim Gardner
tim.gardner at canonical.com
Thu Aug 31 14:48:15 UTC 2023
On 8/3/23 8:11 PM, Kai-Heng Feng wrote:
> BugLink: https://bugs.launchpad.net/bugs/2021572
>
> [Impact]
> When a dGPU on a laptop is in PCIe D3cold and TBT port is connected to a
> monitor via a cable, unplugging the cable will make the dGPU unable to
> resume to D0.
>
> [Fix]
> There's a part of system firmware, IOM, need the driver to disconnect
> all TBT/Type-C phy to let dGPU function normally.
>
> [Test]
> With the fix applied, the dGPU continues to work after replugging video
> cable many times.
> The fix is in OEM 6.1 kernel for quite a while so it's been extensively
> tested.
>
> [Where problems could occur]
> The changes are in upstream and OEM 6.1 for a while without any
> regression that I am aware of. If regression were to happen, it will
> most likely affect external output capability, especially type-c alt
> output.
>
> [Pull]
> The following changes since commit 36b85d81c54ef4444c5aa001b8a4dd44b6d01420:
>
> netfilter: nf_tables: fix chain binding transaction logic (2023-08-03 15:46:07 +0200)
>
> are available in the Git repository at:
>
> git+ssh://kaihengfeng@git.launchpad.net/~kaihengfeng/+git/linux ipcs-6.2
>
> for you to fetch changes up to e0231ca621a5cc65caf4a2682466a32d790a494a:
>
> drm/i915/tc: Reset TypeC PHYs left enabled in DP-alt mode after the sink disconnects (2023-08-03 23:11:39 +0800)
>
> ----------------------------------------------------------------
> Imre Deak (56):
> drm/i915/tc: Abort DP AUX transfer on a disconnected TC port
> drm/i915: Enable a PIPEDMC whenever its corresponding pipe is enabled
> drm/i915/tc: Fix TC port link ref init for DP MST during HW readout
> drm/i915/tc: Fix system resume MST mode restore for DP-alt sinks
> drm/i915/tc: Wait for IOM/FW PHY initialization of legacy TC ports
> drm/i915/tc: Factor out helpers converting HPD mask to TC mode
> drm/i915/tc: Fix target TC mode for a disconnected legacy port
> drm/i915/tc: Fix TC mode for a legacy port if the PHY is not ready
> drm/i915/tc: Fix initial TC mode on disabled legacy ports
> drm/i915/tc: Make the TC mode readout consistent in all PHY states
> drm/i915: Add encoder hook to get the PLL type used by TC ports
> drm/i915/tc: Assume a TC port is legacy if VBT says the port has HDMI
> drm/i915/tc: Factor out a function querying active links on a TC port
> drm/i915/tc: Check the PLL type used by an enabled TC port
> drm/i915/tc: Group the TC PHY setup/query functions per platform
> drm/i915/tc: Use the adlp prefix for ADLP TC PHY functions
> drm/i915/tc: Rename tc_phy_status_complete() to tc_phy_is_ready()
> drm/i915/tc: Use the tc_phy prefix for all TC PHY functions
> drm/i915/tc: Move TC port fields to a new intel_tc_port struct
> drm/i915/tc: Check for TC PHY explicitly in intel_tc_port_fia_max_lane_count()
> drm/i915/tc: Move the intel_tc_port struct declaration to intel_tc.c
> drm/i915/tc: Add TC PHY hook to get the PHY HPD live status
> drm/i915/tc: Add TC PHY hooks to get the PHY ready/owned state
> drm/i915/tc: Add TC PHY hook to read out the PHY HW state
> drm/i915/tc: Add generic TC PHY connect/disconnect handlers
> drm/i915/tc: Factor out tc_phy_verify_legacy_or_dp_alt_mode()
> drm/i915/tc: Add TC PHY hooks to connect/disconnect the PHY
> drm/i915/tc: Fix up the legacy VBT flag only in disconnected mode
> drm/i915/tc: Check TC mode instead of the VBT legacy flag
> drm/i915/tc: Block/unblock TC-cold in the PHY connect/disconnect hooks
> drm/i915/tc: Remove redundant wakeref=0 check from unblock_tc_cold()
> drm/i915/tc: Drop tc_cold_block()/unblock()'s power domain parameter
> drm/i915/tc: Add TC PHY hook to get the TC-cold blocking power domain
> drm/i915/tc: Add asserts in TC PHY hooks that the required power is on
> drm/i915/tc: Add TC PHY hook to init the PHY
> drm/i915/adlp/tc: Use the DE HPD ISR register for hotplug detection
> drm/i915/tc: Get power ref for reading the HPD live status register
> drm/i915/tc: Don't connect the PHY in intel_tc_port_connected()
> drm/i915/adlp/tc: Align the connect/disconnect PHY sequence with bspec
> drm/i915: Move shared DPLL disabling into CRTC disable hook
> drm/i915: Disable DPLLs before disconnecting the TC PHY
> drm/i915: Remove TC PHY disconnect workaround
> drm/i915: Remove the encoder update_prepare()/complete() hooks
> drm/i915/dp_mst: Fix active port PLL selection for secondary MST streams
> drm/i915: Fix PIPEDMC disabling for a bigjoiner configuration
> drm/i915: Add helpers to reference/unreference a DPLL for a CRTC
> drm/i915: Make the CRTC state consistent during sanitize-disabling
> drm/i915: Update connector atomic state before crtc sanitize-disabling
> drm/i915: Separate intel_crtc_disable_noatomic_begin/complete()
> drm/i915: Factor out set_encoder_for_connector()
> drm/i915: Add support for disabling any CRTCs during HW readout/sanitization
> drm/i915/dp: Prevent link training fallback on disconnected port
> drm/i915/dp: Factor out intel_dp_get_active_pipes()
> drm/i915: Factor out a helper for handling atomic modeset locks/state
> drm/i915/tc: Call TypeC port flush_work/cleanup without modeset locks held
> drm/i915/tc: Reset TypeC PHYs left enabled in DP-alt mode after the sink disconnects
>
> Jani Nikula (1):
> drm/i915/tc: switch to intel_de_* register accessors in display code
>
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/display/intel_ddi.c | 186 ++-
> drivers/gpu/drm/i915/display/intel_ddi.h | 6 +
> drivers/gpu/drm/i915/display/intel_display.c | 100 +-
> drivers/gpu/drm/i915/display/intel_display.h | 8 +-
> drivers/gpu/drm/i915/display/intel_display_types.h | 35 +-
> drivers/gpu/drm/i915/display/intel_dmc.c | 24 +
> drivers/gpu/drm/i915/display/intel_dmc.h | 4 +
> drivers/gpu/drm/i915/display/intel_dmc_regs.h | 10 +
> drivers/gpu/drm/i915/display/intel_dp.c | 20 +-
> drivers/gpu/drm/i915/display/intel_dp.h | 3 +
> drivers/gpu/drm/i915/display/intel_dp_aux.c | 15 +-
> .../gpu/drm/i915/display/intel_dp_link_training.c | 10 +
> drivers/gpu/drm/i915/display/intel_dp_mst.c | 22 +
> drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 58 +-
> drivers/gpu/drm/i915/display/intel_dpll_mgr.h | 3 +
> drivers/gpu/drm/i915/display/intel_modeset_lock.c | 50 +
> drivers/gpu/drm/i915/display/intel_modeset_lock.h | 33 +
> drivers/gpu/drm/i915/display/intel_modeset_setup.c | 325 +++-
> drivers/gpu/drm/i915/display/intel_tc.c | 1630 ++++++++++++++------
> drivers/gpu/drm/i915/display/intel_tc.h | 14 +-
> drivers/gpu/drm/i915/i915_driver.c | 16 +
> drivers/gpu/drm/i915/i915_pci.c | 3 -
> drivers/gpu/drm/i915/intel_device_info.h | 1 -
> 24 files changed, 1847 insertions(+), 730 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/display/intel_modeset_lock.c
> create mode 100644 drivers/gpu/drm/i915/display/intel_modeset_lock.h
>
Acked-by: Tim Gardner <tim.gardner at canonical.com>
Backport comments look good. Lets hope testing was sufficient.
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list