AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Christian König" <christian.koenig@amd.com>
To: boyuan.zhang@amd.com, amd-gfx@lists.freedesktop.org,
	leo.liu@amd.com, alexander.deucher@amd.com, "Khatri,
	Sunil" <Sunil.Khatri@amd.com>
Subject: Re: [PATCH 00/32] Separating vcn power management by instance
Date: Tue, 22 Oct 2024 08:25:54 +0200	[thread overview]
Message-ID: <f8811d12-bb61-4a7c-9d85-2a5e7d98ccc0@amd.com> (raw)
In-Reply-To: <20241017132053.53214-1-boyuan.zhang@amd.com>

Patches #1-#5, #7, #8, #32 are Acked-by: Christian König 
<christian.koenig@amd.com>

Patches #9 - #19, #27 are Reviewed-by: Christian König 
<christian.koenig@amd.com>

Patch #6 the drm/amdgpu prefix is missing from the subject line, apart 
from that the patch is Reviewed-by: Christian König 
<christian.koenig@amd.com>

For patches #20-#26 I'm not sure if those won't break the driver in 
between. Alex what do you think?

Patches #28 and #29 look good to me as well, but I leave the review to 
Sunil he wrote that code and should know it best.

Patch #30:

+	int ret = 0;

...
+    ret = SOC15_WAIT_ON_RREG(VCN, inst, mmUVD_STATUS, UVD_STATUS__IDLE,


That will get you a warning for an unneeded local variable 
initialization from the automated checkers.

The init was only necessary because we previously had the loop over all 
instances here.

Patch #31:

int inst = ip_block->instance;
int ret = 1;

if (adev->vcn.harvest_config & (1 << inst))
     return ret;

ret &= (RREG32_SOC15(VCN, inst, mmUVD_STATUS) == UVD_STATUS__IDLE);

return ret;

That code looks really strange now, maybe drop the local variable ret.

Regards,
Christian

Am 17.10.24 um 15:20 schrieb boyuan.zhang@amd.com:
> From: Boyuan Zhang <boyuan.zhang@amd.com>
>
> 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.
>
> v4:
> code polishing and minor fixes.
>
> v3:
> move all of the per instance variables from struct amdgpu_vcn to
> struct amdgpu_vcn_inst. (patch 10 - 11)
>
> update amdgpu_device_ip_set_powergating_state() to take the instance as a
> new parameter, remove the duplicated function in v2. (patch 19)
>
> update all amdgpu_vcn_* helpers to handle vcn instance. All functions
> are now only handle the given vcn instance. (patch 20 - 26)
>
> update all vcn ip callback functions to handle vcn instance. All functions
> are now only handle the given vcn instance. (patch 27 - 32)
>
>
> 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.
>
> Patch 7-8 pass ip_block instead of adev pointer for set_powergating_state,
> set_clockgating_state, and is_idle
>
> Patch 9 is to track VCN instance in VCN ip_block.
>
> Patch 10 move all of the per instance variables from struct amdgpu_vcn to
> struct amdgpu_vcn_inst.
>
> Patch 11  VCN change to separate gating status for each VCN instance.
>
> 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 VCN change to handle idle work separately for each VCN instance.
>
> Patch 19 is to set powergating state by VCN instance in amdgpu_vcn.
>
> Patch 20-26 update all amdgpu_vcn_* helpers to handle vcn instance. All functions
> are now only handle the given vcn instance.
>
> Patch 27-32 update all vcn ip callback functions to handle vcn instance. All functions
> are now only handle the given vcn instance.
>
> Boyuan Zhang (32):
>    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 dpm_set_powergating_by_smu
>    add inst to amdgpu_dpm_enable_vcn
>    drm/amdgpu: pass ip_block in set_powergating_state
>    drm/amdgpu: pass ip_block in set_clockgating_state
>    drm/amdgpu: track instances of the same IP block
>    drm/amdgpu: move per inst variables to amdgpu_vcn_inst
>    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
>    drm/amdgpu: early_init for each vcn instance
>    drm/amdgpu: sw_init for each vcn instance
>    drm/amdgpu: sw_fini for each vcn instance
>    drm/amdgpu: hw_init for each vcn instance
>    drm/amdgpu: suspend for each vcn instance
>    drm/amdgpu: resume for each vcn instance
>    drm/amdgpu: setup_ucode for each vcn instance
>    drm/amdgpu: set funcs for each vcn instance
>    drm/amdgpu: print_ip_state for each vcn instance
>    drm/amdgpu: dump_ip_state for each vcn instance
>    drm/amdgpu: wait_for_idle for each vcn instance
>    drm/amdgpu: is_idle for each vcn instance
>    drm/amdgpu: set_powergating for each vcn instance
>
>   drivers/gpu/drm/amd/amdgpu/amdgpu.h           |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c       |   22 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c    |    5 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |   41 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c |   24 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c       |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_isp.c       |    6 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c      |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c       |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c       |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c       |    4 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c       |  338 +++--
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h       |   24 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c      |    6 +-
>   drivers/gpu/drm/amd/amdgpu/amdgpu_vpe.c       |   14 +-
>   drivers/gpu/drm/amd/amdgpu/cik.c              |    6 +-
>   drivers/gpu/drm/amd/amdgpu/cik_ih.c           |    8 +-
>   drivers/gpu/drm/amd/amdgpu/cik_sdma.c         |   10 +-
>   drivers/gpu/drm/amd/amdgpu/cz_ih.c            |    8 +-
>   drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        |    6 +-
>   drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        |    6 +-
>   drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         |    6 +-
>   drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         |    6 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c        |   16 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c        |   12 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c        |   12 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c         |   14 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c         |   12 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c         |   16 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c         |   14 +-
>   drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c       |   12 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c         |   10 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c         |   10 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c         |   10 +-
>   drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c         |    8 +-
>   drivers/gpu/drm/amd/amdgpu/iceland_ih.c       |    8 +-
>   drivers/gpu/drm/amd/amdgpu/ih_v6_0.c          |   10 +-
>   drivers/gpu/drm/amd/amdgpu/ih_v6_1.c          |   10 +-
>   drivers/gpu/drm/amd/amdgpu/ih_v7_0.c          |   10 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c        |    2 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c        |   20 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c        |   20 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c        |   20 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c        |   20 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c      |   18 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c      |   20 +-
>   drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c      |   20 +-
>   drivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c       |    2 +-
>   drivers/gpu/drm/amd/amdgpu/navi10_ih.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/nv.c               |    8 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c        |   10 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c        |   16 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c      |   14 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c        |   10 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c        |   10 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/si.c               |    6 +-
>   drivers/gpu/drm/amd/amdgpu/si_dma.c           |   14 +-
>   drivers/gpu/drm/amd/amdgpu/si_ih.c            |   10 +-
>   drivers/gpu/drm/amd/amdgpu/soc15.c            |    8 +-
>   drivers/gpu/drm/amd/amdgpu/soc21.c            |   10 +-
>   drivers/gpu/drm/amd/amdgpu/soc24.c            |   10 +-
>   drivers/gpu/drm/amd/amdgpu/tonga_ih.c         |    8 +-
>   drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c         |   10 +-
>   drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c         |   14 +-
>   drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c         |   23 +-
>   drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c         |   25 +-
>   drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c         |    4 +-
>   drivers/gpu/drm/amd/amdgpu/vce_v2_0.c         |   16 +-
>   drivers/gpu/drm/amd/amdgpu/vce_v3_0.c         |   20 +-
>   drivers/gpu/drm/amd/amdgpu/vce_v4_0.c         |   12 +-
>   drivers/gpu/drm/amd/amdgpu/vcn_v1_0.c         |  140 +-
>   drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c         |  124 +-
>   drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c         | 1154 ++++++++---------
>   drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c         |  909 +++++++------
>   drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c         |  801 ++++++------
>   drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c       |  727 +++++------
>   drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c       |  782 ++++++-----
>   drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c       |  690 +++++-----
>   drivers/gpu/drm/amd/amdgpu/vega10_ih.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/vega20_ih.c        |    8 +-
>   drivers/gpu/drm/amd/amdgpu/vi.c               |    8 +-
>   .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |    6 +-
>   drivers/gpu/drm/amd/include/amd_shared.h      |    6 +-
>   .../gpu/drm/amd/include/kgd_pp_interface.h    |    4 +-
>   drivers/gpu/drm/amd/pm/amdgpu_dpm.c           |   55 +-
>   drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h       |    3 +-
>   drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c    |   18 +-
>   drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c    |    6 +-
>   .../gpu/drm/amd/pm/powerplay/amd_powerplay.c  |   10 +-
>   .../drm/amd/pm/powerplay/hwmgr/smu10_hwmgr.c  |    6 +-
>   .../powerplay/hwmgr/smu7_clockpowergating.c   |   12 +-
>   .../drm/amd/pm/powerplay/hwmgr/smu8_hwmgr.c   |   12 +-
>   .../drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c |    6 +-
>   drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c     |   65 +-
>   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 +-
>   112 files changed, 3442 insertions(+), 3433 deletions(-)
>


  parent reply	other threads:[~2024-10-22  6:26 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-17 13:20 [PATCH 00/32] Separating vcn power management by instance boyuan.zhang
2024-10-17 13:20 ` [PATCH 01/32] drm/amd/pm: add inst to dpm_set_vcn_enable boyuan.zhang
2024-10-17 13:20 ` [PATCH 02/32] drm/amd/pm: power up or down vcn by instance boyuan.zhang
2024-10-17 13:20 ` [PATCH 03/32] drm/amd/pm: add inst to smu_dpm_set_vcn_enable boyuan.zhang
2024-10-17 13:20 ` [PATCH 04/32] drm/amd/pm: add inst to set_powergating_by_smu boyuan.zhang
2024-10-17 13:20 ` [PATCH 05/32] drm/amd/pm: add inst to dpm_set_powergating_by_smu boyuan.zhang
2024-10-17 13:20 ` [PATCH 06/32] add inst to amdgpu_dpm_enable_vcn boyuan.zhang
2024-10-17 13:20 ` [PATCH 07/32] drm/amdgpu: pass ip_block in set_powergating_state boyuan.zhang
2024-10-22  7:42   ` Khatri, Sunil
2024-10-25  2:46     ` Boyuan Zhang
2024-10-17 13:20 ` [PATCH 08/32] drm/amdgpu: pass ip_block in set_clockgating_state boyuan.zhang
2024-10-22  7:58   ` Khatri, Sunil
2024-10-25  2:48     ` Boyuan Zhang
2024-10-17 13:20 ` [PATCH 09/32] drm/amdgpu: track instances of the same IP block boyuan.zhang
2024-10-17 13:20 ` [PATCH 10/32] drm/amdgpu: move per inst variables to amdgpu_vcn_inst boyuan.zhang
2024-10-17 13:20 ` [PATCH 11/32] drm/amdgpu/vcn: separate gating state by instance boyuan.zhang
2024-10-17 13:20 ` [PATCH 12/32] drm/amdgpu: power vcn 2_5 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 13/32] drm/amdgpu: power vcn 3_0 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 14/32] drm/amdgpu: power vcn 4_0 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 15/32] drm/amdgpu: power vcn 4_0_3 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 16/32] drm/amdgpu: power vcn 4_0_5 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 17/32] drm/amdgpu: power vcn 5_0_0 " boyuan.zhang
2024-10-17 13:20 ` [PATCH 18/32] drm/amdgpu/vcn: separate idle work " boyuan.zhang
2024-10-17 13:20 ` [PATCH 19/32] drm/amdgpu: set powergating state by vcn instance boyuan.zhang
2024-10-17 13:20 ` [PATCH 20/32] drm/amdgpu: early_init for each " boyuan.zhang
2024-10-17 13:20 ` [PATCH 21/32] drm/amdgpu: sw_init " boyuan.zhang
2024-10-17 13:20 ` [PATCH 22/32] drm/amdgpu: sw_fini " boyuan.zhang
2024-10-28 19:40   ` Alex Deucher
2024-10-17 13:20 ` [PATCH 23/32] drm/amdgpu: hw_init " boyuan.zhang
2024-10-17 13:20 ` [PATCH 24/32] drm/amdgpu: suspend " boyuan.zhang
2024-10-17 13:20 ` [PATCH 25/32] drm/amdgpu: resume " boyuan.zhang
2024-10-17 13:20 ` [PATCH 26/32] drm/amdgpu: setup_ucode " boyuan.zhang
2024-10-17 13:20 ` [PATCH 27/32] drm/amdgpu: set funcs " boyuan.zhang
2024-10-17 13:20 ` [PATCH 28/32] drm/amdgpu: print_ip_state " boyuan.zhang
2024-10-22  8:40   ` Khatri, Sunil
2024-10-17 13:20 ` [PATCH 29/32] drm/amdgpu: dump_ip_state " boyuan.zhang
2024-10-22  8:56   ` Khatri, Sunil
2024-10-22  8:59     ` Khatri, Sunil
2024-10-22 12:37       ` Khatri, Sunil
2024-10-17 13:20 ` [PATCH 30/32] drm/amdgpu: wait_for_idle " boyuan.zhang
2024-10-17 13:20 ` [PATCH 31/32] drm/amdgpu: is_idle " boyuan.zhang
2024-10-17 13:20 ` [PATCH 32/32] drm/amdgpu: set_powergating " boyuan.zhang
2024-10-22  6:25 ` Christian König [this message]
2024-10-25  2:53   ` [PATCH 00/32] Separating vcn power management by instance Boyuan Zhang
  -- strict thread matches above, loose matches on Subject: below --
2024-10-08 21:15 boyuan.zhang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f8811d12-bb61-4a7c-9d85-2a5e7d98ccc0@amd.com \
    --to=christian.koenig@amd.com \
    --cc=Sunil.Khatri@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=boyuan.zhang@amd.com \
    --cc=leo.liu@amd.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox