Convert IFPC-disable into it's own refcnt so that multiple threads can request IFPC to be disabled without stomping on each other.
Extracted out of gen8 GPU state capture series[1], as other than fixing a missing IFPC disable in debugfs state capture path, it is unrelated. [1] https://patchwork.freedesktop.org/series/176505/ v4: - Don't clear GMU_STATUS_OOB_PERF_SET in suspend path. Restore it in hw_init() - Don't require gpu->lock in a6xx_gmu_ifpc_update(), but instead warn if needs_hw_init - Move perfcntr resume to after hw_init() - Link to v3: https://lore.kernel.org/all/[email protected] v3: - Rework IFPC disable harder to play nicer with hw_init(). If we need_hw_init, simply update gmu->status mask and let hw_init() restore the OOB request in a sequence that won't anger the fw. - Link to v2: https://lore.kernel.org/all/[email protected]/ v2: - Fix double acquire of gmu->lock - Fix missing a8xx hw_init() path - Link to v1: https://lore.kernel.org/all/[email protected]/ Rob Clark (6): drm/msm: Hold runpm ref in set_sysprof() drm/msm: Resume perfcntrs after hw_init drm/msm: Rework IFPC disable drm/msm: Add cleanup help for disabling IFPC drm/msm/debugfs: Use cleanup.h for gpu state dump drm/msm: Inhibit IFPC for state snapshot drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 28 ++++++++----------- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 ++++---- drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 2 +- drivers/gpu/drm/msm/adreno/a8xx_gpu.c | 5 ++-- drivers/gpu/drm/msm/adreno/adreno_device.c | 5 +--- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 1 - drivers/gpu/drm/msm/msm_debugfs.c | 32 +++++++++------------- drivers/gpu/drm/msm/msm_gpu.c | 5 +++- drivers/gpu/drm/msm/msm_gpu.h | 30 +++++++++++++++++--- drivers/gpu/drm/msm/msm_perfcntr.c | 7 +---- drivers/gpu/drm/msm/msm_submitqueue.c | 19 +++++++++---- 11 files changed, 78 insertions(+), 67 deletions(-) -- 2.56.0
