On Fri, Jan 10, 2025 at 02:19:06PM +0900, Damien Le Moal wrote: > 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 ? Look at the pm_sleep_ptr macro: include/linux/pm.h:#define pm_sleep_ptr(_ptr) PTR_IF(IS_ENABLED(CONFIG_PM_SLEEP), (_ptr)) I would expect the function should be optimized out by the compiler using dead code elimination. Raphael, perhaps you could show the before and after output using ./scripts/bloat-o-meter ? (When the config is not enabled: before and after your patch.) > > > > > -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