Comment inline > -----Original Message----- > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Rex > Zhu > Sent: 2018年9月30日 0:15 > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Zhu, Rex <Rex.Zhu@xxxxxxx> > Subject: [PATCH 3/6] drm/amdgpu: Fix cg/pg unexpected disabled when hw > init failed > > Check the ip blocks late_initialized state before enable/disable cg/pg, so if > hw init failed, cg/pg function will not be executed. > > Signed-off-by: Rex Zhu <Rex.Zhu@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 95095a8..94c92f5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -1656,7 +1656,7 @@ static int amdgpu_device_set_cg_state(struct > amdgpu_device *adev, > > for (j = 0; j < adev->num_ip_blocks; j++) { > i = state == AMD_CG_STATE_GATE ? j : adev- > >num_ip_blocks - j - 1; > - if (!adev->ip_blocks[i].status.valid) > + if (!adev->ip_blocks[i].status.late_initialized) > continue; > /* skip CG for VCE/UVD, it's handled specially */ > if (adev->ip_blocks[i].version->type != > AMD_IP_BLOCK_TYPE_UVD && @@ -1686,7 +1686,7 @@ static int > amdgpu_device_set_pg_state(struct amdgpu_device *adev, enum > amd_power > > for (j = 0; j < adev->num_ip_blocks; j++) { > i = state == AMD_PG_STATE_GATE ? j : adev- > >num_ip_blocks - j - 1; > - if (!adev->ip_blocks[i].status.valid) > + if (!adev->ip_blocks[i].status.late_initialized) > continue; > /* skip CG for VCE/UVD, it's handled specially */ > if (adev->ip_blocks[i].version->type != > AMD_IP_BLOCK_TYPE_UVD && @@ -1723,7 +1723,7 @@ static int > amdgpu_device_ip_late_init(struct amdgpu_device *adev) > int i = 0, r; > > for (i = 0; i < adev->num_ip_blocks; i++) { > - if (!adev->ip_blocks[i].status.valid) > + if (!adev->ip_blocks[i].status.hw) [Quan, Evan] typo? > continue; > if (adev->ip_blocks[i].version->funcs->late_init) { > r = adev->ip_blocks[i].version->funcs->late_init((void > *)adev); @@ -1732,8 +1732,8 @@ static int > amdgpu_device_ip_late_init(struct amdgpu_device *adev) > adev->ip_blocks[i].version->funcs- > >name, r); > return r; > } > - adev->ip_blocks[i].status.late_initialized = true; > } > + adev->ip_blocks[i].status.late_initialized = true; > } > > amdgpu_device_set_cg_state(adev, AMD_CG_STATE_GATE); > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx