* [PATCH] accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling
@ 2026-10-07 10:24 Andrzej Kacprowski
2026-10-07 10:38 ` sashiko-bot
0 siblings, 1 reply; 3+ messages in thread
From: Andrzej Kacprowski @ 2026-10-07 10:24 UTC (permalink / raw)
To: dri-devel
Cc: oded.gabbay, jeff.hugo, karol.wachowski, lizhi.hou,
dawid.osuchowski, Andrzej Kacprowski
When driver is operating in IVPU_TEST_MODE_FW_TEST debug mode
it should boot the firmware, but skip communication with
the firmware. There is no need to enable interrupts or send messages.
The output of the firmware test will be available in the
firmware log.
Signed-off-by: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
---
drivers/accel/ivpu/ivpu_drv.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
index 8c1c87e69f91..186e6fe2a6fa 100644
--- a/drivers/accel/ivpu/ivpu_drv.c
+++ b/drivers/accel/ivpu/ivpu_drv.c
@@ -408,9 +408,6 @@ static int ivpu_wait_for_ready(struct ivpu_device *vdev)
unsigned long timeout;
int ret;
- if (ivpu_test_mode & IVPU_TEST_MODE_FW_TEST)
- return 0;
-
ivpu_ipc_consumer_add(vdev, &cons, IVPU_IPC_CHAN_BOOT_MSG, NULL);
timeout = jiffies + msecs_to_jiffies(vdev->timeout.boot);
@@ -474,6 +471,9 @@ int ivpu_boot(struct ivpu_device *vdev)
return ret;
}
+ if (ivpu_test_mode & IVPU_TEST_MODE_FW_TEST)
+ return 0;
+
ret = ivpu_wait_for_ready(vdev);
if (ret) {
ivpu_err(vdev, "Failed to boot the firmware: %d\n", ret);
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling
2026-10-07 10:24 [PATCH] accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling Andrzej Kacprowski
@ 2026-10-07 10:38 ` sashiko-bot
2026-10-07 16:17 ` Andrzej Kacprowski
0 siblings, 1 reply; 3+ messages in thread
From: sashiko-bot @ 2026-10-07 10:38 UTC (permalink / raw)
To: Andrzej Kacprowski; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] accel/ivpu: IRQ disable depth leak in FW_TEST mode due to unbalanced disable_irq()
--
commit 03c00af9f26af13756e29777951597b1aedc577d
Author: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling
When driver is operating in IVPU_TEST_MODE_FW_TEST debug mode
it should boot the firmware, but skip communication with
the firmware. There is no need to enable interrupts or send messages.
The output of the firmware test will be available in the
firmware log.
> diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
> index 647684219e9d3..d66abf645e7b9 100644
> --- a/drivers/accel/ivpu/ivpu_drv.c
> +++ b/drivers/accel/ivpu/ivpu_drv.c
[ ... ]
> @@ -487,6 +484,9 @@ int ivpu_boot(struct ivpu_device *vdev)
> return ret;
> }
>
> + if (ivpu_test_mode & IVPU_TEST_MODE_FW_TEST)
> + return 0;
> +
[Severity: High]
Does this early return cause an IRQ disable depth leak?
Since ivpu_boot() skips the call to enable_irq() when IVPU_TEST_MODE_FW_TEST
is enabled, it breaks the enable/disable symmetry.
Later, during teardown paths like ivpu_prepare_for_reset(), disable_irq()
is called unconditionally:
drivers/accel/ivpu/ivpu_drv.c:ivpu_prepare_for_reset() {
...
disable_irq(vdev->irq);
...
}
Calling disable_irq() without a matching enable_irq() increments the disable
depth on each suspend/resume cycle. If the user dynamically disables FW_TEST
mode via sysfs, subsequent enable_irq() calls will only decrement the
accumulated depth by 1, leaving the physical interrupt permanently disabled.
> ret = ivpu_wait_for_ready(vdev);
> if (ret) {
> ivpu_err(vdev, "Failed to boot the firmware: %d\n", ret);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261007102414.2661045-1-andrzej.kacprowski@linux.intel.com?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling
2026-10-07 10:38 ` sashiko-bot
@ 2026-10-07 16:17 ` Andrzej Kacprowski
0 siblings, 0 replies; 3+ messages in thread
From: Andrzej Kacprowski @ 2026-10-07 16:17 UTC (permalink / raw)
To: sashiko-reviews; +Cc: dri-devel
On 07-Oct-26 12:38 PM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] accel/ivpu: IRQ disable depth leak in FW_TEST mode due to unbalanced disable_irq()
> --
>
> commit 03c00af9f26af13756e29777951597b1aedc577d
> Author: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
>
> accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling
>
> When driver is operating in IVPU_TEST_MODE_FW_TEST debug mode
> it should boot the firmware, but skip communication with
> the firmware. There is no need to enable interrupts or send messages.
> The output of the firmware test will be available in the
> firmware log.
>
>> diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
>> index 647684219e9d3..d66abf645e7b9 100644
>> --- a/drivers/accel/ivpu/ivpu_drv.c
>> +++ b/drivers/accel/ivpu/ivpu_drv.c
>
> [ ... ]
>
>> @@ -487,6 +484,9 @@ int ivpu_boot(struct ivpu_device *vdev)
>> return ret;
>> }
>>
>> + if (ivpu_test_mode & IVPU_TEST_MODE_FW_TEST)
>> + return 0;
>> +
>
> [Severity: High]
> Does this early return cause an IRQ disable depth leak?
>
> Since ivpu_boot() skips the call to enable_irq() when IVPU_TEST_MODE_FW_TEST
> is enabled, it breaks the enable/disable symmetry.
>
> Later, during teardown paths like ivpu_prepare_for_reset(), disable_irq()
> is called unconditionally:
>
> drivers/accel/ivpu/ivpu_drv.c:ivpu_prepare_for_reset() {
> ...
> disable_irq(vdev->irq);
> ...
> }
>
> Calling disable_irq() without a matching enable_irq() increments the disable
> depth on each suspend/resume cycle. If the user dynamically disables FW_TEST
> mode via sysfs, subsequent enable_irq() calls will only decrement the
> accumulated depth by 1, leaving the physical interrupt permanently disabled.
>
>> ret = ivpu_wait_for_ready(vdev);
>> if (ret) {
>> ivpu_err(vdev, "Failed to boot the firmware: %d\n", ret);
>
Will be addressed in v2 patch.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-07 16:18 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-07 10:24 [PATCH] accel/ivpu: Improve IVPU_TEST_MODE_FW_TEST handling Andrzej Kacprowski
2026-10-07 10:38 ` sashiko-bot
2026-10-07 16:17 ` Andrzej Kacprowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox