On 2026. július 15., szerda 12:19:40 közép-európai nyári idő Tvrtko Ursulin wrote: > On 13/07/2026 14:07, Timur Kristóf wrote: > > These were used without ever calling get()/put() on them. > > > Implement it like on GFX7-8: > Used as in how? Are they even enabled without this change and if not > then does this patch fixes something other than being prep work for soft > reset?
If you open gfx_v6_0.c and search for priv_reg or priv_inst, you can see that the interrupts are used in the same manner as gfx7 and newer, but without get() and put(). > > > * Call amdgpu_irq_get() from gfx_v6_0_late_init() > > * Call amdgpu_irq_put() from gfx_v6_0_hw_fini() > > > > Signed-off-by: Timur Kristóf <[email protected]> > > --- > > > > drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 19 +++++++++++++++++++ > > 1 file changed, 19 insertions(+) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > > b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c index 5b570a4b5c01..1c7cd265fbca > > 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > > @@ -3131,6 +3131,22 @@ static int gfx_v6_0_early_init(struct > > amdgpu_ip_block *ip_block)> > > return 0; > > > > } > > > > +static int gfx_v6_0_late_init(struct amdgpu_ip_block *ip_block) > > +{ > > + struct amdgpu_device *adev = ip_block->adev; > > + int r; > > + > > + r = amdgpu_irq_get(adev, &adev->gfx.priv_reg_irq, 0); > > + if (r) > > + return r; > > + > > + r = amdgpu_irq_get(adev, &adev->gfx.priv_inst_irq, 0); > > + if (r) > > + return r; > > + > > + return 0; > > +} > > + > > > > static int gfx_v6_0_sw_init(struct amdgpu_ip_block *ip_block) > > { > > > > struct amdgpu_ring *ring; > > > > @@ -3243,6 +3259,8 @@ static int gfx_v6_0_hw_fini(struct amdgpu_ip_block > > *ip_block)> > > { > > > > struct amdgpu_device *adev = ip_block->adev; > > > > + amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0); > > + amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0); > > > > gfx_v6_0_cp_enable(adev, false); > > adev->gfx.rlc.funcs->stop(adev); > > gfx_v6_0_fini_pg(adev); > > > > @@ -3532,6 +3550,7 @@ static void gfx_v6_0_emit_mem_sync(struct > > amdgpu_ring *ring)> > > static const struct amd_ip_funcs gfx_v6_0_ip_funcs = { > > > > .name = "gfx_v6_0", > > .early_init = gfx_v6_0_early_init, > > > > + .late_init = gfx_v6_0_late_init, > > > > .sw_init = gfx_v6_0_sw_init, > > .sw_fini = gfx_v6_0_sw_fini, > > .hw_init = gfx_v6_0_hw_init,
