All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Karunika Choo" <karunika.choo@arm.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v1 15/27] drm/panthor: Add AM_RESOURCE_GROUP support
Date: Tue, 22 Sep 2026 20:56:38 +0000	[thread overview]
Message-ID: <20260922205638.7B1DE1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260922204535.2850094-16-karunika.choo@arm.com>

Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
- [High] Runtime PM handling missing in shared IRQ handler
- [High] Missing synchronize_irq() during runtime suspend
- [High] CPU busy-loop in message retry workqueue
- [Medium] Missing NULL pointer checks for devm_kasprintf allocations
- [Low] Uninitialized irq field in panthor_resource_group
--

commit 97f87eba41075ad8e7f232b378d4561b841f68e5
Author: Karunika Choo <karunika.choo@arm.com>

drm/panthor: Add AM_RESOURCE_GROUP support

Add resource-group probing for the arbitration device, including MMIO
resources, IRQ handling, per-AW AM message helpers, handshake
negotiation, and retry work for deferred outgoing messages. Hook
resource groups into arbitration init, teardown, and runtime PM.

> diff --git a/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c b/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c
> new file mode 100644
> --- /dev/null
> +++ b/drivers/gpu/drm/panthor/arbitration/panthor_resource_group.c
> @@ -0,0 +1,323 @@
[ ... ]
> +static void rg_retry_messages(struct work_struct *work)
> +{
[ ... ]
> +	if (retry)
> +		queue_work(rg->wq, &rg->msg_retry_work);

[Severity: High]
Could this sequence lead to a CPU busy-loop? If the hardware has pending
messages and panthor_am_msg_retry() returns -EBUSY or -EAGAIN, this will
immediately requeue the work. Because it is an ordered workqueue and no
delay is specified, does this cause the worker thread to monopolize the
CPU at 100% until the hardware processes the messages?

[ ... ]
> +static irqreturn_t rg_irq_raw_handler(int irq, void *data)
> +{
> +	struct panthor_resource_group *rg = data;
> +	unsigned long message_mask;
> +	u32 status;
> +	u8 aw_id;
> +
> +	status = gpu_read(rg->iomem, AM_RG_IRQ_STATUS);
> +	if (!status)
> +		return IRQ_NONE;

[Severity: High]
Is it safe to perform this MMIO read without verifying device activity?
Since the IRQ is registered with IRQF_SHARED, this handler can be invoked
by other devices on the same line while this device is in runtime suspend.

If the device is powered down, the read will typically return ~0u, which
bypasses the !status check and could result in spurious processing of 16
pending messages. Should this use pm_runtime_get_if_active() to verify
the device is awake before accessing hardware?

[ ... ]
> +int panthor_resource_group_suspend(struct panthor_arbitration *adev)
> +{
> +	for (int i = 0; i < AM_ARB_MAX_RG_COUNT; i++) {
> +		struct panthor_resource_group *rg = adev->rg[i];
> +
> +		if (!rg)
> +			continue;
> +
> +		rg_irq_suspend(rg);
> +	}
> +
> +	return 0;
> +}

[Severity: High]
Does this suspend sequence need to wait for in-flight interrupts? The IRQ
is masked at the device level, but since it is registered as IRQF_SHARED,
rg_irq_raw_handler() might still be executing concurrently on another CPU.
Should there be a synchronize_irq() call here to prevent the device from
powering down while the handler is still running?

[ ... ]
> +static int resource_group_init(struct panthor_arbitration *adev,
> +			       const struct fwnode_handle *child)
> +{
[ ... ]
> +	rg = devm_kzalloc(dev, sizeof(*rg), GFP_KERNEL);
> +	if (!rg)
> +		return -ENOMEM;
> +
> +	name = devm_kasprintf(dev, GFP_KERNEL, "rg%d", res.id);

[Severity: Medium]
Could name be NULL here under memory pressure? devm_kasprintf() isn't
checked for allocation failure before being passed into functions expecting
valid strings, like devm_alloc_ordered_workqueue() below.

[ ... ]
> +	irq = fwnode_irq_get(child, 0);
> +	if (irq < 0)
> +		return dev_err_probe(dev, irq, "%s: Failed to get IRQ", name);
> +
> +	irqdata = irq_get_irq_data(irq);
> +	if (irqdata)
> +		irq_flags = irqd_get_trigger_type(irqdata);

[Severity: Low]
Should the retrieved IRQ number be stored in rg->irq here? The local irq
variable is populated and used for requesting the interrupt, but it doesn't
appear to be assigned to the structure field for future use.

> +
> +	ret = devm_request_irq(
> +		dev, irq, rg_irq_raw_handler, irq_flags | IRQF_SHARED,
> +		devm_kasprintf(dev, GFP_KERNEL, "panthor-%s-irq", name), rg);

[Severity: Medium]
Similar to the earlier devm_kasprintf() call, could this inner allocation
fail and pass a NULL device name to devm_request_irq()?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260922204535.2850094-1-karunika.choo@arm.com?part=15

  reply	other threads:[~2026-09-22 20:56 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-22 20:44 [PATCH v1 00/27] drm/panthor: Add Mali v15 virtualization support Karunika Choo
2026-09-22 20:44 ` [PATCH v1 01/27] drm/panthor: Ignore -EOPNOTSUPP for shader-present nvmem lookup Karunika Choo
2026-09-22 20:44 ` [PATCH v1 02/27] drm/panthor: Move register access helpers out of panthor_device.h Karunika Choo
2026-09-22 20:54   ` sashiko-bot
2026-09-22 20:44 ` [PATCH v1 03/27] drm/panthor: Parse and store GPU_ID fields Karunika Choo
2026-09-22 20:56   ` sashiko-bot
2026-09-22 20:44 ` [PATCH v1 04/27] drm/panthor: Add 64-bit GPU_ID decoding for v15 GPUs Karunika Choo
2026-09-22 21:01   ` sashiko-bot
2026-09-22 23:23   ` Deborah Brouwer
2026-09-22 20:44 ` [PATCH v1 05/27] drm/panthor: Move register base offsets to the HW description Karunika Choo
2026-09-22 20:45 ` [PATCH v1 06/27] drm/panthor: Derive MMU AS register addresses from base and stride Karunika Choo
2026-09-22 21:00   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 07/27] dt-bindings: gpu: mali-valhall-csf: Add Mali Gen5 AM compatible Karunika Choo
2026-09-28 10:02   ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 08/27] drm/panthor: Add Mali v15 hardware support Karunika Choo
2026-09-22 20:58   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 09/27] drm/panthor: Skip devfreq when no OPP table is present Karunika Choo
2026-09-22 20:45 ` [PATCH v1 10/27] dt-bindings: gpu: panthor: Document panthor-system bindings Karunika Choo
2026-09-22 20:56   ` sashiko-bot
2026-09-28 10:05   ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 11/27] drm/panthor: Add AM_SYSTEM platform driver Karunika Choo
2026-09-22 20:59   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 12/27] dt-bindings: gpu: panthor: Document panthor-arbitration bindings Karunika Choo
2026-09-22 20:59   ` sashiko-bot
2026-09-28 10:06   ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 13/27] drm/panthor: Add AM_PARTITION_CONTROL support Karunika Choo
2026-09-22 20:57   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 14/27] drm/panthor: Add AM message helpers Karunika Choo
2026-09-22 20:58   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 15/27] drm/panthor: Add AM_RESOURCE_GROUP support Karunika Choo
2026-09-22 20:56   ` sashiko-bot [this message]
2026-09-22 20:45 ` [PATCH v1 16/27] drm/panthor: Add arbitration scheduler Karunika Choo
2026-09-22 21:00   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 17/27] drm/panthor: Route arbitration events Karunika Choo
2026-09-22 21:04   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 18/27] dt-bindings: gpu: panthor: Document AW assignment DT property Karunika Choo
2026-09-22 20:57   ` sashiko-bot
2026-09-28 10:06   ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 19/27] drm/panthor: Add AW assignment tracking Karunika Choo
2026-09-22 20:45 ` [PATCH v1 20/27] drm/panthor: Handle partition control INVALID_COMMAND interrupt Karunika Choo
2026-09-22 21:04   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 21/27] drm/panthor: Request AW to yield GPU access on idle Karunika Choo
2026-09-22 21:07   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 22/27] drm/panthor: Add access-window support Karunika Choo
2026-09-22 21:05   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 23/27] drm/panthor: Synchronize HW component PM transitions Karunika Choo
2026-09-22 20:45 ` [PATCH v1 24/27] drm/panthor: Route HW component PM through access windows Karunika Choo
2026-09-22 21:06   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 25/27] drm/panthor: Tolerate access-window loss during HW waits Karunika Choo
2026-09-22 21:14   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 26/27] drm/panthor: Prevent missed post-yield cleanup due to reset Karunika Choo
2026-09-22 21:12   ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 27/27] drm/panthor: Release GPU access immediately for out-of-band grants Karunika Choo
2026-09-22 21:06   ` 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=20260922205638.7B1DE1F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=karunika.choo@arm.com \
    --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.