* [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
@ 2026-08-07 14:54 Guangshuo Li
2026-08-07 15:20 ` sashiko-bot
2026-08-13 7:12 ` Wachowski, Karol
0 siblings, 2 replies; 5+ messages in thread
From: Guangshuo Li @ 2026-08-07 14:54 UTC (permalink / raw)
To: Karol Wachowski, Andrzej Kacprowski, Oded Gabbay, Jeff Hugo,
Jacek Lawrynowicz, Simona Vetter, Krystian Pradzynski, dri-devel,
linux-kernel
Cc: Guangshuo Li
ivpu_pm_init() calls pm_runtime_use_autosuspend(), but the autosuspend
setting is not disabled when the device is removed or when
initialization fails after runtime PM setup.
When the autosuspend delay is negative, the runtime PM core increments
usage_count to prevent runtime suspend. Without a matching
pm_runtime_dont_use_autosuspend(), this reference is not dropped and
usage_count remains unbalanced.
Call pm_runtime_dont_use_autosuspend() from ivpu_pm_disable() to clean
up the autosuspend state during normal device teardown. Also undo the
autosuspend setting when ivpu_boot() fails after ivpu_pm_init().
This issue was found by manual code inspection.
Fixes: 852be13f3bd3 ("accel/ivpu: Add PM support")
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
---
drivers/accel/ivpu/ivpu_drv.c | 4 +++-
drivers/accel/ivpu/ivpu_pm.c | 1 +
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
index 35e506074d5f..633c90e73f2c 100644
--- a/drivers/accel/ivpu/ivpu_drv.c
+++ b/drivers/accel/ivpu/ivpu_drv.c
@@ -756,13 +756,15 @@ static int ivpu_dev_init(struct ivpu_device *vdev)
ret = ivpu_boot(vdev);
if (ret)
- goto err_ipc_fini;
+ goto err_pm_fini;
ivpu_job_done_consumer_init(vdev);
ivpu_pm_enable(vdev);
return 0;
+err_pm_fini:
+ pm_runtime_dont_use_autosuspend(vdev->drm.dev);
err_ipc_fini:
ivpu_ipc_fini(vdev);
err_fw_fini:
diff --git a/drivers/accel/ivpu/ivpu_pm.c b/drivers/accel/ivpu/ivpu_pm.c
index c1ce8329790e..20dc8ec7d70a 100644
--- a/drivers/accel/ivpu/ivpu_pm.c
+++ b/drivers/accel/ivpu/ivpu_pm.c
@@ -445,6 +445,7 @@ void ivpu_pm_enable(struct ivpu_device *vdev)
void ivpu_pm_disable(struct ivpu_device *vdev)
{
+ pm_runtime_dont_use_autosuspend(vdev->drm.dev);
pm_runtime_get_noresume(vdev->drm.dev);
pm_runtime_forbid(vdev->drm.dev);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
2026-08-07 14:54 Guangshuo Li
@ 2026-08-07 15:20 ` sashiko-bot
2026-08-13 7:12 ` Wachowski, Karol
1 sibling, 0 replies; 5+ messages in thread
From: sashiko-bot @ 2026-08-07 15:20 UTC (permalink / raw)
To: Guangshuo Li; +Cc: dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Background work items scheduled by IRQ handlers are not flushed or canceled on the probe error path, leading to a Use-After-Free when devres frees the device.
--
--- Patch [1]: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative ---
commit db53366ef5dbe7e33ab10b0d9f2d73d71bbd452a
Author: Guangshuo Li <lgs201920130244@gmail.com>
accel/ivpu: fix usage_count leak when autosuspend_delay is negative
ivpu_pm_init() calls pm_runtime_use_autosuspend(), but the autosuspend
setting is not disabled when the device is removed or when initialization
fails. This patch adds pm_runtime_dont_use_autosuspend() to ivpu_pm_disable()
and the ivpu_dev_init() error path to prevent a usage_count leak.
> diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
> index 95120957f42a5..f8460aca189cd 100644
> --- a/drivers/accel/ivpu/ivpu_drv.c
> +++ b/drivers/accel/ivpu/ivpu_drv.c
[ ... ]
> @@ -776,13 +776,15 @@ static int ivpu_dev_init(struct ivpu_device *vdev)
>
> ret = ivpu_boot(vdev);
> if (ret)
> - goto err_ipc_fini;
> + goto err_pm_fini;
>
> ivpu_job_done_consumer_init(vdev);
> ivpu_pm_enable(vdev);
>
> return 0;
>
> +err_pm_fini:
> + pm_runtime_dont_use_autosuspend(vdev->drm.dev);
[Severity: High]
This is a pre-existing issue, but since we are modifying the error paths
here, I noticed that background work items scheduled by IRQ handlers might
not be flushed or canceled on the probe error path.
If a hardware interrupt occurs during ivpu_boot() after enable_irq() is called,
the handler may queue irq_dct_work or context_abort_work. If a subsequent
initialization step like ivpu_pm_dct_init() fails, the error path disables
interrupts but skips flushing the queued works:
ivpu_boot() {
...
enable_irq(vdev->irq);
...
ret = ivpu_pm_dct_init(vdev);
if (ret)
goto err_disable_ipc;
...
err_disable_ipc:
ivpu_ipc_disable(vdev);
ivpu_hw_irq_disable(vdev);
disable_irq(vdev->irq);
...
}
The error is then returned to ivpu_dev_init(), which jumps to err_pm_fini
where this new cleanup code is placed.
Could this lead to a memory corruption scenario? Without cancel_work_sync()
or flush_work() to halt pending tasks, devres might free the ivpu_device
structure when probe fails. Any pending work items might later execute and
dereference the freed pointer.
> err_ipc_fini:
> ivpu_ipc_fini(vdev);
> err_fw_fini:
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260807145416.2518999-1-lgs201920130244@gmail.com?part=1
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
2026-08-07 14:54 Guangshuo Li
2026-08-07 15:20 ` sashiko-bot
@ 2026-08-13 7:12 ` Wachowski, Karol
1 sibling, 0 replies; 5+ messages in thread
From: Wachowski, Karol @ 2026-08-13 7:12 UTC (permalink / raw)
To: Guangshuo Li, Andrzej Kacprowski, Oded Gabbay, Jeff Hugo,
Jacek Lawrynowicz, Simona Vetter, Krystian Pradzynski, dri-devel,
linux-kernel
On 07-Aug-26 16:54, Guangshuo Li wrote:
> ivpu_pm_init() calls pm_runtime_use_autosuspend(), but the autosuspend
> setting is not disabled when the device is removed or when
> initialization fails after runtime PM setup.
>
> When the autosuspend delay is negative, the runtime PM core increments
> usage_count to prevent runtime suspend. Without a matching
> pm_runtime_dont_use_autosuspend(), this reference is not dropped and
> usage_count remains unbalanced.
>
> Call pm_runtime_dont_use_autosuspend() from ivpu_pm_disable() to clean
> up the autosuspend state during normal device teardown. Also undo the
> autosuspend setting when ivpu_boot() fails after ivpu_pm_init().
>
> This issue was found by manual code inspection.
>
> Fixes: 852be13f3bd3 ("accel/ivpu: Add PM support")
> Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
Hello,
Thanks for the submission.
> ---
> drivers/accel/ivpu/ivpu_drv.c | 4 +++-
> drivers/accel/ivpu/ivpu_pm.c | 1 +
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
> index 35e506074d5f..633c90e73f2c 100644
> --- a/drivers/accel/ivpu/ivpu_drv.c
> +++ b/drivers/accel/ivpu/ivpu_drv.c
> @@ -756,13 +756,15 @@ static int ivpu_dev_init(struct ivpu_device *vdev)
>
> ret = ivpu_boot(vdev);
> if (ret)
> - goto err_ipc_fini;
> + goto err_pm_fini;
This leaves err_ipc_fini label unused, could you please remove that
label below and keep both pm_runtime_dont_use_autosuspend(vdev->drm.dev)
and ivpu_ipc_fini(vdev) under err_pm_fini.
Otherwise compiler will complain about unused label.
>
> ivpu_job_done_consumer_init(vdev);
> ivpu_pm_enable(vdev);
>
> return 0;
>
> +err_pm_fini:
> + pm_runtime_dont_use_autosuspend(vdev->drm.dev);
> err_ipc_fini:
Remove err_ipc_fini here.
Once that gets fixed:
Reviewed-by: Karol Wachowski <karol.wachowski@linux.intel.com>
> ivpu_ipc_fini(vdev);
> err_fw_fini:
> diff --git a/drivers/accel/ivpu/ivpu_pm.c b/drivers/accel/ivpu/ivpu_pm.c
> index c1ce8329790e..20dc8ec7d70a 100644
> --- a/drivers/accel/ivpu/ivpu_pm.c
> +++ b/drivers/accel/ivpu/ivpu_pm.c
> @@ -445,6 +445,7 @@ void ivpu_pm_enable(struct ivpu_device *vdev)
>
> void ivpu_pm_disable(struct ivpu_device *vdev)
> {
> + pm_runtime_dont_use_autosuspend(vdev->drm.dev);
> pm_runtime_get_noresume(vdev->drm.dev);
> pm_runtime_forbid(vdev->drm.dev);
> }
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
@ 2026-08-21 1:55 kernel test robot
0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-08-21 1:55 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "linux-review patch is more than 7 days old, verify it wasn't already superseded"
::::::
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260807145416.2518999-1-lgs201920130244@gmail.com>
References: <20260807145416.2518999-1-lgs201920130244@gmail.com>
TO: Guangshuo Li <lgs201920130244@gmail.com>
TO: Karol Wachowski <karol.wachowski@linux.intel.com>
TO: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
TO: Oded Gabbay <ogabbay@kernel.org>
TO: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
TO: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
TO: Simona Vetter <simona.vetter@ffwll.ch>
TO: Krystian Pradzynski <krystian.pradzynski@linux.intel.com>
TO: dri-devel@lists.freedesktop.org
TO: linux-kernel@vger.kernel.org
CC: Guangshuo Li <lgs201920130244@gmail.com>
Hi Guangshuo,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v7.2 next-20260819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Guangshuo-Li/accel-ivpu-fix-usage_count-leak-when-autosuspend_delay-is-negative/20260807-225416
base: https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next
patch link: https://lore.kernel.org/r/20260807145416.2518999-1-lgs201920130244%40gmail.com
patch subject: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
:::::: branch date: 29 hours ago
:::::: commit date: 29 hours ago
config: x86_64-randconfig-074-20260821 (https://download.01.org/0day-ci/archive/20260821/202608210900.FyVw967W-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260821/202608210900.FyVw967W-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202608210900.FyVw967W-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/accel/ivpu/ivpu_drv.c: In function 'ivpu_dev_init':
>> drivers/accel/ivpu/ivpu_drv.c:788:1: warning: label 'err_ipc_fini' defined but not used [-Wunused-label]
788 | err_ipc_fini:
| ^~~~~~~~~~~~
vim +/err_ipc_fini +788 drivers/accel/ivpu/ivpu_drv.c
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 678
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 679 static int ivpu_dev_init(struct ivpu_device *vdev)
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 680 {
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 681 int ret;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 682
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 683 vdev->hw = drmm_kzalloc(&vdev->drm, sizeof(*vdev->hw), GFP_KERNEL);
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 684 if (!vdev->hw)
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 685 return -ENOMEM;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 686
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 687 vdev->mmu = drmm_kzalloc(&vdev->drm, sizeof(*vdev->mmu), GFP_KERNEL);
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 688 if (!vdev->mmu)
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 689 return -ENOMEM;
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 690
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 691 vdev->fw = drmm_kzalloc(&vdev->drm, sizeof(*vdev->fw), GFP_KERNEL);
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 692 if (!vdev->fw)
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 693 return -ENOMEM;
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 694
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 695 vdev->ipc = drmm_kzalloc(&vdev->drm, sizeof(*vdev->ipc), GFP_KERNEL);
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 696 if (!vdev->ipc)
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 697 return -ENOMEM;
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 698
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 699 vdev->pm = drmm_kzalloc(&vdev->drm, sizeof(*vdev->pm), GFP_KERNEL);
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 700 if (!vdev->pm)
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 701 return -ENOMEM;
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 702
8a27ad81f7d3a4b Wachowski, Karol 2024-05-15 703 if (ivpu_hw_ip_gen(vdev) >= IVPU_HW_IP_40XX)
79cdc56c4a54252 Stanislaw Gruszka 2023-07-31 704 vdev->hw->dma_bits = 48;
8a27ad81f7d3a4b Wachowski, Karol 2024-05-15 705 else
a4172d6cf0a2b9f Karol Wachowski 2023-05-18 706 vdev->hw->dma_bits = 38;
a4172d6cf0a2b9f Karol Wachowski 2023-05-18 707
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 708 vdev->platform = IVPU_PLATFORM_INVALID;
3ff6edbc17dbab8 Stanislaw Gruszka 2023-03-23 709 vdev->context_xa_limit.min = IVPU_USER_CONTEXT_MIN_SSID;
3ff6edbc17dbab8 Stanislaw Gruszka 2023-03-23 710 vdev->context_xa_limit.max = IVPU_USER_CONTEXT_MAX_SSID;
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 711 atomic64_set(&vdev->unique_id_counter, 0);
0e7db503c5355ff Karol Wachowski 2025-04-16 712 atomic_set(&vdev->job_timeout_counter, 0);
ade00a6c903f850 Karol Wachowski 2026-03-18 713 atomic_set(&vdev->faults_detected, 0);
fd7726e75968b27 Jacek Lawrynowicz 2024-04-02 714 xa_init_flags(&vdev->context_xa, XA_FLAGS_ALLOC | XA_FLAGS_LOCK_IRQ);
cd7272215c44676 Jacek Lawrynowicz 2023-01-17 715 xa_init_flags(&vdev->submitted_jobs_xa, XA_FLAGS_ALLOC1);
f32d59677ab1427 Wachowski, Karol 2024-02-14 716 xa_init_flags(&vdev->db_xa, XA_FLAGS_ALLOC1);
48aea7f2a2efae6 Jacek Lawrynowicz 2023-10-31 717 INIT_LIST_HEAD(&vdev->bo_list);
86a14330bf0598c Karol Wachowski 2026-03-02 718 hash_init(vdev->user_limits);
48aea7f2a2efae6 Jacek Lawrynowicz 2023-10-31 719
ae7af7d8dc2a13a Karol Wachowski 2024-10-17 720 vdev->db_limit.min = IVPU_MIN_DB;
ae7af7d8dc2a13a Karol Wachowski 2024-10-17 721 vdev->db_limit.max = IVPU_MAX_DB;
c3b0ec0fe0c7ebc Tomasz Rusinowicz 2024-09-30 722
f1cc6aceecd0496 Jacek Lawrynowicz 2024-01-22 723 ret = drmm_mutex_init(&vdev->drm, &vdev->context_list_lock);
f1cc6aceecd0496 Jacek Lawrynowicz 2024-01-22 724 if (ret)
f1cc6aceecd0496 Jacek Lawrynowicz 2024-01-22 725 goto err_xa_destroy;
5bbccadaf33eea2 Karol Wachowski 2025-01-07 726
86a14330bf0598c Karol Wachowski 2026-03-02 727 ret = drmm_mutex_init(&vdev->drm, &vdev->user_limits_lock);
86a14330bf0598c Karol Wachowski 2026-03-02 728 if (ret)
86a14330bf0598c Karol Wachowski 2026-03-02 729 goto err_xa_destroy;
86a14330bf0598c Karol Wachowski 2026-03-02 730
5bbccadaf33eea2 Karol Wachowski 2025-01-07 731 ret = drmm_mutex_init(&vdev->drm, &vdev->submitted_jobs_lock);
5bbccadaf33eea2 Karol Wachowski 2025-01-07 732 if (ret)
5bbccadaf33eea2 Karol Wachowski 2025-01-07 733 goto err_xa_destroy;
f1cc6aceecd0496 Jacek Lawrynowicz 2024-01-22 734
48aea7f2a2efae6 Jacek Lawrynowicz 2023-10-31 735 ret = drmm_mutex_init(&vdev->drm, &vdev->bo_list_lock);
48aea7f2a2efae6 Jacek Lawrynowicz 2023-10-31 736 if (ret)
48aea7f2a2efae6 Jacek Lawrynowicz 2023-10-31 737 goto err_xa_destroy;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 738
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 739 ret = ivpu_pci_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 740 if (ret)
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 741 goto err_xa_destroy;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 742
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 743 ret = ivpu_irq_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 744 if (ret)
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 745 goto err_xa_destroy;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 746
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 747 /* Init basic HW info based on buttress registers which are accessible before power up */
8a27ad81f7d3a4b Wachowski, Karol 2024-05-15 748 ret = ivpu_hw_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 749 if (ret)
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 750 goto err_xa_destroy;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 751
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 752 /* Power up early so the rest of init code can access VPU registers */
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 753 ret = ivpu_hw_power_up(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 754 if (ret)
e3caadf1f9dfc9d Jacek Lawrynowicz 2024-04-02 755 goto err_shutdown;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 756
a74f4d991352c95 Karol Wachowski 2024-10-17 757 ivpu_mmu_global_context_init(vdev);
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 758
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 759 ret = ivpu_mmu_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 760 if (ret)
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 761 goto err_mmu_gctx_fini;
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 762
34d03f2a174dce5 Karol Wachowski 2023-09-01 763 ret = ivpu_mmu_reserved_context_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 764 if (ret)
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 765 goto err_mmu_gctx_fini;
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 766
34d03f2a174dce5 Karol Wachowski 2023-09-01 767 ret = ivpu_fw_init(vdev);
34d03f2a174dce5 Karol Wachowski 2023-09-01 768 if (ret)
34d03f2a174dce5 Karol Wachowski 2023-09-01 769 goto err_mmu_rctx_fini;
34d03f2a174dce5 Karol Wachowski 2023-09-01 770
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 771 ret = ivpu_ipc_init(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 772 if (ret)
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 773 goto err_fw_fini;
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 774
3f68b03ae6dcd18 Stanislaw Gruszka 2023-09-01 775 ivpu_pm_init(vdev);
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 776
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 777 ret = ivpu_boot(vdev);
0a9cd7924e56de9 Jacek Lawrynowicz 2023-09-01 778 if (ret)
dc6256eb3d23e33 Guangshuo Li 2026-08-07 779 goto err_pm_fini;
5d7422cfb498bf2 Jacek Lawrynowicz 2023-01-17 780
3b434a3445fff31 Jacek Lawrynowicz 2023-11-13 781 ivpu_job_done_consumer_init(vdev);
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 782 ivpu_pm_enable(vdev);
852be13f3bd32c1 Jacek Lawrynowicz 2023-01-17 783
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 784 return 0;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 785
dc6256eb3d23e33 Guangshuo Li 2026-08-07 786 err_pm_fini:
dc6256eb3d23e33 Guangshuo Li 2026-08-07 787 pm_runtime_dont_use_autosuspend(vdev->drm.dev);
cd7272215c44676 Jacek Lawrynowicz 2023-01-17 @788 err_ipc_fini:
cd7272215c44676 Jacek Lawrynowicz 2023-01-17 789 ivpu_ipc_fini(vdev);
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 790 err_fw_fini:
02d5b0aacd0590d Jacek Lawrynowicz 2023-01-17 791 ivpu_fw_fini(vdev);
34d03f2a174dce5 Karol Wachowski 2023-09-01 792 err_mmu_rctx_fini:
34d03f2a174dce5 Karol Wachowski 2023-09-01 793 ivpu_mmu_reserved_context_fini(vdev);
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 794 err_mmu_gctx_fini:
263b2ba5fc93c87 Jacek Lawrynowicz 2023-01-17 795 ivpu_mmu_global_context_fini(vdev);
e3caadf1f9dfc9d Jacek Lawrynowicz 2024-04-02 796 err_shutdown:
e3caadf1f9dfc9d Jacek Lawrynowicz 2024-04-02 797 ivpu_shutdown(vdev);
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 798 err_xa_destroy:
f32d59677ab1427 Wachowski, Karol 2024-02-14 799 xa_destroy(&vdev->db_xa);
cd7272215c44676 Jacek Lawrynowicz 2023-01-17 800 xa_destroy(&vdev->submitted_jobs_xa);
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 801 xa_destroy(&vdev->context_xa);
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 802 return ret;
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 803 }
35b137630f08d91 Jacek Lawrynowicz 2023-01-17 804
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
@ 2026-08-21 3:00 kernel test robot
0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2026-08-21 3:00 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp
::::::
:::::: Manual check reason: "linux-review patch is more than 7 days old, verify it wasn't already superseded"
::::::
BCC: lkp@intel.com
CC: llvm@lists.linux.dev
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260807145416.2518999-1-lgs201920130244@gmail.com>
References: <20260807145416.2518999-1-lgs201920130244@gmail.com>
TO: Guangshuo Li <lgs201920130244@gmail.com>
TO: Karol Wachowski <karol.wachowski@linux.intel.com>
TO: Andrzej Kacprowski <andrzej.kacprowski@linux.intel.com>
TO: Oded Gabbay <ogabbay@kernel.org>
TO: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
TO: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
TO: Simona Vetter <simona.vetter@ffwll.ch>
TO: Krystian Pradzynski <krystian.pradzynski@linux.intel.com>
TO: dri-devel@lists.freedesktop.org
TO: linux-kernel@vger.kernel.org
CC: Guangshuo Li <lgs201920130244@gmail.com>
Hi Guangshuo,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v7.2 next-20260819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Guangshuo-Li/accel-ivpu-fix-usage_count-leak-when-autosuspend_delay-is-negative/20260807-225416
base: https://gitlab.freedesktop.org/drm/misc/kernel.git drm-misc-next
patch link: https://lore.kernel.org/r/20260807145416.2518999-1-lgs201920130244%40gmail.com
patch subject: [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative
:::::: branch date: 30 hours ago
:::::: commit date: 30 hours ago
config: x86_64-randconfig-075-20260821 (https://download.01.org/0day-ci/archive/20260821/202608211038.oCWZXWtK-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260821/202608211038.oCWZXWtK-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202608211038.oCWZXWtK-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/accel/ivpu/ivpu_drv.c:788:1: warning: unused label 'err_ipc_fini' [-Wunused-label]
788 | err_ipc_fini:
| ^~~~~~~~~~~~~
1 warning generated.
vim +/err_ipc_fini +788 drivers/accel/ivpu/ivpu_drv.c
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 678
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 679 static int ivpu_dev_init(struct ivpu_device *vdev)
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 680 {
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 681 int ret;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 682
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 683 vdev->hw = drmm_kzalloc(&vdev->drm, sizeof(*vdev->hw), GFP_KERNEL);
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 684 if (!vdev->hw)
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 685 return -ENOMEM;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 686
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 687 vdev->mmu = drmm_kzalloc(&vdev->drm, sizeof(*vdev->mmu), GFP_KERNEL);
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 688 if (!vdev->mmu)
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 689 return -ENOMEM;
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 690
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 691 vdev->fw = drmm_kzalloc(&vdev->drm, sizeof(*vdev->fw), GFP_KERNEL);
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 692 if (!vdev->fw)
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 693 return -ENOMEM;
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 694
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 695 vdev->ipc = drmm_kzalloc(&vdev->drm, sizeof(*vdev->ipc), GFP_KERNEL);
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 696 if (!vdev->ipc)
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 697 return -ENOMEM;
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 698
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 699 vdev->pm = drmm_kzalloc(&vdev->drm, sizeof(*vdev->pm), GFP_KERNEL);
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 700 if (!vdev->pm)
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 701 return -ENOMEM;
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 702
8a27ad81f7d3a4 Wachowski, Karol 2024-05-15 703 if (ivpu_hw_ip_gen(vdev) >= IVPU_HW_IP_40XX)
79cdc56c4a5425 Stanislaw Gruszka 2023-07-31 704 vdev->hw->dma_bits = 48;
8a27ad81f7d3a4 Wachowski, Karol 2024-05-15 705 else
a4172d6cf0a2b9 Karol Wachowski 2023-05-18 706 vdev->hw->dma_bits = 38;
a4172d6cf0a2b9 Karol Wachowski 2023-05-18 707
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 708 vdev->platform = IVPU_PLATFORM_INVALID;
3ff6edbc17dbab Stanislaw Gruszka 2023-03-23 709 vdev->context_xa_limit.min = IVPU_USER_CONTEXT_MIN_SSID;
3ff6edbc17dbab Stanislaw Gruszka 2023-03-23 710 vdev->context_xa_limit.max = IVPU_USER_CONTEXT_MAX_SSID;
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 711 atomic64_set(&vdev->unique_id_counter, 0);
0e7db503c5355f Karol Wachowski 2025-04-16 712 atomic_set(&vdev->job_timeout_counter, 0);
ade00a6c903f85 Karol Wachowski 2026-03-18 713 atomic_set(&vdev->faults_detected, 0);
fd7726e75968b2 Jacek Lawrynowicz 2024-04-02 714 xa_init_flags(&vdev->context_xa, XA_FLAGS_ALLOC | XA_FLAGS_LOCK_IRQ);
cd7272215c4467 Jacek Lawrynowicz 2023-01-17 715 xa_init_flags(&vdev->submitted_jobs_xa, XA_FLAGS_ALLOC1);
f32d59677ab142 Wachowski, Karol 2024-02-14 716 xa_init_flags(&vdev->db_xa, XA_FLAGS_ALLOC1);
48aea7f2a2efae Jacek Lawrynowicz 2023-10-31 717 INIT_LIST_HEAD(&vdev->bo_list);
86a14330bf0598 Karol Wachowski 2026-03-02 718 hash_init(vdev->user_limits);
48aea7f2a2efae Jacek Lawrynowicz 2023-10-31 719
ae7af7d8dc2a13 Karol Wachowski 2024-10-17 720 vdev->db_limit.min = IVPU_MIN_DB;
ae7af7d8dc2a13 Karol Wachowski 2024-10-17 721 vdev->db_limit.max = IVPU_MAX_DB;
c3b0ec0fe0c7eb Tomasz Rusinowicz 2024-09-30 722
f1cc6aceecd049 Jacek Lawrynowicz 2024-01-22 723 ret = drmm_mutex_init(&vdev->drm, &vdev->context_list_lock);
f1cc6aceecd049 Jacek Lawrynowicz 2024-01-22 724 if (ret)
f1cc6aceecd049 Jacek Lawrynowicz 2024-01-22 725 goto err_xa_destroy;
5bbccadaf33eea Karol Wachowski 2025-01-07 726
86a14330bf0598 Karol Wachowski 2026-03-02 727 ret = drmm_mutex_init(&vdev->drm, &vdev->user_limits_lock);
86a14330bf0598 Karol Wachowski 2026-03-02 728 if (ret)
86a14330bf0598 Karol Wachowski 2026-03-02 729 goto err_xa_destroy;
86a14330bf0598 Karol Wachowski 2026-03-02 730
5bbccadaf33eea Karol Wachowski 2025-01-07 731 ret = drmm_mutex_init(&vdev->drm, &vdev->submitted_jobs_lock);
5bbccadaf33eea Karol Wachowski 2025-01-07 732 if (ret)
5bbccadaf33eea Karol Wachowski 2025-01-07 733 goto err_xa_destroy;
f1cc6aceecd049 Jacek Lawrynowicz 2024-01-22 734
48aea7f2a2efae Jacek Lawrynowicz 2023-10-31 735 ret = drmm_mutex_init(&vdev->drm, &vdev->bo_list_lock);
48aea7f2a2efae Jacek Lawrynowicz 2023-10-31 736 if (ret)
48aea7f2a2efae Jacek Lawrynowicz 2023-10-31 737 goto err_xa_destroy;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 738
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 739 ret = ivpu_pci_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 740 if (ret)
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 741 goto err_xa_destroy;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 742
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 743 ret = ivpu_irq_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 744 if (ret)
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 745 goto err_xa_destroy;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 746
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 747 /* Init basic HW info based on buttress registers which are accessible before power up */
8a27ad81f7d3a4 Wachowski, Karol 2024-05-15 748 ret = ivpu_hw_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 749 if (ret)
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 750 goto err_xa_destroy;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 751
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 752 /* Power up early so the rest of init code can access VPU registers */
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 753 ret = ivpu_hw_power_up(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 754 if (ret)
e3caadf1f9dfc9 Jacek Lawrynowicz 2024-04-02 755 goto err_shutdown;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 756
a74f4d991352c9 Karol Wachowski 2024-10-17 757 ivpu_mmu_global_context_init(vdev);
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 758
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 759 ret = ivpu_mmu_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 760 if (ret)
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 761 goto err_mmu_gctx_fini;
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 762
34d03f2a174dce Karol Wachowski 2023-09-01 763 ret = ivpu_mmu_reserved_context_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 764 if (ret)
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 765 goto err_mmu_gctx_fini;
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 766
34d03f2a174dce Karol Wachowski 2023-09-01 767 ret = ivpu_fw_init(vdev);
34d03f2a174dce Karol Wachowski 2023-09-01 768 if (ret)
34d03f2a174dce Karol Wachowski 2023-09-01 769 goto err_mmu_rctx_fini;
34d03f2a174dce Karol Wachowski 2023-09-01 770
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 771 ret = ivpu_ipc_init(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 772 if (ret)
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 773 goto err_fw_fini;
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 774
3f68b03ae6dcd1 Stanislaw Gruszka 2023-09-01 775 ivpu_pm_init(vdev);
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 776
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 777 ret = ivpu_boot(vdev);
0a9cd7924e56de Jacek Lawrynowicz 2023-09-01 778 if (ret)
dc6256eb3d23e3 Guangshuo Li 2026-08-07 779 goto err_pm_fini;
5d7422cfb498bf Jacek Lawrynowicz 2023-01-17 780
3b434a3445fff3 Jacek Lawrynowicz 2023-11-13 781 ivpu_job_done_consumer_init(vdev);
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 782 ivpu_pm_enable(vdev);
852be13f3bd32c Jacek Lawrynowicz 2023-01-17 783
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 784 return 0;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 785
dc6256eb3d23e3 Guangshuo Li 2026-08-07 786 err_pm_fini:
dc6256eb3d23e3 Guangshuo Li 2026-08-07 787 pm_runtime_dont_use_autosuspend(vdev->drm.dev);
cd7272215c4467 Jacek Lawrynowicz 2023-01-17 @788 err_ipc_fini:
cd7272215c4467 Jacek Lawrynowicz 2023-01-17 789 ivpu_ipc_fini(vdev);
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 790 err_fw_fini:
02d5b0aacd0590 Jacek Lawrynowicz 2023-01-17 791 ivpu_fw_fini(vdev);
34d03f2a174dce Karol Wachowski 2023-09-01 792 err_mmu_rctx_fini:
34d03f2a174dce Karol Wachowski 2023-09-01 793 ivpu_mmu_reserved_context_fini(vdev);
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 794 err_mmu_gctx_fini:
263b2ba5fc93c8 Jacek Lawrynowicz 2023-01-17 795 ivpu_mmu_global_context_fini(vdev);
e3caadf1f9dfc9 Jacek Lawrynowicz 2024-04-02 796 err_shutdown:
e3caadf1f9dfc9 Jacek Lawrynowicz 2024-04-02 797 ivpu_shutdown(vdev);
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 798 err_xa_destroy:
f32d59677ab142 Wachowski, Karol 2024-02-14 799 xa_destroy(&vdev->db_xa);
cd7272215c4467 Jacek Lawrynowicz 2023-01-17 800 xa_destroy(&vdev->submitted_jobs_xa);
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 801 xa_destroy(&vdev->context_xa);
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 802 return ret;
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 803 }
35b137630f08d9 Jacek Lawrynowicz 2023-01-17 804
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-08-21 3:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-21 3:00 [PATCH] accel/ivpu: fix usage_count leak when autosuspend_delay is negative kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2026-08-21 1:55 kernel test robot
2026-08-07 14:54 Guangshuo Li
2026-08-07 15:20 ` sashiko-bot
2026-08-13 7:12 ` Wachowski, Karol
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.