mbox series

[00/20] Enable BACO for power savings (v3)

Message ID 20191115165038.56646-1-alexander.deucher@amd.com
Headers show
Series Enable BACO for power savings (v3) | expand

Message

Alex Deucher Nov. 15, 2019, 4:50 p.m. UTC
This patch set enables BACO (Bus Active Chip Off) for
power savings on VI+ asics.  Similar to PowerXpress
and Hybrid Graphics (PX/HG) laptops, we can disable GPUs
at runtime when they are not in use if they support
BACO.  The runtime pm code in amdgpu was originally
developed for PX/HG laptops, so it was pretty entangled
with the vga_switcheroo and ACPI code.  Since the GPU
contains an audio codec for HDMI/DP, there is some
interaction with the hda driver.  I am by no means an
expert on alsa, so any advice on those patches is much
appreciated.  I had to enable runtime pm on the hda
device to allow the GPU to enter runtime pm because
they are linked.

The full tree can be found here:
https://cgit.freedesktop.org/~agd5f/linux/log/?h=baco

TODO:
- Turn off runtime pm when KFD user queues are active

I've tested these pretty extensively on the asics I
have access to.  All seems to work properly.  HDMI
audio works fine with runtime pm both with and without
the GPU BACO stuff.

I'd like to land the the audio patches and the first 15 GPU
patches.  I don't plan to enable this by default
(last patch in the GPU set) until the KFD changes are
in place to properly handle runtime pm, however it can
be enabled via module parameter (runpm=1).

v2:
- Split whitespace changes from baco callback addition
- Fix pci ref counting in px/hg handling in hda driver
- Handle CONFIG_ACPI properly
- Split adding new hda pci ids from adding runpm flag

v3:
- Don't enable BACO on Navi chips yet

Alex Deucher (20):
  drm/amdgpu: add asic callback for BACO support
  drm/amdgpu: add supports_baco callback for soc15 asics. (v2)
  drm/amdgpu: add supports_baco callback for SI asics.
  drm/amdgpu: add supports_baco callback for CIK asics.
  drm/amdgpu: add supports_baco callback for VI asics.
  drm/amdgpu: add supports_baco callback for NV asics.
  drm/amdgpu: add a amdgpu_device_supports_baco helper
  drm/amdgpu: rename amdgpu_device_is_px to amdgpu_device_supports_boco
    (v2)
  drm/amdgpu: add additional boco checks to runtime suspend/resume (v2)
  drm/amdgpu: split swSMU baco_reset into enter and exit
  drm/amdgpu: add helpers for baco entry and exit
  drm/amdgpu: add baco support to runtime suspend/resume
  drm/amdgpu: start to disentangle boco from runtime pm
  drm/amdgpu: disentangle runtime pm and vga_switcheroo
  drm/amdgpu: enable runtime pm on BACO capable boards if runpm=1
  drm/amdgpu/runpm: enable runpm on baco capable VI+ asics (v2)
  ALSA: hda/hdmi - fix vgaswitcheroo detection for AMD
  ALSA: hda/hdmi - Add new pci ids for AMD GPU display audio
  ALSA: hda/hdmi - enable runtime pm for newer AMD display audio
  ALSA: hda/hdmi - enable automatic runtime pm for AMD HDMI codecs by
    default

 drivers/gpu/drm/amd/amdgpu/amdgpu.h           |  11 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    | 106 ++++++++++++++++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c       |  63 ++++++-----
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c       |  21 +++-
 drivers/gpu/drm/amd/amdgpu/cik.c              |  18 +++
 drivers/gpu/drm/amd/amdgpu/nv.c               |  18 ++-
 drivers/gpu/drm/amd/amdgpu/si.c               |   6 +
 drivers/gpu/drm/amd/amdgpu/soc15.c            |  34 +++++-
 drivers/gpu/drm/amd/amdgpu/vi.c               |  22 ++++
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c    |  20 +++-
 drivers/gpu/drm/amd/powerplay/arcturus_ppt.c  |   3 +-
 .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h    |   6 +-
 drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h |   3 +-
 drivers/gpu/drm/amd/powerplay/navi10_ppt.c    |   3 +-
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c     |   9 +-
 drivers/gpu/drm/amd/powerplay/vega20_ppt.c    |   3 +-
 sound/pci/hda/hda_intel.c                     |  80 ++++++++++++-
 sound/pci/hda/patch_hdmi.c                    |   1 +
 18 files changed, 366 insertions(+), 61 deletions(-)