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 -- 2.39.5