mbox series

[0/6] drm/i915/display: add display specific runtime PM interface

Message ID cover.1741694400.git.jani.nikula@intel.com (mailing list archive)
Headers show
Series drm/i915/display: add display specific runtime PM interface | expand

Message

Jani Nikula March 11, 2025, 12:05 p.m. UTC
Add an abstracted display runtime PM interface to hide i915 and xe
specific details, and remove the xe compat intel_runtime_pm.h. We can
reduce direct i915 accesses from display all over the place.

Text size remains roughly the same for both i915 and xe; here's the
bloat-o-meter results for i915.ko. Presumably the reduction in existing
code is due to fewer display->i915->runtime_pm pointer chases and less
inlining, at the cost of an extra call or two.

BR,
Jani.

add/remove: 22/0 grow/shrink: 5/34 up/down: 722/-1035 (-313)
Function                                     old     new   delta
assert_display_rpm_held                        -     162    +162
intel_fbdev_driver_fbdev_probe               890     982     +92
i915_lpsp_status                             287     336     +49
intel_display_rpm_suspended                    -      46     +46
intel_display_rpm_assert_unblock               -      24     +24
intel_display_rpm_assert_block                 -      24     +24
intel_display_rpm_put_unchecked                -      20     +20
intel_display_rpm_put_raw                      -      20     +20
intel_display_rpm_put                          -      20     +20
intel_display_rpm_get_raw                      -      20     +20
intel_display_rpm_get_noresume                 -      20     +20
intel_display_rpm_get_if_in_use                -      20     +20
intel_display_rpm_get                          -      20     +20
__pfx_intel_display_rpm_suspended              -      16     +16
__pfx_intel_display_rpm_put_unchecked          -      16     +16
__pfx_intel_display_rpm_put_raw                -      16     +16
__pfx_intel_display_rpm_put                    -      16     +16
__pfx_intel_display_rpm_get_raw                -      16     +16
__pfx_intel_display_rpm_get_noresume           -      16     +16
__pfx_intel_display_rpm_get_if_in_use          -      16     +16
__pfx_intel_display_rpm_get                    -      16     +16
__pfx_intel_display_rpm_assert_unblock         -      16     +16
__pfx_intel_display_rpm_assert_block           -      16     +16
__pfx_assert_display_rpm_held                  -      16     +16
skl_watermark_ipc_status_write               208     212      +4
intel_fb_pin_to_ggtt                        1208    1211      +3
intel_dpt_pin_to_ggtt                        823     825      +2
i915_edp_psr_debug_set                       300     299      -1
intel_dsb_prepare                            447     445      -2
__already_done                               179     176      -3
intel_power_domains_resume                   215     208      -7
intel_power_domains_disable                  175     168      -7
intel_display_power_put_async_work           368     361      -7
intel_display_power_get_in_set               189     182      -7
intel_hdcp1_enable                          1066    1056     -10
intel_display_power_get                       97      87     -10
intel_power_domains_enable                   102      91     -11
intel_display_power_put                       84      73     -11
intel_bios_get_vbt                           521     510     -11
gen11_display_irq_handler                    260     249     -11
intel_atomic_commit                          699     686     -13
intel_power_domains_driver_remove            269     255     -14
intel_display_power_grab_async_put_ref       299     285     -14
intel_dmc_debugfs_status_show               1386    1371     -15
intel_display_power_flush_work               281     264     -17
intel_display_power_get_if_enabled           174     155     -19
hsw_ips_debugfs_status_show                  278     259     -19
__intel_display_power_is_enabled             145     125     -20
intel_power_domains_suspend                  490     467     -23
release_async_put_domains                    135     111     -24
intel_fbc_debugfs_status_show                386     362     -24
intel_psr_status                            2010    1985     -25
intel_display_power_put_mask_in_set          241     215     -26
intel_dp_hpd_pulse                          1664    1634     -30
intel_backlight_device_get_brightness        328     297     -31
__intel_display_power_put_async              351     320     -31
intel_power_domains_init_hw                 1756    1724     -32
i915_display_info                           2490    2458     -32
intel_atomic_commit_tail                    5991    5829    -162
intel_dmc_load_program                       978     806    -172
gen9_enable_dc5                              679     485    -194
Total: Before=2876432, After=2876119, chg -0.01%


Jani Nikula (6):
  drm/i915/display: add display specific runtime PM wrappers
  drm/i915/display: conversions to with_intel_display_rpm()
  drm/i915/display: use display runtime PM interfaces for for atomic
    state
  drm/i915/display: convert to display runtime PM interfaces
  drm/i915/power: convert to display runtime PM interfaces
  drm/xe/compat: remove intel_runtime_pm.h

 drivers/gpu/drm/i915/Makefile                 |  1 +
 drivers/gpu/drm/i915/display/hsw_ips.c        |  8 +-
 .../gpu/drm/i915/display/intel_backlight.c    |  5 +-
 drivers/gpu/drm/i915/display/intel_bios.c     |  6 +-
 drivers/gpu/drm/i915/display/intel_display.c  | 12 +--
 .../drm/i915/display/intel_display_debugfs.c  | 17 ++---
 .../gpu/drm/i915/display/intel_display_irq.c  |  5 +-
 .../drm/i915/display/intel_display_power.c    | 63 +++++++--------
 .../i915/display/intel_display_power_well.c   |  4 +-
 .../gpu/drm/i915/display/intel_display_rpm.c  | 68 +++++++++++++++++
 .../gpu/drm/i915/display/intel_display_rpm.h  | 37 +++++++++
 .../drm/i915/display/intel_display_types.h    |  2 +-
 drivers/gpu/drm/i915/display/intel_dmc.c      |  9 ++-
 drivers/gpu/drm/i915/display/intel_dp.c       |  5 +-
 drivers/gpu/drm/i915/display/intel_dpt.c      |  7 +-
 drivers/gpu/drm/i915/display/intel_dsb.c      | 17 +++--
 drivers/gpu/drm/i915/display/intel_fb_pin.c   |  7 +-
 drivers/gpu/drm/i915/display/intel_fbc.c      |  8 +-
 drivers/gpu/drm/i915/display/intel_fbdev.c    | 11 ++-
 drivers/gpu/drm/i915/display/intel_hdcp.c     |  5 +-
 drivers/gpu/drm/i915/display/intel_hotplug.c  |  8 +-
 drivers/gpu/drm/i915/display/intel_psr.c      | 17 ++---
 drivers/gpu/drm/i915/display/skl_watermark.c  |  9 ++-
 drivers/gpu/drm/xe/Makefile                   |  1 +
 .../gpu/drm/xe/compat-i915-headers/i915_drv.h |  1 -
 .../xe/compat-i915-headers/intel_runtime_pm.h | 76 -------------------
 drivers/gpu/drm/xe/display/xe_display_rpm.c   | 71 +++++++++++++++++
 27 files changed, 287 insertions(+), 193 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/display/intel_display_rpm.c
 create mode 100644 drivers/gpu/drm/i915/display/intel_display_rpm.h
 delete mode 100644 drivers/gpu/drm/xe/compat-i915-headers/intel_runtime_pm.h
 create mode 100644 drivers/gpu/drm/xe/display/xe_display_rpm.c