[SRU] [PULL] [OEM-6.1] [PATCH 00/65] Fix BIOS IPCS issue

Kai-Heng Feng kai.heng.feng at canonical.com
Tue May 30 23:59:51 UTC 2023


[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.

[Where problems could occur]
The fix is composed of several overhaul, so regression is not unlikely
to happen to i915 GFX driver. To limit the scope of impact, the fix only
targets OEM kernel for now.

---

The following changes since commit edcf03e539941620a169ffdd45d61bbc8c9647e5:

  UBUNTU: Ubuntu-oem-6.1-6.1.0-1014.14 (2023-05-19 07:55:39 +0300)

are available in the Git repository at:

  git+ssh://kaihengfeng@git.launchpad.net/~kaihengfeng/+git/linux ipcs-6.1

for you to fetch changes up to f5ff2f45aee01a79fb59064553408ba2806ed934:

  drm/i915/tc: Reset TypeC PHYs left enabled in DP-alt mode after the sink disconnects (2023-05-30 23:26:28 +0800)

----------------------------------------------------------------
Andrzej Hajda (4):
      drm/i915/display: Use intel_uncore alias if defined
      drm/i915: make intel_uncore_rmw() write unconditionally
      drm/i915: use proper helper for register updates
      drm/i915: fix clear mask in GEN7_MISCCPCTL update

Imre Deak (56):
      drm/i915: Fix TypeC mode initialization during system resume
      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

Ville Syrjälä (4):
      drm/i915: Always initialize dpll.lock
      drm/i915: Nuke intel_get_shared_dpll_id()
      drm/i915: Pimp DPLL ref/unref debugs
      drm/i915: WARN if PLL ref/unref got messed up

 drivers/gpu/drm/i915/Makefile                      |    1 +
 drivers/gpu/drm/i915/display/intel_ddi.c           |  192 ++-
 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 +
 .../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      |   81 +-
 drivers/gpu/drm/i915/display/intel_dpll_mgr.h      |    6 +-
 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            | 1634 ++++++++++++++------
 drivers/gpu/drm/i915/display/intel_tc.h            |   14 +-
 drivers/gpu/drm/i915/i915_driver.c                 |   16 +
 drivers/gpu/drm/i915/i915_irq.c                    |  237 ++-
 drivers/gpu/drm/i915/i915_pci.c                    |    3 -
 drivers/gpu/drm/i915/intel_device_info.h           |    1 -
 drivers/gpu/drm/i915/intel_pm.c                    |   60 +-
 drivers/gpu/drm/i915/intel_uncore.h                |    8 +-
 drivers/gpu/drm/i915/vlv_suspend.c                 |   28 +-
 27 files changed, 1979 insertions(+), 952 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



More information about the kernel-team mailing list