ACK/Cmnt: [SRU] [PULL] [Lunar] [PATCH 00/57] dGPU cannot resume because system firmware stuck in IPCS method Edit

Stefan Bader stefan.bader at canonical.com
Thu Aug 31 13:23:40 UTC 2023


On 04.08.23 04:11, 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
> 
Very grudgingly and only because not resuming is pretty nasty and we get 
the promise this has been tested in the OEM kernel extensively... At 
least the majority of changes are in one file which guessing from its 
name is handling that type C connections.

Acked-by: Stefan Bader <stefan.bader at canonical.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xE8675DEECBEECEA3.asc
Type: application/pgp-keys
Size: 44613 bytes
Desc: OpenPGP public key
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230831/94f8162b/attachment-0001.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20230831/94f8162b/attachment-0001.sig>


More information about the kernel-team mailing list