On Wed, Jul 1, 2026 at 2:14 PM Tiago Gomes Dourado de Oliveira <[email protected]> wrote: > > On Fri, Jun 26, 2026 at 6:49 PM Alex Deucher <[email protected]> wrote: > > > > On Fri, Jun 26, 2026 at 8:14 AM Christian König > > <[email protected]> wrote: > > > > > > On 6/26/26 04:59, Tiago Dourado wrote: > > > > The jpeg_v3_0_process_interrupt function is identical to > > > > jpeg_v2_0_process_interrupt. Remove the duplicate implementation > > > > in jpeg_v3_0 and assign the jpeg_v2_0 version directly to the irq_funcs > > > > struct. > > > > Export jpeg_v2_0_process_interrupt through jpeg_v2_0.h to allow > > > > cross-version reuse. > > > > > > Usually we intentionally don't do any cross IP version reuse, that has > > > cause tons of problems in the past. > > > > > > @Leo any particular reason why we don't have a separate SRCID file for > > > VCN3? > > > > > > My educated guess is that nothing changed compared to VCN2 and nobody > > > cared to re-generate the file from the HW definition. > > > > > > > I think it's the same so no need for a separate one. There are a > > number of existing places where VCN or jpeg use one function > > implementation across multiple generations. > > > > Thanks for the feedback. Given what both of you pointed out, what do > you suggest that we can do?
I've applied the series. Thanks. Alex > > Regards, > Tiago > > > Alex > > > > > Regards, > > > Christian. > > > > > > > > > > > Signed-off-by: Tiago Dourado <[email protected]> > > > > Co-developed-by: Luiz Fernandes <[email protected]> > > > > Signed-off-by: Luiz Fernandes <[email protected]> > > > > --- > > > > > > > > v2: > > > > - Assigned function directly to irq_funcs instead of using a macro. > > > > > > > > drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 2 +- > > > > drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h | 4 ++++ > > > > drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c | 21 +-------------------- > > > > 3 files changed, 6 insertions(+), 21 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c > > > > b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c > > > > index 9fe8d10ab..9006fc57e 100644 > > > > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c > > > > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c > > > > @@ -747,7 +747,7 @@ static int jpeg_v2_0_set_interrupt_state(struct > > > > amdgpu_device *adev, > > > > return 0; > > > > } > > > > > > > > -static int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev, > > > > +int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev, > > > > struct amdgpu_irq_src *source, > > > > struct amdgpu_iv_entry *entry) > > > > { > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h > > > > b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h > > > > index 654e43e83..4f400fb47 100644 > > > > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h > > > > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h > > > > @@ -58,6 +58,10 @@ void jpeg_v2_0_dec_ring_emit_vm_flush(struct > > > > amdgpu_ring *ring, > > > > void jpeg_v2_0_dec_ring_emit_wreg(struct amdgpu_ring *ring, uint32_t > > > > reg, uint32_t val); > > > > void jpeg_v2_0_dec_ring_nop(struct amdgpu_ring *ring, uint32_t count); > > > > > > > > +int jpeg_v2_0_process_interrupt(struct amdgpu_device *adev, > > > > + struct amdgpu_irq_src *source, > > > > + struct amdgpu_iv_entry *entry); > > > > + > > > > extern const struct amdgpu_ip_block_version jpeg_v2_0_ip_block; > > > > > > > > #endif /* __JPEG_V2_0_H__ */ > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c > > > > b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c > > > > index 98f5e0622..2f3a5a17e 100644 > > > > --- a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c > > > > +++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c > > > > @@ -539,25 +539,6 @@ static int jpeg_v3_0_set_interrupt_state(struct > > > > amdgpu_device *adev, > > > > return 0; > > > > } > > > > > > > > -static int jpeg_v3_0_process_interrupt(struct amdgpu_device *adev, > > > > - struct amdgpu_irq_src *source, > > > > - struct amdgpu_iv_entry *entry) > > > > -{ > > > > - DRM_DEBUG("IH: JPEG TRAP\n"); > > > > - > > > > - switch (entry->src_id) { > > > > - case VCN_2_0__SRCID__JPEG_DECODE: > > > > - amdgpu_fence_process(adev->jpeg.inst->ring_dec); > > > > - break; > > > > - default: > > > > - DRM_ERROR("Unhandled interrupt: %d %d\n", > > > > - entry->src_id, entry->src_data[0]); > > > > - break; > > > > - } > > > > - > > > > - return 0; > > > > -} > > > > - > > > > static int jpeg_v3_0_ring_reset(struct amdgpu_ring *ring, > > > > unsigned int vmid, > > > > struct amdgpu_fence *timedout_fence) > > > > @@ -629,7 +610,7 @@ static void jpeg_v3_0_set_dec_ring_funcs(struct > > > > amdgpu_device *adev) > > > > > > > > static const struct amdgpu_irq_src_funcs jpeg_v3_0_irq_funcs = { > > > > .set = jpeg_v3_0_set_interrupt_state, > > > > - .process = jpeg_v3_0_process_interrupt, > > > > + .process = jpeg_v2_0_process_interrupt, > > > > }; > > > > > > > > static void jpeg_v3_0_set_irq_funcs(struct amdgpu_device *adev) > > >
