Applied this one. Thanks! Alex On Wed, Jan 8, 2025 at 9:00 AM Jiang Liu <gerry@xxxxxxxxxxxxxxxxx> wrote: > > The adev->ip_blocks array is not indexed by AMD_IP_BLOCK_TYPE_xxx, > instead we should call amdgpu_device_ip_get_ip_block() to get the > corresponding IP block oject. > > Signed-off-by: Jiang Liu <gerry@xxxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > index 0b1e280ee228..25c06c6c8a2a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > @@ -3830,10 +3830,12 @@ static ssize_t psp_usbc_pd_fw_sysfs_read(struct device *dev, > { > struct drm_device *ddev = dev_get_drvdata(dev); > struct amdgpu_device *adev = drm_to_adev(ddev); > + struct amdgpu_ip_block *ip_block; > uint32_t fw_ver; > int ret; > > - if (!adev->ip_blocks[AMD_IP_BLOCK_TYPE_PSP].status.late_initialized) { > + ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP); > + if (ip_block == NULL || !ip_block->status.late_initialized) { > dev_info(adev->dev, "PSP block is not ready yet\n."); > return -EBUSY; > } > @@ -3862,8 +3864,10 @@ static ssize_t psp_usbc_pd_fw_sysfs_write(struct device *dev, > struct amdgpu_bo *fw_buf_bo = NULL; > uint64_t fw_pri_mc_addr; > void *fw_pri_cpu_addr; > + struct amdgpu_ip_block *ip_block; > > - if (!adev->ip_blocks[AMD_IP_BLOCK_TYPE_PSP].status.late_initialized) { > + ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP); > + if (ip_block == NULL || !ip_block->status.late_initialized) { > dev_err(adev->dev, "PSP block is not ready yet."); > return -EBUSY; > } > -- > 2.43.5 >