Re: [PATCH v2] accel: habanalabs: pm: use DEFINE_SIMPLE_DEV_OPS for pm struct

[email protected]
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Using `DEFINE_SIMPLE_DEV_PM_OPS` incorrectly maps the `.freeze` callback to the suspend function, causing the PCI device to be forced into D3hot during hibernation freeze.
--

--- Patch [1]: [PATCH v2] accel: habanalabs: pm: use DEFINE_SIMPLE_DEV_OPS for pm struct ---
commit 05b8c895a9d3a2cfea19ba9e2cdc13394fb870ce
Author: Li Jun <[email protected]>

accel: habanalabs: pm: use DEFINE_SIMPLE_DEV_OPS for pm struct

This commit uses DEFINE_SIMPLE_DEV_PM_OPS to define hl_pm_ops and safely
handle PM callbacks without triggering compiler warnings when PM sleep is
disabled. It also implicitly adds callbacks for freeze, thaw, poweroff,
and restore.

> diff --git a/drivers/accel/habanalabs/common/habanalabs_drv.c b/drivers/accel/habanalabs/common/habanalabs_drv.c
> index 220954d730136..7ec5aa7905f06 100644
> --- a/drivers/accel/habanalabs/common/habanalabs_drv.c
> +++ b/drivers/accel/habanalabs/common/habanalabs_drv.c
> @@ -1630,10 +1630,7 @@ static void hl_pci_reset_done(struct pci_dev *pdev)
>  	hl_device_reset(hdev, flags);
>  }
>  
> -static const struct dev_pm_ops hl_pm_ops = {
> -	.suspend = hl_pmops_suspend,
> -	.resume = hl_pmops_resume,
> -};
> +static DEFINE_SIMPLE_DEV_PM_OPS(hl_pm_ops, hl_pmops_suspend, hl_pmops_resume);

[Severity: High]
Does this map the .freeze callback to hl_pmops_suspend, which forces the
device into D3hot?

DEFINE_SIMPLE_DEV_PM_OPS implicitly sets the .freeze callback to
hl_pmops_suspend. When the user initiates hibernation, this callback is
invoked and eventually puts the device into D3hot:

drivers/accel/habanalabs/common/device.c:hl_device_suspend() {
    ...
    pci_set_power_state(hdev->pdev, PCI_D3hot);
    ...
}

Will putting the PCI device into D3hot during the .freeze phase make its
configuration and memory space inaccessible, breaking the system-wide
hibernation image creation process?

>  static const struct pci_error_handlers hl_pci_err_handler = {
>  	.error_detected = hl_pci_err_detected,

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.