From: Boyuan Zhang <boyuan.zhang@xxxxxxx> Previously, all vcn instance will be powered on/off at the same time even only one of the instance requests power status change. This patch set enables vcn to ONLY power on/off the instance that requires power status change. Other vcn instances will remain the original power status. v2: complete re-work for all PM changes as suggested-by Christian König and Alex Deucher. Adding instance to all existing functions, instead of create new functions. Remove all duplicated PM functions in previous patch set. Use a new logic to track instance for ip_block with same type as suggested by Alex. Also, fix wrong ip block index and remove redundant logic suggested by Christian. Finally rebase all patches based on Sunil's ip block changes. Patch 1-6 are SMU changes to only power ON/OFF given VCN instance. v2: Remove all duplicated PM functions in v1. Patch 7 is VCN change to separate gating status for each VCN instance. v2: Remove redundant logic. Patch 8 is VCN change to handle idle work separately for each VCN instance. Patch 9 is to pass ip_block in set_powergating_state() callback function. v2: fix wrong ip block index for AMD_IP_BLOCK_TYPE_GFX Patch 10 is to track VCN instance in VCN ip_block. v2: use a new logic to track vcn instance Patch 11 is to set_powergating_state by instance in amdgpu_device. Patch 12-17 are to handle ip callback functions separately for each VCN instance, so that only the given instance will be powered on/off. Patch 18 is to set powergating state by VCN instance in amdgpu_vcn. Boyuan Zhang (18): drm/amd/pm: add inst to dpm_set_vcn_enable drm/amd/pm: power up or down vcn by instance drm/amd/pm: add inst to smu_dpm_set_vcn_enable drm/amd/pm: add inst to set_powergating_by_smu drm/amd/pm: add inst to amdgpu_dpm_set_powergating_by_smu add inst to amdgpu_dpm_enable_vcn drm/amdgpu: pass ip_block in set_powergating_state drm/amdgpu: track instances of the same IP block drm/amdgpu: add set_powergating_state_instance drm/amdgpu/vcn: separate gating state by instance drm/amdgpu: power vcn 2_5 by instance drm/amdgpu: power vcn 3_0 by instance drm/amdgpu: power vcn 4_0 by instance drm/amdgpu: power vcn 4_0_3 by instance drm/amdgpu: power vcn 4_0_5 by instance drm/amdgpu: power vcn 5_0_0 by instance drm/amdgpu/vcn: separate idle work by instance drm/amdgpu: set powergating state by vcn instance drivers/gpu/drm/amd/amdgpu/amdgpu.h | 5 + drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c | 18 +- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 5 +- drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 68 +- drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 19 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 +- drivers/gpu/drm/amd/amdgpu/amdgpu_isp.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 82 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 6 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_vpe.c | 4 +- drivers/gpu/drm/amd/amdgpu/cik.c | 2 +- drivers/gpu/drm/amd/amdgpu/cik_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 2 +- drivers/gpu/drm/amd/amdgpu/cz_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 8 +- drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 6 +- drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/iceland_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/ih_v6_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/ih_v6_1.c | 4 +- drivers/gpu/drm/amd/amdgpu/ih_v7_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 10 +- drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c | 10 +- drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c | 10 +- drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c | 10 +- drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c | 8 +- drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c | 10 +- drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c | 10 +- drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/navi10_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/nv.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 8 +- drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c | 2 +- drivers/gpu/drm/amd/amdgpu/si.c | 2 +- drivers/gpu/drm/amd/amdgpu/si_dma.c | 4 +- drivers/gpu/drm/amd/amdgpu/si_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/soc15.c | 2 +- drivers/gpu/drm/amd/amdgpu/soc21.c | 4 +- drivers/gpu/drm/amd/amdgpu/soc24.c | 4 +- drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c | 2 +- drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 4 +- drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/vce_v2_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/vce_v4_0.c | 4 +- drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c | 36 +- drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c | 23 +- drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c | 593 +++++++++-------- drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 610 +++++++++--------- drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c | 541 ++++++++-------- drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c | 476 +++++++------- drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c | 549 ++++++++-------- drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c | 459 +++++++------ drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 2 +- drivers/gpu/drm/amd/amdgpu/vi.c | 2 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- drivers/gpu/drm/amd/include/amd_shared.h | 2 +- .../gpu/drm/amd/include/kgd_pp_interface.h | 4 +- drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 49 +- drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h | 3 +- drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c | 6 +- drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 2 +- .../gpu/drm/amd/pm/powerplay/amd_powerplay.c | 6 +- drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 59 +- drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | 4 +- drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h | 3 +- drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h | 3 +- .../gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 4 +- .../gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 4 +- .../amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 24 +- .../gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c | 4 +- .../gpu/drm/amd/pm/swsmu/smu12/renoir_ppt.c | 4 +- .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 19 +- .../drm/amd/pm/swsmu/smu13/smu_v13_0_5_ppt.c | 4 +- .../drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c | 4 +- .../gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c | 38 +- 104 files changed, 2053 insertions(+), 1929 deletions(-) -- 2.34.1