From: Andre Luiz Batista Bueno <andrebueno.mac@gmail.com>
To: alexander.deucher@amd.com, christian.koenig@amd.com,
airlied@gmail.com, simona@ffwll.ch
Cc: Andre Luiz Batista Bueno <andrebueno.mac@gmail.com>,
Enzo Furegatti Spinella <enzo.spinella@usp.br>,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: [PATCH V2 RESEND] drm/amdgpu: deduplicate JPEG v5.0 interrupt routine
Date: Wed, 24 Jun 2026 00:30:30 -0300 [thread overview]
Message-ID: <20260624033134.145561-1-andrebueno.mac@gmail.com> (raw)
In-Reply-To: <CADnq5_POUhiOuusWBXgZMLCUhoRutMoH0NaLJgjWqapXd0eRcw@mail.gmail.com>
Both jpeg_v5_0_1.c and jpeg_v5_0_2.c implement identical
interrupt processing routines. To avoid code duplication,
make the implementation in jpeg_v5_0_1.c non-static and
call it directly from jpeg_v5_0_2.c.
Signed-off-by: Andre Luiz Batista Bueno <andrebueno.mac@gmail.com>
Co-developed-by: Enzo Furegatti Spinella <enzo.spinella@usp.br>
Signed-off-by: Enzo Furegatti Spinella <enzo.spinella@usp.br>
---
v2:
- Dropped the new jpeg_v5_0_interrupt.c/h files and Makefile changes.
- Kept the interrupt routine in jpeg_v5_0_1.c but removed the 'static' modifier.
- Declared the function prototype in jpeg_v5_0_1.h and included it in jpeg_v5_0_2.c to call it directly, as suggested by Alex Deucher.
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c | 2 +-
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h | 8 +++
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c | 63 ++----------------------
3 files changed, 12 insertions(+), 61 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
index edecbfe66c79..46bcbecd89e8 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
@@ -755,7 +755,7 @@ static int jpeg_v5_0_1_set_ras_interrupt_state(struct amdgpu_device *adev,
-static int jpeg_v5_0_1_process_interrupt(struct amdgpu_device *adev,
+int jpeg_v5_0_1_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_v5_0_1.h b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h
index a7e58d5fb246..67346faecb47 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.h
@@ -108,4 +108,12 @@ enum amdgpu_jpeg_v5_0_1_sub_block {
AMDGPU_JPEG_V5_0_1_MAX_SUB_BLOCK,
};
+struct amdgpu_irq_src;
+struct amdgpu_iv_entry;
+struct amdgpu_device;
+
+int jpeg_v5_0_1_process_interrupt(struct amdgpu_device *adev,
+ struct amdgpu_irq_src *source,
+ struct amdgpu_iv_entry *entry);
+
#endif /* __JPEG_V5_0_1_H__ */
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
index 285c459379c4..250e7f849037 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
@@ -34,6 +34,8 @@
#include "vcn/vcn_5_0_0_sh_mask.h"
#include "ivsrcid/vcn/irqsrcs_vcn_5_0.h"
+#include "jpeg_v5_0_1.h"
+
static void jpeg_v5_0_2_set_dec_ring_funcs(struct amdgpu_device *adev);
static void jpeg_v5_0_2_set_irq_funcs(struct amdgpu_device *adev);
static int jpeg_v5_0_2_set_powergating_state(struct amdgpu_ip_block *ip_block,
@@ -583,65 +585,6 @@ static int jpeg_v5_0_2_set_interrupt_state(struct amdgpu_device *adev,
return 0;
}
-static int jpeg_v5_0_2_process_interrupt(struct amdgpu_device *adev,
- struct amdgpu_irq_src *source,
- struct amdgpu_iv_entry *entry)
-{
- u32 i, inst;
-
- i = node_id_to_phys_map[entry->node_id];
- DRM_DEV_DEBUG(adev->dev, "IH: JPEG TRAP\n");
-
- for (inst = 0; inst < adev->jpeg.num_jpeg_inst; ++inst)
- if (adev->jpeg.inst[inst].aid_id == i)
- break;
-
- if (inst >= adev->jpeg.num_jpeg_inst) {
- dev_WARN_ONCE(adev->dev, 1,
- "Interrupt received for unknown JPEG instance %d",
- entry->node_id);
- return 0;
- }
-
- switch (entry->src_id) {
- case VCN_5_0__SRCID__JPEG_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[0]);
- break;
- case VCN_5_0__SRCID__JPEG1_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[1]);
- break;
- case VCN_5_0__SRCID__JPEG2_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[2]);
- break;
- case VCN_5_0__SRCID__JPEG3_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[3]);
- break;
- case VCN_5_0__SRCID__JPEG4_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[4]);
- break;
- case VCN_5_0__SRCID__JPEG5_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[5]);
- break;
- case VCN_5_0__SRCID__JPEG6_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[6]);
- break;
- case VCN_5_0__SRCID__JPEG7_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[7]);
- break;
- case VCN_5_0__SRCID__JPEG8_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[8]);
- break;
- case VCN_5_0__SRCID__JPEG9_DECODE:
- amdgpu_fence_process(&adev->jpeg.inst[inst].ring_dec[9]);
- break;
- default:
- DRM_DEV_ERROR(adev->dev, "Unhandled interrupt: %d %d\n",
- entry->src_id, entry->src_data[0]);
- break;
- }
-
- return 0;
-}
static void jpeg_v5_0_2_core_stall_reset(struct amdgpu_ring *ring)
{
@@ -749,7 +692,7 @@ static void jpeg_v5_0_2_set_dec_ring_funcs(struct amdgpu_device *adev)
static const struct amdgpu_irq_src_funcs jpeg_v5_0_2_irq_funcs = {
.set = jpeg_v5_0_2_set_interrupt_state,
- .process = jpeg_v5_0_2_process_interrupt,
+ .process = jpeg_v5_0_1_process_interrupt,
};
static void jpeg_v5_0_2_set_irq_funcs(struct amdgpu_device *adev)
--
2.43.0
next prev parent reply other threads:[~2026-06-24 7:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-09 2:03 [PATCH V1 RESEND] drm/amdgpu: deduplicate JPEG v5.0 interrupt routine Andre Luiz Batista Bueno
2026-05-11 14:55 ` Alex Deucher
2026-06-11 2:40 ` [PATCH v2] " Andre Luiz Batista Bueno
2026-06-11 10:59 ` sashiko-bot
2026-06-24 3:30 ` Andre Luiz Batista Bueno [this message]
2026-06-24 7:56 ` [PATCH V2 RESEND] " sashiko-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260624033134.145561-1-andrebueno.mac@gmail.com \
--to=andrebueno.mac@gmail.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=enzo.spinella@usp.br \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.