[PATCH v5 09/10] drm/amdgpu: Use PSP to program IH_RB_CNTL* registers
Zhou, Peng Ju
PengJu.Zhou at amd.com
Fri May 21 09:58:01 UTC 2021
[AMD Official Use Only - Internal Distribution Only]
Hi @Zhao, Victor/@Deng, Emily
Can you help to answer Alex's question,?
Because this patch originally from @Zhao, Victor, it's hard for me to explain the question.
Alex's question:
> > --- a/drivers/gpu/drm/amd/amdgpu/nv.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
> > @@ -845,8 +845,8 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
> > case CHIP_NAVI12:
> > amdgpu_device_ip_block_add(adev, &nv_common_ip_block);
> > amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block);
> > - amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block);
> > amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
> > + amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block);
>
> Is it safe to change the order like this on bare metal? Please look at what was
> done for vega and sienna cichlid. Something like that is probably a better bet.
----------------------------------------------------------------------
BW
Pengju Zhou
> -----Original Message-----
> From: Alex Deucher <alexdeucher at gmail.com>
> Sent: Thursday, May 20, 2021 11:47 AM
> To: Zhou, Peng Ju <PengJu.Zhou at amd.com>
> Cc: amd-gfx list <amd-gfx at lists.freedesktop.org>; Zhao, Victor
> <Victor.Zhao at amd.com>
> Subject: Re: [PATCH v5 09/10] drm/amdgpu: Use PSP to program
> IH_RB_CNTL* registers
>
> On Mon, May 17, 2021 at 10:39 AM Peng Ju Zhou <PengJu.Zhou at amd.com>
> wrote:
> >
> > use psp to program IH_RB_CNTL* if indirect access for ih enabled in
> > SRIOV environment.
> >
> > Signed-off-by: Victor <Victor.Zhao at amd.com>
> > Signed-off-by: Peng Ju Zhou <PengJu.Zhou at amd.com>
> > ---
> > drivers/gpu/drm/amd/amdgpu/navi10_ih.c | 19 +++++++++++++++++--
> > drivers/gpu/drm/amd/amdgpu/nv.c | 2 +-
> > 2 files changed, 18 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c
> > b/drivers/gpu/drm/amd/amdgpu/navi10_ih.c
> > index f4e4040bbd25..2e69cf8db072 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/navi10_ih.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/navi10_ih.c
> > @@ -151,7 +151,14 @@ static int navi10_ih_toggle_ring_interrupts(struct
> amdgpu_device *adev,
> > /* enable_intr field is only valid in ring0 */
> > if (ih == &adev->irq.ih)
> > tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, ENABLE_INTR, (enable ?
> 1 : 0));
> > - WREG32(ih_regs->ih_rb_cntl, tmp);
> > + if (amdgpu_sriov_vf(adev) && amdgpu_sriov_reg_indirect_ih(adev)) {
> > + if (psp_reg_program(&adev->psp, ih_regs->psp_reg_id, tmp)) {
> > + DRM_ERROR("PSP program IH_RB_CNTL failed!\n");
> > + return -ETIMEDOUT;
> > + }
> > + } else {
> > + WREG32(ih_regs->ih_rb_cntl, tmp);
> > + }
> >
> > if (enable) {
> > ih->enabled = true;
> > @@ -261,7 +268,15 @@ static int navi10_ih_enable_ring(struct
> amdgpu_device *adev,
> > tmp = REG_SET_FIELD(tmp, IH_RB_CNTL,
> WPTR_OVERFLOW_ENABLE, 0);
> > tmp = REG_SET_FIELD(tmp, IH_RB_CNTL, RB_FULL_DRAIN_ENABLE,
> 1);
> > }
> > - WREG32(ih_regs->ih_rb_cntl, tmp);
> > +
> > + if (amdgpu_sriov_vf(adev) && amdgpu_sriov_reg_indirect_ih(adev)) {
> > + if (psp_reg_program(&adev->psp, ih_regs->psp_reg_id, tmp)) {
> > + DRM_ERROR("PSP program IH_RB_CNTL failed!\n");
> > + return -ETIMEDOUT;
> > + }
> > + } else {
> > + WREG32(ih_regs->ih_rb_cntl, tmp);
> > + }
> >
> > if (ih == &adev->irq.ih) {
> > /* set the ih ring 0 writeback address whether it's
> > enabled or not */ diff --git a/drivers/gpu/drm/amd/amdgpu/nv.c
> > b/drivers/gpu/drm/amd/amdgpu/nv.c index a9ad28fb55b3..b9c9c4d4606c
> > 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/nv.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/nv.c
> > @@ -845,8 +845,8 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
> > case CHIP_NAVI12:
> > amdgpu_device_ip_block_add(adev, &nv_common_ip_block);
> > amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block);
> > - amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block);
> > amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
> > + amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block);
>
> Is it safe to change the order like this on bare metal? Please look at what was
> done for vega and sienna cichlid. Something like that is probably a better bet.
>
> Alex
>
>
> > if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP)
> > amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block);
> > if (adev->enable_virtual_display ||
> > amdgpu_sriov_vf(adev))
> > --
> > 2.17.1
> >
> > _______________________________________________
> > amd-gfx mailing list
> > amd-gfx at lists.freedesktop.org
> > https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> > s.freedesktop.org%2Fmailman%2Flistinfo%2Famd-
> gfx&data=04%7C01%7CPe
> >
> ngJu.Zhou%40amd.com%7Cabc8d955fb1f4deb9ce108d91b41ecbb%7C3dd89
> 61fe4884
> >
> e608e11a82d994e183d%7C0%7C0%7C637570792232990999%7CUnknown%7
> CTWFpbGZsb
> >
> 3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0
> %3D%
> >
> 7C1000&sdata=HyDcZjT3c6mY%2F%2FYdjMuW1T%2FRUIzqX5kK9vaYus
> mZJxI%3D&
> > amp;reserved=0
More information about the amd-gfx
mailing list