All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.