Re: [PATCH v2] ahci: st: Switch from CONFIG_PM_SLEEP guards to pm_sleep_ptr()

From: Damien Le Moal
Date: Fri Jan 10 2025 - 00:19:14 EST


On 1/10/25 02:54, Raphael Gallais-Pou wrote:
> Letting the compiler remove these functions when the kernel is built
> without CONFIG_PM_SLEEP support is simpler and less error prone than the
> use of #ifdef based kernel configuration guards.
>
> Signed-off-by: Raphael Gallais-Pou <rgallaispou@xxxxxxxxx>
> ---
> Changes in v2:
> - Split serie in single patches
> - Remove irrelevant 'Link:' from commit log
> - Link to v1: https://lore.kernel.org/r/20241229-update_pm_macro-v1-4-c7d4c4856336@xxxxxxxxx
> ---
> drivers/ata/ahci_st.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/ata/ahci_st.c b/drivers/ata/ahci_st.c
> index 6b9b4a1dfa15..4336c8a6e208 100644
> --- a/drivers/ata/ahci_st.c
> +++ b/drivers/ata/ahci_st.c
> @@ -176,7 +176,6 @@ static int st_ahci_probe(struct platform_device *pdev)
> return 0;
> }
>
> -#ifdef CONFIG_PM_SLEEP
> static int st_ahci_suspend(struct device *dev)
> {
> struct ata_host *host = dev_get_drvdata(dev);
> @@ -221,9 +220,8 @@ static int st_ahci_resume(struct device *dev)
>
> return ahci_platform_resume_host(dev);
> }
> -#endif

I do not think you can remove the ifdef here. Otherwise, there is going to be a
compilation warning when CONFIG_PM_SLEEP is not enabled. No ?

>
> -static SIMPLE_DEV_PM_OPS(st_ahci_pm_ops, st_ahci_suspend, st_ahci_resume);
> +static DEFINE_SIMPLE_DEV_PM_OPS(st_ahci_pm_ops, st_ahci_suspend, st_ahci_resume);
>
> static const struct of_device_id st_ahci_match[] = {
> { .compatible = "st,ahci", },
> @@ -234,7 +232,7 @@ MODULE_DEVICE_TABLE(of, st_ahci_match);
> static struct platform_driver st_ahci_driver = {
> .driver = {
> .name = DRV_NAME,
> - .pm = &st_ahci_pm_ops,
> + .pm = pm_sleep_ptr(&st_ahci_pm_ops),
> .of_match_table = st_ahci_match,
> },
> .probe = st_ahci_probe,


--
Damien Le Moal
Western Digital Research