All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sven Püschel" <s.pueschel@pengutronix.de>
Cc: conor+dt@kernel.org, devicetree@vger.kernel.org, robh@kernel.org
Subject: Re: [PATCH v7 18/28] media: rockchip: rga: use card type to specify rga type
Date: Wed, 20 May 2026 23:29:20 +0000	[thread overview]
Message-ID: <20260520232920.EC4A21F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260521-spu-rga3-v7-18-3f33e8c7145f@pengutronix.de>

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

New issues:
- [Critical] Changing the V4L2 capability `card` name from `"rockchip-rga"` to `"rga2"` breaks existing userspace applications matching on the original card name.
- [Medium] The patch updates the `card` field in `vidioc_querycap` to use `card_type` but fails to update the `name` field in the underlying `struct video_device`. This leaves sysfs and the ioctl out of sync.

Pre-existing issues:
- [High] The driver incorrectly uses dma_sync_single_for_device() on a DMA buffer allocated with dma_alloc_attrs(..., DMA_ATTR_WRITE_COMBINE).
- [High] The interrupt handler warns if the context or buffers are NULL, but fails to abort, leading to immediate kernel panics upon dereferencing them.
- [High] MMIO registers are unconditionally accessed without ensuring that device power domains and clocks are enabled.
- [High] Hardware resets are asserted and deasserted before device clocks are enabled.
--

commit affdef8a4b194a7e1143a9a140724a4fc44d285b
Author: Sven Püschel <s.pueschel@pengutronix.de>

media: rockchip: rga: use card type to specify rga type

This commit adds a card_type field to the rga_hw struct to prepare for
RGA3 support. It updates the V4L2 capability card field to use this
hardware-specific type string, intending to allow userspace to
differentiate between RGA2 and RGA3 device nodes.

> In preparation of the RGA3 support add a filed to the rga_hw struct
> to specify the desired card type value. This allows the user to
> differentiate the RGA2 and RGA3 video device nodes.

[Severity: Medium]
Will this leave the sysfs name out of sync with the V4L2 capability,
preventing the differentiation goal described here?

During device registration in rga_probe(), the struct video_device
inherits its name from rga_videodev.name, which remains hardcoded to
"rockchip-rga". Consequently, /sys/class/video4linux/videoX/name will
still return "rockchip-rga" for all versions, which prevents udev rules
from differentiating the nodes using sysfs attributes. Should vfd->name
be updated dynamically during probe?

> diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c
> index 22954bbae55fc..91775b43ff617 100644
> --- a/drivers/media/platform/rockchip/rga/rga.c
> +++ b/drivers/media/platform/rockchip/rga/rga.c
> @@ -354,8 +354,10 @@ static const struct v4l2_file_operations rga_fops = {
>  static int
>  vidioc_querycap(struct file *file, void *priv, struct v4l2_capability *cap)
>  {
> +	struct rockchip_rga *rga = video_drvdata(file);
> +
>  	strscpy(cap->driver, RGA_NAME, sizeof(cap->driver));
> -	strscpy(cap->card, "rockchip-rga", sizeof(cap->card));
> +	strscpy(cap->card, rga->hw->card_type, sizeof(cap->card));

[Severity: Critical]
Does changing the card name from "rockchip-rga" to "rga2" break existing
userspace applications?

The V4L2 capability card string is part of the user-space ABI. Existing
userspace tools or udev rules expecting the original string might fail to
recognize the device, potentially causing an ABI breakage.

>  	strscpy(cap->bus_info, "platform:rga", sizeof(cap->bus_info));
>  
>  	return 0;
>  }

[Severity: High]
This is a pre-existing issue, but does this driver incorrectly use
dma_sync_single_for_device() on a DMA buffer allocated with
dma_alloc_attrs(..., DMA_ATTR_WRITE_COMBINE)?

Calling streaming DMA sync functions on addresses returned by coherent
allocations violates the DMA API. Should a memory barrier like wmb() be
used instead?

[Severity: High]
This isn't a bug introduced by this patch, but does the interrupt handler
fail to abort when the context is NULL?

Looking at rga_isr(), if rga->curr is NULL, the code emits a WARN_ON(!ctx)
but does not return, and proceeds to dereference ctx in ctx->fh.m2m_ctx.
Can this lead to an immediate kernel panic if a spurious interrupt arrives?

[Severity: High]
This is a pre-existing issue, but are MMIO registers unconditionally
accessed without ensuring device power domains and clocks are enabled?

The driver relies on pm_runtime for clock management and drops its PM
reference at the end of rga_probe(). It appears pm_runtime_get_sync()
is not called before writing to hardware registers in the device_run()
callback or when opening the device. Can this trigger a synchronous
external abort if a shared or spurious interrupt arrives while the device
is suspended?

[Severity: High]
This isn't a bug introduced by this patch, but are hardware resets asserted
and deasserted before device clocks are enabled?

In rga_parse_dt(), the core, axi, and ahb reset controllers are triggered
before pm_runtime_enable() is called to enable the RGA clocks. Since
hardware reset logic often requires clocks to be active, does toggling
resets with gated clocks leave the hardware in an undefined state?

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

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

Thread overview: 111+ 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 ` 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   ` 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   ` 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   ` 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   ` 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 22:44   ` Sven Püschel
2026-05-20 23:48   ` Nicolas Dufresne
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 22:44   ` Sven Püschel
2026-05-20 23:43   ` sashiko-bot
2026-05-21 12:44   ` Michael Tretter
2026-05-21 12:44     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 07/28] media: rockchip: rga: use clk_bulk api Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:27   ` sashiko-bot
2026-05-21 12:48   ` Michael Tretter
2026-05-21 12:48     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 08/28] media: rockchip: rga: use stride for offset calculation Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:38   ` sashiko-bot
2026-05-21 12:52   ` Michael Tretter
2026-05-21 12:52     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 09/28] media: rockchip: rga: remove redundant rga_frame variables Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:37   ` sashiko-bot
2026-05-21 13:03   ` Michael Tretter
2026-05-21 13:03     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 10/28] media: rockchip: rga: announce and sync colorimetry Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:45   ` sashiko-bot
2026-05-21 13:44   ` Michael Tretter
2026-05-21 13:44     ` Michael Tretter
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 22:44   ` Sven Püschel
2026-05-20 23:30   ` sashiko-bot
2026-05-21 13:56   ` Michael Tretter
2026-05-21 13:56     ` Michael Tretter
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 22:44   ` Sven Püschel
2026-05-20 23:32   ` sashiko-bot
2026-05-21 14:11   ` Michael Tretter
2026-05-21 14:11     ` Michael Tretter
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   ` Sven Püschel
2026-05-21 14:17   ` Michael Tretter
2026-05-21 14:17     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 14/28] media: rockchip: rga: move cmdbuf to rga_ctx Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:44   ` sashiko-bot
2026-05-21 14:20   ` Michael Tretter
2026-05-21 14:20     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 15/28] media: rockchip: rga: align stride to 4 bytes Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:56   ` sashiko-bot
2026-05-21 14:22   ` Michael Tretter
2026-05-21 14:22     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 16/28] media: rockchip: rga: reuse cmdbuf contents Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:30   ` sashiko-bot
2026-05-20 23:55   ` Nicolas Dufresne
2026-05-20 23:55     ` Nicolas Dufresne
2026-05-21 14:39   ` Michael Tretter
2026-05-21 14:39     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 17/28] media: rockchip: rga: check scaling factor Sven Püschel
2026-05-20 22:44   ` Sven Püschel
2026-05-20 23:42   ` sashiko-bot
2026-05-20 23:58   ` Nicolas Dufresne
2026-05-20 23:58     ` Nicolas Dufresne
2026-05-21 14:55   ` Michael Tretter
2026-05-21 14:55     ` Michael Tretter
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 22:44   ` Sven Püschel
2026-05-20 23:29   ` sashiko-bot [this message]
2026-05-21 14:28   ` Michael Tretter
2026-05-21 14:28     ` Michael Tretter
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   ` Sven Püschel
2026-05-21 15:16   ` Michael Tretter
2026-05-21 15:16     ` Michael Tretter
2026-05-20 22:44 ` [PATCH v7 20/28] media: rockchip: rga: support external iommus Sven Püschel
2026-05-20 22:44   ` 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 22:44   ` Sven Püschel
2026-05-20 23:33   ` sashiko-bot
2026-05-20 22:44 ` [PATCH v7 22/28] media: rockchip: rga: remove size from rga_frame Sven Püschel
2026-05-20 22:44   ` 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   ` 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   ` Sven Püschel
2026-05-20 22:44 ` [PATCH v7 25/28] media: rockchip: rga: add feature flags Sven Püschel
2026-05-20 22:44   ` 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   ` Sven Püschel
2026-05-20 22:44 ` [PATCH v7 27/28] media: rockchip: rga: add rga3 support Sven Püschel
2026-05-20 22:44   ` 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
2026-05-20 22:44   ` Sven Püschel
2026-05-27 13:34 ` (subset) [PATCH v7 00/28] media: platform: rga: Add RGA3 support Heiko Stuebner
2026-05-27 13:34   ` Heiko Stuebner

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=20260520232920.EC4A21F000E9@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 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.