diff mbox series

[v4,1/2] drm/i915/display: Introduce new intel_psr_pause/resume function

Message ID 20210608085415.515342-1-gwan-gyeong.mun@intel.com (mailing list archive)
State New, archived
Headers show
Series [v4,1/2] drm/i915/display: Introduce new intel_psr_pause/resume function | expand

Commit Message

Gwan-gyeong Mun June 8, 2021, 8:54 a.m. UTC
This introduces the following function that can exit and activate a psr
source when intel_psr is already enabled.

- intel_psr_pause(): Pause current PSR. It deactivates current psr state.
- intel_psr_resume(): Resume paused PSR. It activates paused psr state.

v2: Address Jose's review comment.
  - Remove unneeded changes around the intel_psr_enable().
  - Add intel_psr_post_exit() which processes waiting until PSR is idle
    and WA for SelectiveFetch.
v3: Address Jose's review comment.
  - Rename intel_psr_post_exit() to intel_psr_wait_exit_locked().
  - Move WA_1408330847 to intel_psr_disable_locked()
  - If the PSR is paused by an explicit intel_psr_paused() call, make the
    intel_psr_flush() not to activate PSR.
v4: Address Jose's review comment.
  - In order to avoid the scenario of PSR is not active but there is a
    scheduled psr->work, it changes the check routine of intel_psr_pause()
    for PSR's enablement from "psr->active" to "psr->enable".

Cc: José Roberto de Souza <jose.souza@intel.com>
Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
---
 .../drm/i915/display/intel_display_types.h    |  1 +
 drivers/gpu/drm/i915/display/intel_psr.c      | 94 ++++++++++++++++---
 drivers/gpu/drm/i915/display/intel_psr.h      |  2 +
 3 files changed, 86 insertions(+), 11 deletions(-)

Comments

Souza, Jose June 8, 2021, 5:25 p.m. UTC | #1
On Tue, 2021-06-08 at 14:08 +0000, Patchwork wrote:
Patch Details
Series: series starting with [v4,1/2] drm/i915/display: Introduce new intel_psr_pause/resume function
URL:    https://patchwork.freedesktop.org/series/91152/
State:  success
Details:        https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/index.html
CI Bug Log - changes from CI_DRM_10188_full -> Patchwork_20308_full
Summary

SUCCESS

No regressions found.

Pushed, thanks for the patches.

Known issues

Here are the changes found in Patchwork_20308_full that come from known issues:

IGT changes
Issues hit

  *   igt@feature_discovery@display-2x:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@feature_discovery@display-2x.html> ([i915#1839])
  *   igt@feature_discovery@psr2:

     *   shard-iclb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb2/igt@feature_discovery@psr2.html> -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb3/igt@feature_discovery@psr2.html> ([i915#658])
  *   igt@gem_create@create-massive:

     *   shard-apl: NOTRUN -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl1/igt@gem_create@create-massive.html> ([i915#3002])
  *   igt@gem_ctx_persistence@idempotent:

     *   shard-snb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-snb6/igt@gem_ctx_persistence@idempotent.html> ([fdo#109271] / [i915#1099]) +4 similar issues
  *   igt@gem_exec_fair@basic-deadline:

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl4/igt@gem_exec_fair@basic-deadline.html> ([i915#2846])
  *   igt@gem_exec_fair@basic-none@vcs1:

     *   shard-iclb: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb2/igt@gem_exec_fair@basic-none@vcs1.html> ([i915#2842])
  *   igt@gem_exec_fair@basic-pace-share@rcs0:

     *   shard-tglb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb5/igt@gem_exec_fair@basic-pace-share@rcs0.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb3/igt@gem_exec_fair@basic-pace-share@rcs0.html> ([i915#2842]) +1 similar issue
  *   igt@gem_exec_fair@basic-pace@vcs0:

     *   shard-glk: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk6/igt@gem_exec_fair@basic-pace@vcs0.html> ([i915#2842]) +1 similar issue
  *   igt@gem_exec_fair@basic-pace@vcs1:

     *   shard-kbl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-kbl1/igt@gem_exec_fair@basic-pace@vcs1.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl4/igt@gem_exec_fair@basic-pace@vcs1.html> ([i915#2842]) +2 similar issues
  *   igt@gem_exec_fair@basic-pace@vecs0:

     *   shard-kbl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-kbl1/igt@gem_exec_fair@basic-pace@vecs0.html> -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl4/igt@gem_exec_fair@basic-pace@vecs0.html> ([fdo#109271]) +1 similar issue
  *   igt@gem_exec_fair@basic-throttle@rcs0:

     *   shard-glk: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk2/igt@gem_exec_fair@basic-throttle@rcs0.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk2/igt@gem_exec_fair@basic-throttle@rcs0.html> ([i915#2842])
  *   igt@gem_exec_reloc@basic-wide-active@rcs0:

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl4/igt@gem_exec_reloc@basic-wide-active@rcs0.html> ([i915#2389]) +4 similar issues
  *   igt@gem_huc_copy@huc-copy:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@gem_huc_copy@huc-copy.html> ([fdo#109271] / [i915#2190])
  *   igt@gem_mmap_gtt@cpuset-big-copy-odd:

     *   shard-iclb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb5/igt@gem_mmap_gtt@cpuset-big-copy-odd.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb2/igt@gem_mmap_gtt@cpuset-big-copy-odd.html> ([i915#2428])
  *   igt@gem_mmap_gtt@cpuset-medium-copy:

     *   shard-iclb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb7/igt@gem_mmap_gtt@cpuset-medium-copy.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb1/igt@gem_mmap_gtt@cpuset-medium-copy.html> ([i915#307])
  *   igt@gem_softpin@noreloc-s3:

     *   shard-kbl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-kbl4/igt@gem_softpin@noreloc-s3.html> -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl6/igt@gem_softpin@noreloc-s3.html> ([i915#180]) +1 similar issue
  *   igt@gem_userptr_blits@dmabuf-sync:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl2/igt@gem_userptr_blits@dmabuf-sync.html> ([fdo#109271] / [i915#3323])

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@gem_userptr_blits@dmabuf-sync.html> ([i915#3323])

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk7/igt@gem_userptr_blits@dmabuf-sync.html> ([fdo#109271] / [i915#3323])

  *   igt@gem_userptr_blits@vma-merge:

     *   shard-apl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl1/igt@gem_userptr_blits@vma-merge.html> ([i915#3318])

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl3/igt@gem_userptr_blits@vma-merge.html> ([i915#3318])

  *   igt@gen9_exec_parse@batch-invalid-length:

     *   shard-snb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-snb2/igt@gen9_exec_parse@batch-invalid-length.html> ([fdo#109271]) +391 similar issues
  *   igt@i915_pm_dc@dc6-dpms:

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl4/igt@i915_pm_dc@dc6-dpms.html> ([i915#454])
  *   igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html> ([fdo#109271] / [i915#1937])
  *   igt@i915_pm_rpm@dpms-non-lpsp:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@i915_pm_rpm@dpms-non-lpsp.html> ([fdo#110892])
  *   igt@i915_pm_rpm@modeset-pc8-residency-stress:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@i915_pm_rpm@modeset-pc8-residency-stress.html> ([fdo#109271]) +117 similar issues
  *   igt@i915_suspend@debugfs-reader:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl2/igt@i915_suspend@debugfs-reader.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl2/igt@i915_suspend@debugfs-reader.html> ([i915#198])
  *   igt@i915_suspend@forcewake:

     *   shard-apl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-apl2/igt@i915_suspend@forcewake.html> -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl1/igt@i915_suspend@forcewake.html> ([i915#180]) +1 similar issue
  *   igt@kms_chamelium@vga-hpd-after-suspend:

     *   shard-skl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl3/igt@kms_chamelium@vga-hpd-after-suspend.html> ([fdo#109271] / [fdo#111827]) +5 similar issues
  *   igt@kms_chamelium@vga-hpd-with-enabled-mode:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_chamelium@vga-hpd-with-enabled-mode.html> ([fdo#109284] / [fdo#111827]) +4 similar issues
  *   igt@kms_color_chamelium@pipe-a-ctm-0-5:

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk6/igt@kms_color_chamelium@pipe-a-ctm-0-5.html> ([fdo#109271] / [fdo#111827]) +7 similar issues
  *   igt@kms_color_chamelium@pipe-b-ctm-0-25:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl7/igt@kms_color_chamelium@pipe-b-ctm-0-25.html> ([fdo#109271] / [fdo#111827]) +15 similar issues
  *   igt@kms_color_chamelium@pipe-b-ctm-0-5:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@kms_color_chamelium@pipe-b-ctm-0-5.html> ([fdo#109271] / [fdo#111827]) +8 similar issues
  *   igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes:

     *   shard-snb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-snb2/igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes.html> ([fdo#109271] / [fdo#111827]) +21 similar issues
  *   igt@kms_content_protection@atomic:

     *   shard-kbl: NOTRUN -> TIMEOUT<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl7/igt@kms_content_protection@atomic.html> ([i915#1319])
  *   igt@kms_content_protection@legacy:

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk6/igt@kms_content_protection@legacy.html> ([fdo#109271]) +45 similar issues
  *   igt@kms_cursor_crc@pipe-a-cursor-512x512-rapid-movement:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_cursor_crc@pipe-a-cursor-512x512-rapid-movement.html> ([fdo#109278] / [fdo#109279]) +1 similar issue
  *   igt@kms_cursor_crc@pipe-c-cursor-dpms:

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl7/igt@kms_cursor_crc@pipe-c-cursor-dpms.html> ([i915#3444])
  *   igt@kms_cursor_crc@pipe-c-cursor-suspend:

     *   shard-apl: NOTRUN -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@kms_cursor_crc@pipe-c-cursor-suspend.html> ([i915#180])
  *   igt@kms_cursor_legacy@cursorb-vs-flipa-legacy:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_cursor_legacy@cursorb-vs-flipa-legacy.html> ([fdo#109274] / [fdo#109278]) +1 similar issue
  *   igt@kms_cursor_legacy@flip-vs-cursor-varying-size:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl3/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl2/igt@kms_cursor_legacy@flip-vs-cursor-varying-size.html> ([i915#2346])
  *   igt@kms_flip@2x-flip-vs-expired-vblank:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_flip@2x-flip-vs-expired-vblank.html> ([fdo#109274])
  *   igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2:

     *   shard-glk: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk7/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html> ([i915#79])
  *   igt@kms_flip@flip-vs-expired-vblank@a-edp1:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl6/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl6/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html> ([i915#79]) +1 similar issue
  *   igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:

     *   shard-kbl: NOTRUN -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl3/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html> ([i915#180]) +2 similar issues
  *   igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile.html> ([fdo#109271] / [i915#2642])

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile.html> ([fdo#109271] / [i915#2642])

  *   igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt:

     *   shard-skl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl3/igt@kms_frontbuffer_tracking@fbcpsr-1p-shrfb-fliptrack-mmap-gtt.html> ([fdo#109271]) +46 similar issues
  *   igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-move.html> ([fdo#109280]) +6 similar issues
  *   igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl2/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-wc.html> ([fdo#109271]) +124 similar issues
  *   igt@kms_frontbuffer_tracking@psr-suspend:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl1/igt@kms_frontbuffer_tracking@psr-suspend.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl1/igt@kms_frontbuffer_tracking@psr-suspend.html> ([i915#123])
  *   igt@kms_hdr@bpc-switch-dpms:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl6/igt@kms_hdr@bpc-switch-dpms.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl7/igt@kms_hdr@bpc-switch-dpms.html> ([i915#1188]) +1 similar issue
  *   igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl1/igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d.html> ([fdo#109271] / [i915#533])

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl6/igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d.html> ([fdo#109271] / [i915#533]) +2 similar issues

  *   igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence:

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk7/igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence.html> ([fdo#109271] / [i915#533])
  *   igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:

     *   shard-skl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl2/igt@kms_plane_alpha_blend@pipe-a-alpha-7efc.html> ([fdo#108145] / [i915#265])
  *   igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb:

     *   shard-glk: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk7/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html> ([i915#265])

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl2/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html> ([i915#265])

  *   igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:

     *   shard-skl: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl4/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html> -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-coverage-7efc.html> ([fdo#108145] / [i915#265])
  *   igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:

     *   shard-kbl: NOTRUN -> FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl7/igt@kms_plane_alpha_blend@pipe-c-alpha-7efc.html> ([fdo#108145] / [i915#265])
  *   igt@kms_plane_alpha_blend@pipe-d-constant-alpha-max:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_plane_alpha_blend@pipe-d-constant-alpha-max.html> ([fdo#109278]) +5 similar issues
  *   igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-2:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-2.html> ([fdo#109271] / [i915#658]) +4 similar issues
  *   igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-3:

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk7/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-3.html> ([fdo#109271] / [i915#658])

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-3.html> ([i915#658])

  *   igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl3/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3.html> ([fdo#109271] / [i915#658]) +4 similar issues
  *   igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-1:

     *   shard-skl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl3/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-1.html> ([fdo#109271] / [i915#658])
  *   igt@kms_psr@psr2_cursor_plane_onoff:

     *   shard-iclb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb2/igt@kms_psr@psr2_cursor_plane_onoff.html> -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb3/igt@kms_psr@psr2_cursor_plane_onoff.html> ([fdo#109441]) +1 similar issue
  *   igt@kms_psr@psr2_primary_mmap_cpu:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_psr@psr2_primary_mmap_cpu.html> ([fdo#109441])
  *   igt@kms_vblank@pipe-d-wait-idle:

     *   shard-skl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl3/igt@kms_vblank@pipe-d-wait-idle.html> ([fdo#109271] / [i915#533]) +1 similar issue
  *   igt@kms_writeback@writeback-fb-id:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl7/igt@kms_writeback@writeback-fb-id.html> ([fdo#109271] / [i915#2437])
  *   igt@nouveau_crc@ctx-flip-threshold-reset-after-capture:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@nouveau_crc@ctx-flip-threshold-reset-after-capture.html> ([i915#2530])
  *   igt@perf@gen12-mi-rpc:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@perf@gen12-mi-rpc.html> ([fdo#109289])
  *   igt@prime_udl:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@prime_udl.html> ([fdo#109291])
  *   igt@prime_vgem@sync@rcs0:

     *   shard-iclb: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb1/igt@prime_vgem@sync@rcs0.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb3/igt@prime_vgem@sync@rcs0.html> ([i915#409])
  *   igt@sysfs_clients@fair-7:

     *   shard-iclb: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@sysfs_clients@fair-7.html> ([i915#2994]) +1 similar issue
  *   igt@sysfs_clients@recycle-many:

     *   shard-glk: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk7/igt@sysfs_clients@recycle-many.html> ([fdo#109271] / [i915#2994]) +1 similar issue
  *   igt@sysfs_clients@sema-25:

     *   shard-kbl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl3/igt@sysfs_clients@sema-25.html> ([fdo#109271] / [i915#2994]) +3 similar issues
  *   igt@sysfs_clients@sema-50:

     *   shard-apl: NOTRUN -> SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-apl2/igt@sysfs_clients@sema-50.html> ([fdo#109271] / [i915#2994]) +1 similar issue

Possible fixes

  *   igt@gem_create@create-clear:

     *   shard-glk: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk1/igt@gem_create@create-clear.html> ([i915#1888] / [i915#3160]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk5/igt@gem_create@create-clear.html>
  *   igt@gem_eio@unwedge-stress:

     *   shard-tglb: TIMEOUT<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb1/igt@gem_eio@unwedge-stress.html> ([i915#2369] / [i915#3063]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb8/igt@gem_eio@unwedge-stress.html>
  *   igt@gem_exec_endless@dispatch@rcs0:

     *   shard-iclb: INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb3/igt@gem_exec_endless@dispatch@rcs0.html> ([i915#2502]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb7/igt@gem_exec_endless@dispatch@rcs0.html>
  *   igt@gem_exec_fair@basic-deadline:

     *   shard-glk: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk6/igt@gem_exec_fair@basic-deadline.html> ([i915#2846]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk6/igt@gem_exec_fair@basic-deadline.html>
  *   igt@gem_exec_fair@basic-pace-share@rcs0:

     *   shard-glk: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk8/igt@gem_exec_fair@basic-pace-share@rcs0.html> ([i915#2842]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html>
  *   igt@gem_exec_fair@basic-pace@vcs0:

     *   shard-tglb: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb2/igt@gem_exec_fair@basic-pace@vcs0.html> ([i915#2842]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb3/igt@gem_exec_fair@basic-pace@vcs0.html>
  *   igt@gem_mmap_gtt@big-copy-xy:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl9/igt@gem_mmap_gtt@big-copy-xy.html> ([i915#307]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl4/igt@gem_mmap_gtt@big-copy-xy.html>
  *   igt@gem_vm_create@destroy-race:

     *   shard-tglb: TIMEOUT<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb3/igt@gem_vm_create@destroy-race.html> ([i915#2795]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb5/igt@gem_vm_create@destroy-race.html>
  *   igt@gen9_exec_parse@allowed-all:

     *   shard-glk: DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk5/igt@gen9_exec_parse@allowed-all.html> ([i915#1436] / [i915#716]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk6/igt@gen9_exec_parse@allowed-all.html>
  *   igt@kms_async_flips@alternate-sync-async-flip:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl7/igt@kms_async_flips@alternate-sync-async-flip.html> ([i915#2521]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl9/igt@kms_async_flips@alternate-sync-async-flip.html>
  *   igt@kms_cursor_crc@pipe-b-cursor-suspend:

     *   shard-iclb: INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb3/igt@kms_cursor_crc@pipe-b-cursor-suspend.html> ([i915#1185] / [i915#2405]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb8/igt@kms_cursor_crc@pipe-b-cursor-suspend.html>
  *   igt@kms_cursor_legacy@flip-vs-cursor-atomic:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl5/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html> ([i915#2346]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html> +1 similar issue
  *   igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl7/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled.html> -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl7/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-wc-ytiled.html>
  *   igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-hdmi-a1-hdmi-a2:

     *   shard-glk: DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-hdmi-a1-hdmi-a2.html> ([i915#118] / [i915#95]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk3/igt@kms_flip@2x-flip-vs-absolute-wf_vblank@ab-hdmi-a1-hdmi-a2.html> +2 similar issues
  *   igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:

     *   shard-tglb: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb5/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html> ([i915#79]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb6/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html>
  *   igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu:

     *   shard-tglb: DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-tglb5/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu.html> ([i915#2868]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-tglb6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-mmap-cpu.html> +1 similar issue
  *   igt@kms_frontbuffer_tracking@fbc-suspend:

     *   shard-kbl: DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-kbl4/igt@kms_frontbuffer_tracking@fbc-suspend.html> ([i915#180]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl6/igt@kms_frontbuffer_tracking@fbc-suspend.html> +11 similar issues

     *   shard-glk: DMESG-FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-glk7/igt@kms_frontbuffer_tracking@fbc-suspend.html> ([i915#118] / [i915#49] / [i915#95]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-glk3/igt@kms_frontbuffer_tracking@fbc-suspend.html>

  *   igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl7/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt.html> ([i915#49]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl7/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt.html>
  *   igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl4/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html> ([fdo#108145] / [i915#265]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl9/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html> +2 similar issues
  *   igt@kms_psr@psr2_sprite_mmap_gtt:

     *   shard-iclb: SKIP<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-iclb3/igt@kms_psr@psr2_sprite_mmap_gtt.html> ([fdo#109441]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html> +2 similar issues
  *   igt@kms_vblank@pipe-a-ts-continuation-suspend:

     *   shard-kbl: DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-kbl4/igt@kms_vblank@pipe-a-ts-continuation-suspend.html> ([i915#180] / [i915#295]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-kbl2/igt@kms_vblank@pipe-a-ts-continuation-suspend.html>
  *   igt@perf@polling:

     *   shard-skl: FAIL<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl4/igt@perf@polling.html> ([i915#1542]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-skl5/igt@perf@polling.html> +1 similar issue
  *   igt@prime_vgem@sync@rcs0:

     *   shard-skl: INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10188/shard-skl9/igt@prime_vgem@sync@rcs0.html> ([i915#409]) -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_20308/shard-s>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index b8d1f702d808..ee7cbdd7db87 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1482,6 +1482,7 @@  struct intel_psr {
 	bool sink_support;
 	bool source_support;
 	bool enabled;
+	bool paused;
 	enum pipe pipe;
 	enum transcoder transcoder;
 	bool active;
diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 000e1ffe8c05..77865cf6641f 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1113,6 +1113,7 @@  static void intel_psr_enable_locked(struct intel_dp *intel_dp,
 	intel_psr_enable_sink(intel_dp);
 	intel_psr_enable_source(intel_dp);
 	intel_dp->psr.enabled = true;
+	intel_dp->psr.paused = false;
 
 	intel_psr_activate(intel_dp);
 }
@@ -1182,22 +1183,12 @@  static void intel_psr_exit(struct intel_dp *intel_dp)
 	intel_dp->psr.active = false;
 }
 
-static void intel_psr_disable_locked(struct intel_dp *intel_dp)
+static void intel_psr_wait_exit_locked(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	i915_reg_t psr_status;
 	u32 psr_status_mask;
 
-	lockdep_assert_held(&intel_dp->psr.lock);
-
-	if (!intel_dp->psr.enabled)
-		return;
-
-	drm_dbg_kms(&dev_priv->drm, "Disabling PSR%s\n",
-		    intel_dp->psr.psr2_enabled ? "2" : "1");
-
-	intel_psr_exit(intel_dp);
-
 	if (intel_dp->psr.psr2_enabled) {
 		psr_status = EDP_PSR2_STATUS(intel_dp->psr.transcoder);
 		psr_status_mask = EDP_PSR2_STATUS_STATE_MASK;
@@ -1210,6 +1201,22 @@  static void intel_psr_disable_locked(struct intel_dp *intel_dp)
 	if (intel_de_wait_for_clear(dev_priv, psr_status,
 				    psr_status_mask, 2000))
 		drm_err(&dev_priv->drm, "Timed out waiting PSR idle state\n");
+}
+
+static void intel_psr_disable_locked(struct intel_dp *intel_dp)
+{
+	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
+
+	lockdep_assert_held(&intel_dp->psr.lock);
+
+	if (!intel_dp->psr.enabled)
+		return;
+
+	drm_dbg_kms(&dev_priv->drm, "Disabling PSR%s\n",
+		    intel_dp->psr.psr2_enabled ? "2" : "1");
+
+	intel_psr_exit(intel_dp);
+	intel_psr_wait_exit_locked(intel_dp);
 
 	/* WA 1408330847 */
 	if (intel_dp->psr.psr2_sel_fetch_enabled &&
@@ -1254,6 +1261,61 @@  void intel_psr_disable(struct intel_dp *intel_dp,
 	cancel_delayed_work_sync(&intel_dp->psr.dc3co_work);
 }
 
+/**
+ * intel_psr_pause - Pause PSR
+ * @intel_dp: Intel DP
+ *
+ * This function need to be called after enabling psr.
+ */
+void intel_psr_pause(struct intel_dp *intel_dp)
+{
+	struct intel_psr *psr = &intel_dp->psr;
+
+	if (!CAN_PSR(intel_dp))
+		return;
+
+	mutex_lock(&psr->lock);
+
+	if (!psr->enabled) {
+		mutex_unlock(&psr->lock);
+		return;
+	}
+
+	intel_psr_exit(intel_dp);
+	intel_psr_wait_exit_locked(intel_dp);
+	psr->paused = true;
+
+	mutex_unlock(&psr->lock);
+
+	cancel_work_sync(&psr->work);
+	cancel_delayed_work_sync(&psr->dc3co_work);
+}
+
+/**
+ * intel_psr_resume - Resume PSR
+ * @intel_dp: Intel DP
+ *
+ * This function need to be called after pausing psr.
+ */
+void intel_psr_resume(struct intel_dp *intel_dp)
+{
+	struct intel_psr *psr = &intel_dp->psr;
+
+	if (!CAN_PSR(intel_dp))
+		return;
+
+	mutex_lock(&psr->lock);
+
+	if (!psr->paused)
+		goto unlock;
+
+	psr->paused = false;
+	intel_psr_activate(intel_dp);
+
+unlock:
+	mutex_unlock(&psr->lock);
+}
+
 static void psr_force_hw_tracking_exit(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
@@ -1908,6 +1970,16 @@  void intel_psr_flush(struct drm_i915_private *dev_priv,
 			INTEL_FRONTBUFFER_ALL_MASK(intel_dp->psr.pipe);
 		intel_dp->psr.busy_frontbuffer_bits &= ~pipe_frontbuffer_bits;
 
+		/*
+		 * If the PSR is paused by an explicit intel_psr_paused() call,
+		 * we have to ensure that the PSR is not activated until
+		 * intel_psr_resume() is called.
+		 */
+		if (intel_dp->psr.paused) {
+			mutex_unlock(&intel_dp->psr.lock);
+			continue;
+		}
+
 		/* By definition flush = invalidate + flush */
 		if (pipe_frontbuffer_bits)
 			psr_force_hw_tracking_exit(intel_dp);
diff --git a/drivers/gpu/drm/i915/display/intel_psr.h b/drivers/gpu/drm/i915/display/intel_psr.h
index e3db85e97f4c..641521b101c8 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.h
+++ b/drivers/gpu/drm/i915/display/intel_psr.h
@@ -51,5 +51,7 @@  void intel_psr2_program_plane_sel_fetch(struct intel_plane *plane,
 					const struct intel_crtc_state *crtc_state,
 					const struct intel_plane_state *plane_state,
 					int color_plane);
+void intel_psr_pause(struct intel_dp *intel_dp);
+void intel_psr_resume(struct intel_dp *intel_dp);
 
 #endif /* __INTEL_PSR_H__ */