Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sven Püschel" <s.pueschel@pengutronix.de>
Cc: devicetree@vger.kernel.org, robh@kernel.org, conor+dt@kernel.org
Subject: Re: [PATCH v7 21/28] media: rockchip: rga: share the interrupt when an external iommu is used
Date: Wed, 20 May 2026 23:33:45 +0000	[thread overview]
Message-ID: <20260520233345.DBF031F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260521-spu-rga3-v7-21-3f33e8c7145f@pengutronix.de>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:

New issues:
- [Critical] Accessing hardware registers in the shared interrupt handler while the device is runtime suspended causes a bus fault and system crash.
- [High] The interrupt handler unconditionally returns `IRQ_HANDLED`, violating shared interrupt semantics and breaking spurious interrupt detection.

Pre-existing issues:
- [High] Missing early returns after `WARN_ON` checks leads to deterministic NULL pointer dereferences in the interrupt handler.
--

commit d55d317809ea4314d29aae5edd3429021099007b
Author: Michael Olbrich <m.olbrich@pengutronix.de>

media: rockchip: rga: share the interrupt when an external iommu is used

This commit updates the RGA driver to request a shared interrupt when
paired with an external IOMMU, allowing both drivers to share the IRQ line.

> diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c
> index e3c99c3f7c5be..cda3cecb1ce8c 100644
> --- a/drivers/media/platform/rockchip/rga/rga.c
> +++ b/drivers/media/platform/rockchip/rga/rga.c
> @@ -767,7 +767,8 @@ static int rga_probe(struct platform_device *pdev)
[ ... ]
> -	ret = devm_request_irq(rga->dev, irq, rga_isr, 0,
> +	ret = devm_request_irq(rga->dev, irq, rga_isr,
> +			       rga_has_internal_iommu(rga) ? 0 : IRQF_SHARED,

[Severity: Critical]
If the external IOMMU triggers an interrupt while the RGA device is idle
and its clocks are disabled via rga_runtime_suspend(), will rga_isr() still
attempt to read the hardware registers?

Since rga->hw->handle_irq(rga) directly reads RGA_INT, could this cause an
external abort or bus fault? Does the ISR need to verify the device's
power state with pm_runtime_active() before accessing registers?

[Severity: High]
With IRQF_SHARED added, does rga_isr() correctly return IRQ_NONE when the
RGA hardware didn't generate the interrupt?

If it unconditionally returns IRQ_HANDLED even when rga->hw->handle_irq(rga)
returns false, could this defeat the spurious interrupt detection mechanism
and lead to lockups during an interrupt storm?

[Severity: High]
This is a pre-existing issue, but does adding IRQF_SHARED make the
WARN_ON(!ctx) check in rga_isr() susceptible to a NULL pointer dereference?

If an IOMMU interrupt fires while RGA is idle and rga->curr is NULL, and
reading gated registers returns 0xFFFFFFFF, handle_irq might incorrectly
return true. Since the WARN_ON(!ctx) lacks an early return, will this
proceed to call v4l2_m2m_src_buf_remove(ctx->fh.m2m_ctx) and dereference
the NULL pointer?

>  			       dev_name(rga->dev), rga);
>  	if (ret < 0) {
>  		dev_err(rga->dev, "failed to request irq\n");

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260521-spu-rga3-v7-0-3f33e8c7145f@pengutronix.de?part=21

  reply	other threads:[~2026-05-20 23:33 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-20 22:44 [PATCH v7 00/28] media: platform: rga: Add RGA3 support Sven Püschel
2026-05-20 22:44 ` [PATCH v7 01/28] media: dt-bindings: media: rockchip-rga: add rockchip,rk3588-rga3 Sven Püschel
2026-05-20 22:44 ` [PATCH v7 02/28] media: v4l2-common: sort RGB formats in v4l2_format_info Sven Püschel
2026-05-20 22:44 ` [PATCH v7 03/28] media: v4l2-common: add missing 1 and 2 byte RGB formats to v4l2_format_info Sven Püschel
2026-05-20 22:44 ` [PATCH v7 04/28] media: v4l2-common: add has_alpha " Sven Püschel
2026-05-20 22:44 ` [PATCH v7 05/28] media: v4l2-common: add v4l2_fill_pixfmt_mp_aligned helper Sven Püschel
2026-05-20 23:48   ` Nicolas Dufresne
2026-05-20 22:44 ` [PATCH v7 06/28] media: rockchip: rga: fix too small buffer size Sven Püschel
2026-05-20 23:43   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 07/28] media: rockchip: rga: use clk_bulk api Sven Püschel
2026-05-20 23:27   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 08/28] media: rockchip: rga: use stride for offset calculation Sven Püschel
2026-05-20 23:38   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 09/28] media: rockchip: rga: remove redundant rga_frame variables Sven Püschel
2026-05-20 23:37   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 10/28] media: rockchip: rga: announce and sync colorimetry Sven Püschel
2026-05-20 23:45   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 11/28] media: rockchip: rga: move hw specific parts to a dedicated struct Sven Püschel
2026-05-20 23:30   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 12/28] media: rockchip: rga: avoid odd frame sizes for YUV formats Sven Püschel
2026-05-20 23:32   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 13/28] media: rockchip: rga: calculate x_div/y_div using v4l2_format_info Sven Püschel
2026-05-20 22:44 ` [PATCH v7 14/28] media: rockchip: rga: move cmdbuf to rga_ctx Sven Püschel
2026-05-20 23:44   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 15/28] media: rockchip: rga: align stride to 4 bytes Sven Püschel
2026-05-20 23:56   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 16/28] media: rockchip: rga: reuse cmdbuf contents Sven Püschel
2026-05-20 23:30   ` sashiko-bot
2026-05-20 23:55   ` Nicolas Dufresne
2026-05-20 22:44 ` [PATCH v7 17/28] media: rockchip: rga: check scaling factor Sven Püschel
2026-05-20 23:42   ` sashiko-bot
2026-05-20 23:58   ` Nicolas Dufresne
2026-05-20 22:44 ` [PATCH v7 18/28] media: rockchip: rga: use card type to specify rga type Sven Püschel
2026-05-20 23:29   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 19/28] media: rockchip: rga: change offset to dma_addresses Sven Püschel
2026-05-20 22:44 ` [PATCH v7 20/28] media: rockchip: rga: support external iommus Sven Püschel
2026-05-20 23:43   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 21/28] media: rockchip: rga: share the interrupt when an external iommu is used Sven Püschel
2026-05-20 23:33   ` sashiko-bot [this message]
2026-05-20 22:44 ` [PATCH v7 22/28] media: rockchip: rga: remove size from rga_frame Sven Püschel
2026-05-20 23:35   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 23/28] media: rockchip: rga: remove stride " Sven Püschel
2026-05-20 22:44 ` [PATCH v7 24/28] media: rockchip: rga: move rga_fmt to rga-hw.h Sven Püschel
2026-05-20 22:44 ` [PATCH v7 25/28] media: rockchip: rga: add feature flags Sven Püschel
2026-05-20 23:42   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 26/28] media: rockchip: rga: disable multi-core support Sven Püschel
2026-05-20 22:44 ` [PATCH v7 27/28] media: rockchip: rga: add rga3 support Sven Püschel
2026-05-21  0:08   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 28/28] arm64: dts: rockchip: add rga3 dt nodes Sven Püschel

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=20260520233345.DBF031F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=s.pueschel@pengutronix.de \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox