RE: [PATCH] HID: intel-thc-hid: intel-quicki2c: fix autosuspend cleanup during teardown

"Xu, Even" <[email protected]> Mon, 10 Aug 2026 00:53:19 +0000
Newsgroups org.kernel.vger.linux-input,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <IA1PR11MB6098DEE7D7CBA03B4012D155F4DE2@IA1PR11MB6098.namprd11.prod.outlook.com>

> -----Original Message-----
> From: Guangshuo Li <[email protected]>
> Sent: Saturday, August 8, 2026 10:58 PM
> To: Xu, Even <[email protected]>; Sun, Xinpeng <[email protected]>; Jiri
> Kosina <[email protected]>; Benjamin Tissoires <[email protected]>; Sakari Ailus
> <[email protected]>; Guangshuo Li <[email protected]>;
> Mark Pearson <[email protected]>; Srinivas Pandruvada
> <[email protected]>; [email protected]; linux-
> [email protected]
> Cc: [email protected]
> Subject: [PATCH] HID: intel-thc-hid: intel-quicki2c: fix autosuspend cleanup during
> teardown
> 
> quicki2c_probe() calls pm_runtime_use_autosuspend(), but
> quicki2c_remove() does not call the matching
> pm_runtime_dont_use_autosuspend() during teardown.
> 
> If the autosuspend delay is set to a negative value while autosuspend is enabled,
> the runtime PM core increments usage_count to prevent runtime suspend.
> Without calling pm_runtime_dont_use_autosuspend() during teardown, this
> reference is not dropped.
> 
> The documentation for pm_runtime_use_autosuspend() also notes that it is
> important to undo it with pm_runtime_dont_use_autosuspend() at driver exit
> time, unless runtime PM was initially enabled with devm_pm_runtime_enable().
> 
> Add the missing pm_runtime_dont_use_autosuspend() call to the driver remove
> path.
> 
> This issue was found by manual code inspection.
> 
> Fixes: 5f420e8215c6 ("HID: intel-thc-hid: intel-quicki2c: Add PM
> implementation")
> Cc: [email protected]
> Signed-off-by: Guangshuo Li <[email protected]>
> ---
>  drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> b/drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> index 46d3e9a01999..4126c2408d98 100644
> --- a/drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> +++ b/drivers/hid/intel-thc-hid/intel-quicki2c/pci-quicki2c.c
> @@ -774,6 +774,7 @@ static void quicki2c_remove(struct pci_dev *pdev)
>  	quicki2c_hid_remove(qcdev);
>  	quicki2c_dma_deinit(qcdev);
> 
> +	pm_runtime_dont_use_autosuspend(qcdev->dev);

Thanks for the patch!
Reviewed-by: Even Xu <[email protected]>

>  	pm_runtime_get_noresume(qcdev->dev);
> 
>  	quicki2c_dev_deinit(qcdev);
> --
> 2.43.0